ocr-stream 2.4__tar.gz → 2.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ocr_stream-2.4 → ocr_stream-2.4.2}/PKG-INFO +2 -2
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream/__init__.py +30 -81
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream/ocr/__init__.py +34 -15
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream/recognize.py +26 -28
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream.egg-info/PKG-INFO +2 -2
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream.egg-info/requires.txt +1 -1
- {ocr_stream-2.4 → ocr_stream-2.4.2}/pyproject.toml +2 -2
- {ocr_stream-2.4 → ocr_stream-2.4.2}/README.md +0 -0
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream/bin_tess/__init__.py +0 -0
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream/modules/__init__.py +0 -0
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream.egg-info/SOURCES.txt +0 -0
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream.egg-info/dependency_links.txt +0 -0
- {ocr_stream-2.4 → ocr_stream-2.4.2}/ocr_stream.egg-info/top_level.txt +0 -0
- {ocr_stream-2.4 → ocr_stream-2.4.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ocr_stream
|
|
3
|
-
Version: 2.4
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: Extrair textos de documentos digitalizados e imagens.
|
|
5
5
|
Author: Bruno Chaves
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -12,7 +12,7 @@ Requires-Dist: pandas
|
|
|
12
12
|
Requires-Dist: requests>=2.32.4
|
|
13
13
|
Requires-Dist: opencv-python
|
|
14
14
|
Requires-Dist: pytesseract
|
|
15
|
-
Requires-Dist: convert_stream>=2.4
|
|
15
|
+
Requires-Dist: convert_stream>=2.4.3
|
|
16
16
|
Requires-Dist: soup_files>=1.4
|
|
17
17
|
|
|
18
18
|
# ocrlib
|
|
@@ -1,53 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
from io import BytesIO
|
|
4
|
-
import threading
|
|
5
4
|
from ocr_stream.modules import *
|
|
6
5
|
from ocr_stream.bin_tess import BinTesseract, get_path_tesseract_sys
|
|
7
6
|
from ocr_stream.ocr import TesseractOcr, TextRecognized
|
|
8
7
|
from ocr_stream.recognize import RecognizeImage, RecognizePdf
|
|
9
|
-
from convert_stream import DocumentPdf
|
|
10
|
-
from convert_stream.image import ImageObject
|
|
11
|
-
from
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
from convert_stream.text import FindText
|
|
16
|
-
from convert_stream.pdf import ConvertPdfToImages, CollectionPagePdf
|
|
8
|
+
from convert_stream import DocumentPdf
|
|
9
|
+
from convert_stream.image import ImageObject
|
|
10
|
+
from sheet_stream.type_utils import HeadValues, HeadCell
|
|
11
|
+
from sheet_stream import TableRow, TableDocuments, TableTextKeyWord, VoidAdapter, ColumnsTable
|
|
12
|
+
from convert_stream.mod_types import DictTextTable
|
|
13
|
+
from convert_stream.text import FindText, FindStrings
|
|
17
14
|
import pandas as pd
|
|
18
15
|
from soup_files import (
|
|
19
|
-
JsonConvert, ProgressBarAdapter, ABCProgressBar, CreatePbar,
|
|
20
|
-
|
|
16
|
+
JsonConvert, ProgressBarAdapter, ABCProgressBar, CreatePbar,
|
|
17
|
+
Directory, File, InputFiles, LibraryDocs
|
|
21
18
|
)
|
|
22
19
|
|
|
23
20
|
|
|
24
|
-
class VoidPbar(ABCProgressBar):
|
|
25
|
-
|
|
26
|
-
def __init__(self):
|
|
27
|
-
super().__init__()
|
|
28
|
-
|
|
29
|
-
def set_percent(self, percent: float):
|
|
30
|
-
pass
|
|
31
|
-
|
|
32
|
-
def set_text(self, text: str):
|
|
33
|
-
pass
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class ProgressVoid(ProgressBarAdapter):
|
|
37
|
-
|
|
38
|
-
def __init__(self, progress_bar: ABCProgressBar = VoidPbar()):
|
|
39
|
-
super().__init__(progress_bar)
|
|
40
|
-
|
|
41
|
-
def update(self, percent: float, status: str = "-"):
|
|
42
|
-
pass
|
|
43
|
-
|
|
44
|
-
def update_percent(self, percent: float = 0):
|
|
45
|
-
pass
|
|
46
|
-
|
|
47
|
-
def update_text(self, text: str = "-"):
|
|
48
|
-
pass
|
|
49
|
-
|
|
50
|
-
|
|
51
21
|
def read_image(img: ImageObject, rec: RecognizeImage = RecognizeImage()) -> TextRecognized:
|
|
52
22
|
_txt = rec.image_recognize(img)
|
|
53
23
|
_txt.metadata = img.metadata
|
|
@@ -67,43 +37,22 @@ def read_images(
|
|
|
67
37
|
for idx, image in enumerate(images):
|
|
68
38
|
pbar.update(
|
|
69
39
|
((idx + 1) / max_num) * 100,
|
|
70
|
-
f'[OCR] {idx + 1} / {max_num}',
|
|
40
|
+
f'[OCR Imagem] {idx + 1} / {max_num}',
|
|
71
41
|
)
|
|
72
42
|
out = read_image(image, rec=rec).to_page_pdf()
|
|
73
43
|
pages.append(out)
|
|
74
44
|
tmp_doc = DocumentPdf.create_from_pages(pages)
|
|
75
|
-
print()
|
|
76
45
|
pbar.stop()
|
|
77
46
|
return tmp_doc
|
|
78
47
|
|
|
79
48
|
|
|
80
49
|
def read_document(
|
|
81
50
|
document: DocumentPdf, *,
|
|
82
|
-
dpi: int =
|
|
83
|
-
|
|
51
|
+
dpi: int = 200,
|
|
52
|
+
rec: RecognizePdf = RecognizePdf(),
|
|
84
53
|
) -> DocumentPdf:
|
|
85
|
-
pbar.start()
|
|
86
|
-
|
|
87
|
-
_metadata = document.metadata
|
|
88
|
-
recognized_items: list[TextRecognized] = []
|
|
89
|
-
pages_pdf: list[PageDocumentPdf] = document.to_pages()
|
|
90
|
-
total = len(pages_pdf)
|
|
91
|
-
void_pbar = ProgressVoid()
|
|
92
|
-
for num, page in enumerate(pages_pdf):
|
|
93
|
-
pbar.update(
|
|
94
|
-
((num + 1) / total) * 100,
|
|
95
|
-
f'[OCR PDF] {num + 1}/{total} {page.metadata.name}',
|
|
96
|
-
)
|
|
97
|
-
convert: ConvertPdfToImages = ConvertPdfToImages(DocumentPdf.create_from_pages([page]))
|
|
98
|
-
convert.set_pbar(void_pbar)
|
|
99
|
-
images: list[ImageObject] = convert.to_images(dpi=dpi)
|
|
100
|
-
for im in images:
|
|
101
|
-
recognized_items.append(read_image(im))
|
|
102
|
-
print()
|
|
103
|
-
final_pages: list[PageDocumentPdf] = [x.to_page_pdf() for x in recognized_items]
|
|
104
|
-
final_doc: DocumentPdf = DocumentPdf.create_from_pages(final_pages)
|
|
105
|
-
final_doc.metadata = _metadata
|
|
106
|
-
return final_doc
|
|
54
|
+
rec.pbar.start()
|
|
55
|
+
return rec.recognize_document(document, dpi=dpi)
|
|
107
56
|
|
|
108
57
|
|
|
109
58
|
class SearchableTextImage(object):
|
|
@@ -286,14 +235,14 @@ class ImageFinder(object):
|
|
|
286
235
|
print(f'{__class__.__name__} {err}')
|
|
287
236
|
else:
|
|
288
237
|
new_line: dict[str, str] = {
|
|
289
|
-
ColumnsTable.KEY
|
|
290
|
-
ColumnsTable.NUM_PAGE
|
|
291
|
-
ColumnsTable.NUM_LINE
|
|
292
|
-
ColumnsTable.TEXT
|
|
293
|
-
ColumnsTable.FILE_NAME
|
|
294
|
-
ColumnsTable.FILETYPE
|
|
295
|
-
ColumnsTable.FILE_PATH
|
|
296
|
-
ColumnsTable.DIR
|
|
238
|
+
ColumnsTable.KEY: f'{idx}',
|
|
239
|
+
ColumnsTable.NUM_PAGE: 'nan',
|
|
240
|
+
ColumnsTable.NUM_LINE: f'{idx + 1}',
|
|
241
|
+
ColumnsTable.TEXT: math_text,
|
|
242
|
+
ColumnsTable.FILE_NAME: current_img.metadata.file_path,
|
|
243
|
+
ColumnsTable.FILETYPE: current_img.metadata.extension,
|
|
244
|
+
ColumnsTable.FILE_PATH: current_img.metadata.dir_path,
|
|
245
|
+
ColumnsTable.DIR: current_img.metadata.dir_path,
|
|
297
246
|
}
|
|
298
247
|
_searchable.add_line(new_line)
|
|
299
248
|
return _searchable
|
|
@@ -337,14 +286,14 @@ class ImageFinder(object):
|
|
|
337
286
|
print(f'{__class__.__name__} {err}')
|
|
338
287
|
else:
|
|
339
288
|
new_line: dict[str, str] = {
|
|
340
|
-
ColumnsTable.KEY
|
|
341
|
-
ColumnsTable.NUM_PAGE
|
|
342
|
-
ColumnsTable.NUM_LINE
|
|
343
|
-
ColumnsTable.TEXT
|
|
344
|
-
ColumnsTable.FILE_NAME
|
|
345
|
-
ColumnsTable.FILETYPE
|
|
346
|
-
ColumnsTable.FILE_PATH
|
|
347
|
-
ColumnsTable.DIR
|
|
289
|
+
ColumnsTable.KEY: f'{idx}',
|
|
290
|
+
ColumnsTable.NUM_PAGE: 'nan',
|
|
291
|
+
ColumnsTable.NUM_LINE: f'{idx + 1}',
|
|
292
|
+
ColumnsTable.TEXT: math_text,
|
|
293
|
+
ColumnsTable.FILE_NAME: current_img.metadata.file_path,
|
|
294
|
+
ColumnsTable.FILETYPE: current_img.metadata.extension,
|
|
295
|
+
ColumnsTable.FILE_PATH: current_img.metadata.dir_path,
|
|
296
|
+
ColumnsTable.DIR: current_img.metadata.dir_path,
|
|
348
297
|
}
|
|
349
298
|
_searchable.add_line(new_line)
|
|
350
299
|
return _searchable
|
|
@@ -352,5 +301,5 @@ class ImageFinder(object):
|
|
|
352
301
|
|
|
353
302
|
__all__ = [
|
|
354
303
|
'ImageFinder', 'SearchableTextImage', 'read_images',
|
|
355
|
-
'read_document', 'RecognizeImage', 'RecognizePdf'
|
|
304
|
+
'read_document', 'RecognizeImage', 'RecognizePdf', 'LibOcr',
|
|
356
305
|
]
|
|
@@ -4,19 +4,24 @@ from __future__ import annotations
|
|
|
4
4
|
import os.path
|
|
5
5
|
from abc import abstractmethod, ABC
|
|
6
6
|
from typing import Union
|
|
7
|
-
from io import BytesIO
|
|
8
7
|
from pandas import DataFrame
|
|
9
8
|
from soup_files import File
|
|
10
|
-
from convert_stream import DocumentPdf, PageDocumentPdf
|
|
9
|
+
from convert_stream import DocumentPdf, PageDocumentPdf, DictTextTable
|
|
11
10
|
from convert_stream.mod_types.modules import DEFAULT_LIB_IMAGE, LibImage
|
|
12
11
|
from convert_stream.image import ImageObject
|
|
13
|
-
from
|
|
14
|
-
from convert_stream.mod_types.table_types import ColumnBody
|
|
12
|
+
from sheet_stream.type_utils import MetaDataFile
|
|
15
13
|
from ocr_stream.modules import (
|
|
16
|
-
LibOcr, DEFAULT_LIB_OCR, pytesseract,
|
|
14
|
+
LibOcr, DEFAULT_LIB_OCR, pytesseract, pyocr, easyocr
|
|
17
15
|
)
|
|
18
16
|
from ocr_stream.bin_tess import BinTesseract
|
|
19
17
|
|
|
18
|
+
import cv2
|
|
19
|
+
from PIL import Image
|
|
20
|
+
from io import BytesIO
|
|
21
|
+
from reportlab.pdfgen import canvas
|
|
22
|
+
#from reportlab.lib.pagesizes import A4
|
|
23
|
+
from reportlab.lib.utils import ImageReader
|
|
24
|
+
|
|
20
25
|
|
|
21
26
|
class TextRecognized(object):
|
|
22
27
|
"""
|
|
@@ -27,6 +32,7 @@ class TextRecognized(object):
|
|
|
27
32
|
def __init__(self, bytes_recognized: bytes):
|
|
28
33
|
self.metadata: MetaDataFile = MetaDataFile()
|
|
29
34
|
self.bytes_recognized: bytes = bytes_recognized
|
|
35
|
+
self.__text_document: str | None = None
|
|
30
36
|
|
|
31
37
|
self.list_bad_char: list[str] = [
|
|
32
38
|
':', ',', ';', '$', '=',
|
|
@@ -38,8 +44,28 @@ class TextRecognized(object):
|
|
|
38
44
|
'%', '~', '¥', '♀',
|
|
39
45
|
]
|
|
40
46
|
|
|
47
|
+
@property
|
|
48
|
+
def is_empty(self) -> bool:
|
|
49
|
+
txt = self.to_string()
|
|
50
|
+
if (txt is None) or (txt == '') or (txt == 'nas'):
|
|
51
|
+
return True
|
|
52
|
+
return False
|
|
53
|
+
|
|
41
54
|
def to_string(self) -> str | None:
|
|
42
|
-
|
|
55
|
+
if self.__text_document is None:
|
|
56
|
+
_pages: list[PageDocumentPdf] = self.to_document().to_pages()
|
|
57
|
+
content: str = ''
|
|
58
|
+
txt_page: str
|
|
59
|
+
for page in _pages:
|
|
60
|
+
txt_page = page.to_string()
|
|
61
|
+
if (txt_page is None) or (txt_page == '') or (txt_page == 'nas'):
|
|
62
|
+
continue
|
|
63
|
+
if content == '':
|
|
64
|
+
content = txt_page
|
|
65
|
+
continue
|
|
66
|
+
content = f'{content}\n{txt_page}'
|
|
67
|
+
self.__text_document = content
|
|
68
|
+
return self.__text_document
|
|
43
69
|
|
|
44
70
|
def to_page_pdf(self) -> PageDocumentPdf:
|
|
45
71
|
doc = self.to_document()
|
|
@@ -51,7 +77,7 @@ class TextRecognized(object):
|
|
|
51
77
|
tmp_doc.metadata.dir_path = self.metadata.dir_path
|
|
52
78
|
return tmp_doc
|
|
53
79
|
|
|
54
|
-
def to_dict(self, separator: str = '\n') ->
|
|
80
|
+
def to_dict(self, separator: str = '\n') -> DictTextTable:
|
|
55
81
|
return self.to_page_pdf().to_dict(separator=separator)
|
|
56
82
|
|
|
57
83
|
def to_dataframe(self, separator='\n') -> DataFrame:
|
|
@@ -153,13 +179,6 @@ class IEasyOcr(ABCOcrTesseract):
|
|
|
153
179
|
return text
|
|
154
180
|
|
|
155
181
|
def to_reconize(self, img: Union[File, ImageObject]) -> TextRecognized:
|
|
156
|
-
import cv2
|
|
157
|
-
import numpy as np
|
|
158
|
-
from PIL import Image
|
|
159
|
-
from io import BytesIO
|
|
160
|
-
from reportlab.pdfgen import canvas
|
|
161
|
-
from reportlab.lib.pagesizes import A4
|
|
162
|
-
from reportlab.lib.utils import ImageReader
|
|
163
182
|
|
|
164
183
|
# 1️⃣ Converter o objeto de entrada para imagem OpenCV
|
|
165
184
|
if isinstance(img, File):
|
|
@@ -168,7 +187,7 @@ class IEasyOcr(ABCOcrTesseract):
|
|
|
168
187
|
img_h, img_w = img_cv.shape[:2]
|
|
169
188
|
|
|
170
189
|
# 2️⃣ Reconhecer o texto com EasyOCR
|
|
171
|
-
results = self.reader.readtext(img_cv)
|
|
190
|
+
results: list = self.reader.readtext(img_cv)
|
|
172
191
|
|
|
173
192
|
# 3️⃣ Converter a imagem para PDF (imagem de fundo)
|
|
174
193
|
buffer = BytesIO()
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
from convert_stream.pdf import ConvertPdfToImages
|
|
5
|
-
from convert_stream.image import ImageObject
|
|
3
|
+
import convert_stream as cs
|
|
6
4
|
from ocr_stream.bin_tess import BinTesseract
|
|
7
5
|
from ocr_stream.modules import LibOcr, DEFAULT_LIB_OCR
|
|
8
6
|
from ocr_stream.ocr import TesseractOcr, TextRecognized
|
|
@@ -32,7 +30,7 @@ class RecognizeImage(object):
|
|
|
32
30
|
def bin_tesseract(self) -> BinTesseract:
|
|
33
31
|
return self.module_ocr.mod_ocr.bin_tess
|
|
34
32
|
|
|
35
|
-
def image_content_data(self, img: ImageObject | File) -> DataFrame:
|
|
33
|
+
def image_content_data(self, img: cs.ImageObject | File) -> DataFrame:
|
|
36
34
|
"""
|
|
37
35
|
Retorna uma tabela estruturada com os dados reconhecidos da imagem.
|
|
38
36
|
|
|
@@ -41,35 +39,35 @@ class RecognizeImage(object):
|
|
|
41
39
|
nível do OCR e confiabilidade, entre outras.
|
|
42
40
|
|
|
43
41
|
Parâmetros:
|
|
44
|
-
img (ImageObject | File): A imagem a ser processada, podendo ser um objeto
|
|
45
|
-
`ImageObject` ou um arquivo `File`.
|
|
42
|
+
img (cs.ImageObject | File): A imagem a ser processada, podendo ser um objeto
|
|
43
|
+
`cs.ImageObject` ou um arquivo `File`.
|
|
46
44
|
|
|
47
45
|
Retorna:
|
|
48
46
|
DataFrame: Uma tabela contendo os dados reconhecidos na imagem.
|
|
49
47
|
|
|
50
48
|
Lança:
|
|
51
|
-
ValueError: Se o tipo do parâmetro `img` não for `ImageObject` ou `File`.
|
|
49
|
+
ValueError: Se o tipo do parâmetro `img` não for `cs.ImageObject` ou `File`.
|
|
52
50
|
|
|
53
|
-
@param img: Imagem a ser processada, podendo ser uma instância de `ImageObject`
|
|
51
|
+
@param img: Imagem a ser processada, podendo ser uma instância de `cs.ImageObject`
|
|
54
52
|
ou um arquivo `File`.
|
|
55
|
-
@type img: ImageObject | File
|
|
53
|
+
@type img: cs.ImageObject | File
|
|
56
54
|
|
|
57
55
|
@rtype: pandas.DataFrame
|
|
58
56
|
@return: Um DataFrame com os dados reconhecidos na imagem.
|
|
59
57
|
|
|
60
|
-
@raise ValueError: Caso o tipo de `img` não seja `ImageObject` nem `File`.
|
|
58
|
+
@raise ValueError: Caso o tipo de `img` não seja `cs.ImageObject` nem `File`.
|
|
61
59
|
"""
|
|
62
60
|
return self.image_recognize(img).to_dataframe()
|
|
63
61
|
|
|
64
|
-
def image_recognize(self, img: ImageObject | File, *, land_scape: bool = False) -> TextRecognized:
|
|
62
|
+
def image_recognize(self, img: cs.ImageObject | File, *, land_scape: bool = False) -> TextRecognized:
|
|
65
63
|
if isinstance(img, File):
|
|
66
|
-
img = ImageObject(img)
|
|
64
|
+
img = cs.ImageObject(img)
|
|
67
65
|
if land_scape:
|
|
68
66
|
img.set_landscape()
|
|
69
67
|
rec: TextRecognized = self.module_ocr.to_reconize(img)
|
|
70
68
|
return rec
|
|
71
69
|
|
|
72
|
-
def image_to_string(self, img: ImageObject | File) -> str:
|
|
70
|
+
def image_to_string(self, img: cs.ImageObject | File) -> str:
|
|
73
71
|
return self.module_ocr.to_string(img)
|
|
74
72
|
|
|
75
73
|
|
|
@@ -86,40 +84,40 @@ class RecognizePdf(object):
|
|
|
86
84
|
def set_pbar(self, p: ProgressBarAdapter):
|
|
87
85
|
self.pbar = p
|
|
88
86
|
|
|
89
|
-
def recognize_page_pdf(self, page: PageDocumentPdf, *, dpi: int =
|
|
87
|
+
def recognize_page_pdf(self, page: cs.PageDocumentPdf, *, dpi: int = 200) -> cs.DocumentPdf:
|
|
90
88
|
"""
|
|
91
89
|
Converte a página em Imagem, reconhece o texto com OCR e
|
|
92
90
|
retorna uma nova página com o texto reconhecido.
|
|
93
91
|
"""
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
img: ImageObject =
|
|
92
|
+
_stream = cs.PdfStream(pbar=self.pbar, dpi=dpi)
|
|
93
|
+
_stream.add_page(page)
|
|
94
|
+
img: cs.ImageObject = _stream.convert_pdf_to_images.to_images(dpi=dpi)[0]
|
|
97
95
|
text_recognized: TextRecognized = self.recognize_image.image_recognize(img)
|
|
98
|
-
del _doc
|
|
99
|
-
del _conv
|
|
100
96
|
del img
|
|
101
97
|
return text_recognized.to_document()
|
|
102
98
|
|
|
103
|
-
def recognize_document(self, doc: DocumentPdf, *, dpi: int =
|
|
104
|
-
_pages: list[PageDocumentPdf] = []
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
99
|
+
def recognize_document(self, doc: cs.DocumentPdf, *, dpi: int = 200) -> cs.DocumentPdf:
|
|
100
|
+
_pages: list[cs.PageDocumentPdf] = []
|
|
101
|
+
_stream = cs.PdfStream(pbar=self.pbar, dpi=dpi)
|
|
102
|
+
_stream.add_document(doc)
|
|
103
|
+
_conv = _stream.convert_pdf_to_images
|
|
104
|
+
images: list[cs.ImageObject] = _conv.to_images(dpi=dpi)
|
|
108
105
|
max_num: int = len(images)
|
|
109
106
|
for num, img in enumerate(images):
|
|
110
107
|
self.pbar.update(
|
|
111
108
|
((num + 1) / max_num) * 100,
|
|
112
|
-
f'
|
|
109
|
+
f'OCR Documento: [{num+1} de {max_num}]'
|
|
113
110
|
)
|
|
114
111
|
text_recognized = self.recognize_image.image_recognize(img)
|
|
115
112
|
_pages.append(text_recognized.to_page_pdf())
|
|
116
113
|
print()
|
|
117
114
|
self.pbar.stop()
|
|
118
|
-
new_doc = DocumentPdf.create_from_pages(_pages)
|
|
115
|
+
new_doc = cs.DocumentPdf.create_from_pages(_pages)
|
|
116
|
+
new_doc.metadata = doc.metadata
|
|
119
117
|
return new_doc
|
|
120
118
|
|
|
121
|
-
def recognize_file_pdf(self, file: File, *, dpi: int = 300) -> DocumentPdf:
|
|
122
|
-
file_doc = DocumentPdf.create_from_file(file)
|
|
119
|
+
def recognize_file_pdf(self, file: File, *, dpi: int = 300) -> cs.DocumentPdf:
|
|
120
|
+
file_doc = cs.DocumentPdf.create_from_file(file)
|
|
123
121
|
recognized_doc = self.recognize_document(file_doc, dpi=dpi)
|
|
124
122
|
del file_doc
|
|
125
123
|
return recognized_doc
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ocr_stream
|
|
3
|
-
Version: 2.4
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: Extrair textos de documentos digitalizados e imagens.
|
|
5
5
|
Author: Bruno Chaves
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -12,7 +12,7 @@ Requires-Dist: pandas
|
|
|
12
12
|
Requires-Dist: requests>=2.32.4
|
|
13
13
|
Requires-Dist: opencv-python
|
|
14
14
|
Requires-Dist: pytesseract
|
|
15
|
-
Requires-Dist: convert_stream>=2.4
|
|
15
|
+
Requires-Dist: convert_stream>=2.4.3
|
|
16
16
|
Requires-Dist: soup_files>=1.4
|
|
17
17
|
|
|
18
18
|
# ocrlib
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ocr_stream"
|
|
7
|
-
version = "2.4"
|
|
7
|
+
version = "2.4.2"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="Bruno Chaves"},
|
|
10
10
|
]
|
|
@@ -21,7 +21,7 @@ dependencies = [
|
|
|
21
21
|
"requests>=2.32.4",
|
|
22
22
|
"opencv-python",
|
|
23
23
|
"pytesseract",
|
|
24
|
-
"convert_stream>=2.4",
|
|
24
|
+
"convert_stream>=2.4.3",
|
|
25
25
|
"soup_files>=1.4",
|
|
26
26
|
]
|
|
27
27
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|