python-doctr 0.9.0__py3-none-any.whl → 0.10.0__py3-none-any.whl
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.
- doctr/datasets/cord.py +10 -1
- doctr/datasets/funsd.py +11 -1
- doctr/datasets/ic03.py +11 -1
- doctr/datasets/ic13.py +10 -1
- doctr/datasets/iiit5k.py +26 -16
- doctr/datasets/imgur5k.py +10 -1
- doctr/datasets/sroie.py +11 -1
- doctr/datasets/svhn.py +11 -1
- doctr/datasets/svt.py +11 -1
- doctr/datasets/synthtext.py +11 -1
- doctr/datasets/utils.py +7 -2
- doctr/datasets/vocabs.py +6 -2
- doctr/datasets/wildreceipt.py +12 -1
- doctr/file_utils.py +19 -0
- doctr/io/elements.py +12 -4
- doctr/models/builder.py +2 -2
- doctr/models/classification/magc_resnet/tensorflow.py +13 -6
- doctr/models/classification/mobilenet/pytorch.py +2 -0
- doctr/models/classification/mobilenet/tensorflow.py +14 -8
- doctr/models/classification/predictor/pytorch.py +11 -7
- doctr/models/classification/predictor/tensorflow.py +10 -6
- doctr/models/classification/resnet/tensorflow.py +21 -8
- doctr/models/classification/textnet/tensorflow.py +11 -5
- doctr/models/classification/vgg/tensorflow.py +9 -3
- doctr/models/classification/vit/tensorflow.py +10 -4
- doctr/models/classification/zoo.py +22 -10
- doctr/models/detection/differentiable_binarization/tensorflow.py +34 -12
- doctr/models/detection/fast/tensorflow.py +14 -11
- doctr/models/detection/linknet/tensorflow.py +23 -11
- doctr/models/detection/predictor/tensorflow.py +2 -2
- doctr/models/factory/hub.py +5 -6
- doctr/models/kie_predictor/base.py +4 -0
- doctr/models/kie_predictor/pytorch.py +4 -0
- doctr/models/kie_predictor/tensorflow.py +8 -1
- doctr/models/modules/transformer/tensorflow.py +0 -2
- doctr/models/modules/vision_transformer/pytorch.py +1 -1
- doctr/models/modules/vision_transformer/tensorflow.py +1 -1
- doctr/models/predictor/base.py +24 -12
- doctr/models/predictor/pytorch.py +4 -0
- doctr/models/predictor/tensorflow.py +8 -1
- doctr/models/preprocessor/tensorflow.py +1 -1
- doctr/models/recognition/crnn/tensorflow.py +8 -6
- doctr/models/recognition/master/tensorflow.py +9 -4
- doctr/models/recognition/parseq/tensorflow.py +10 -8
- doctr/models/recognition/sar/tensorflow.py +7 -3
- doctr/models/recognition/vitstr/tensorflow.py +9 -4
- doctr/models/utils/pytorch.py +1 -1
- doctr/models/utils/tensorflow.py +15 -15
- doctr/transforms/functional/pytorch.py +1 -1
- doctr/transforms/modules/pytorch.py +7 -6
- doctr/transforms/modules/tensorflow.py +15 -12
- doctr/utils/geometry.py +106 -19
- doctr/utils/metrics.py +1 -1
- doctr/utils/reconstitution.py +151 -65
- doctr/version.py +1 -1
- {python_doctr-0.9.0.dist-info → python_doctr-0.10.0.dist-info}/METADATA +11 -11
- {python_doctr-0.9.0.dist-info → python_doctr-0.10.0.dist-info}/RECORD +61 -61
- {python_doctr-0.9.0.dist-info → python_doctr-0.10.0.dist-info}/WHEEL +1 -1
- {python_doctr-0.9.0.dist-info → python_doctr-0.10.0.dist-info}/LICENSE +0 -0
- {python_doctr-0.9.0.dist-info → python_doctr-0.10.0.dist-info}/top_level.txt +0 -0
- {python_doctr-0.9.0.dist-info → python_doctr-0.10.0.dist-info}/zip-safe +0 -0
doctr/utils/reconstitution.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# This program is licensed under the Apache License 2.0.
|
|
4
4
|
# See LICENSE or go to <https://opensource.org/licenses/Apache-2.0> for full license details.
|
|
5
|
+
import logging
|
|
5
6
|
from typing import Any, Dict, Optional
|
|
6
7
|
|
|
7
8
|
import numpy as np
|
|
@@ -13,10 +14,109 @@ from .fonts import get_font
|
|
|
13
14
|
__all__ = ["synthesize_page", "synthesize_kie_page"]
|
|
14
15
|
|
|
15
16
|
|
|
17
|
+
# Global variable to avoid multiple warnings
|
|
18
|
+
ROTATION_WARNING = False
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _warn_rotation(entry: Dict[str, Any]) -> None: # pragma: no cover
|
|
22
|
+
global ROTATION_WARNING
|
|
23
|
+
if not ROTATION_WARNING and len(entry["geometry"]) == 4:
|
|
24
|
+
logging.warning("Polygons with larger rotations will lead to inaccurate rendering")
|
|
25
|
+
ROTATION_WARNING = True
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _synthesize(
|
|
29
|
+
response: Image.Image,
|
|
30
|
+
entry: Dict[str, Any],
|
|
31
|
+
w: int,
|
|
32
|
+
h: int,
|
|
33
|
+
draw_proba: bool = False,
|
|
34
|
+
font_family: Optional[str] = None,
|
|
35
|
+
smoothing_factor: float = 0.75,
|
|
36
|
+
min_font_size: int = 6,
|
|
37
|
+
max_font_size: int = 50,
|
|
38
|
+
) -> Image.Image:
|
|
39
|
+
if len(entry["geometry"]) == 2:
|
|
40
|
+
(xmin, ymin), (xmax, ymax) = entry["geometry"]
|
|
41
|
+
polygon = [(xmin, ymin), (xmax, ymin), (xmax, ymax), (xmin, ymax)]
|
|
42
|
+
else:
|
|
43
|
+
polygon = entry["geometry"]
|
|
44
|
+
|
|
45
|
+
# Calculate the bounding box of the word
|
|
46
|
+
x_coords, y_coords = zip(*polygon)
|
|
47
|
+
xmin, ymin, xmax, ymax = (
|
|
48
|
+
int(round(w * min(x_coords))),
|
|
49
|
+
int(round(h * min(y_coords))),
|
|
50
|
+
int(round(w * max(x_coords))),
|
|
51
|
+
int(round(h * max(y_coords))),
|
|
52
|
+
)
|
|
53
|
+
word_width = xmax - xmin
|
|
54
|
+
word_height = ymax - ymin
|
|
55
|
+
|
|
56
|
+
# If lines are provided instead of words, concatenate the word entries
|
|
57
|
+
if "words" in entry:
|
|
58
|
+
word_text = " ".join(word["value"] for word in entry["words"])
|
|
59
|
+
else:
|
|
60
|
+
word_text = entry["value"]
|
|
61
|
+
# Find the optimal font size
|
|
62
|
+
try:
|
|
63
|
+
font_size = min(word_height, max_font_size)
|
|
64
|
+
font = get_font(font_family, font_size)
|
|
65
|
+
text_width, text_height = font.getbbox(word_text)[2:4]
|
|
66
|
+
|
|
67
|
+
while (text_width > word_width or text_height > word_height) and font_size > min_font_size:
|
|
68
|
+
font_size = max(int(font_size * smoothing_factor), min_font_size)
|
|
69
|
+
font = get_font(font_family, font_size)
|
|
70
|
+
text_width, text_height = font.getbbox(word_text)[2:4]
|
|
71
|
+
except ValueError:
|
|
72
|
+
font = get_font(font_family, min_font_size)
|
|
73
|
+
|
|
74
|
+
# Create a mask for the word
|
|
75
|
+
mask = Image.new("L", (w, h), 0)
|
|
76
|
+
ImageDraw.Draw(mask).polygon([(int(round(w * x)), int(round(h * y))) for x, y in polygon], fill=255)
|
|
77
|
+
|
|
78
|
+
# Draw the word text
|
|
79
|
+
d = ImageDraw.Draw(response)
|
|
80
|
+
try:
|
|
81
|
+
try:
|
|
82
|
+
d.text((xmin, ymin), word_text, font=font, fill=(0, 0, 0), anchor="lt")
|
|
83
|
+
except UnicodeEncodeError:
|
|
84
|
+
d.text((xmin, ymin), anyascii(word_text), font=font, fill=(0, 0, 0), anchor="lt")
|
|
85
|
+
# Catch generic exceptions to avoid crashing the whole rendering
|
|
86
|
+
except Exception: # pragma: no cover
|
|
87
|
+
logging.warning(f"Could not render word: {word_text}")
|
|
88
|
+
|
|
89
|
+
if draw_proba:
|
|
90
|
+
confidence = (
|
|
91
|
+
entry["confidence"]
|
|
92
|
+
if "confidence" in entry
|
|
93
|
+
else sum(w["confidence"] for w in entry["words"]) / len(entry["words"])
|
|
94
|
+
)
|
|
95
|
+
p = int(255 * confidence)
|
|
96
|
+
color = (255 - p, 0, p) # Red to blue gradient based on probability
|
|
97
|
+
d.rectangle([(xmin, ymin), (xmax, ymax)], outline=color, width=2)
|
|
98
|
+
|
|
99
|
+
prob_font = get_font(font_family, 20)
|
|
100
|
+
prob_text = f"{confidence:.2f}"
|
|
101
|
+
prob_text_width, prob_text_height = prob_font.getbbox(prob_text)[2:4]
|
|
102
|
+
|
|
103
|
+
# Position the probability slightly above the bounding box
|
|
104
|
+
prob_x_offset = (word_width - prob_text_width) // 2
|
|
105
|
+
prob_y_offset = ymin - prob_text_height - 2
|
|
106
|
+
prob_y_offset = max(0, prob_y_offset)
|
|
107
|
+
|
|
108
|
+
d.text((xmin + prob_x_offset, prob_y_offset), prob_text, font=prob_font, fill=color, anchor="lt")
|
|
109
|
+
|
|
110
|
+
return response
|
|
111
|
+
|
|
112
|
+
|
|
16
113
|
def synthesize_page(
|
|
17
114
|
page: Dict[str, Any],
|
|
18
115
|
draw_proba: bool = False,
|
|
19
116
|
font_family: Optional[str] = None,
|
|
117
|
+
smoothing_factor: float = 0.95,
|
|
118
|
+
min_font_size: int = 8,
|
|
119
|
+
max_font_size: int = 50,
|
|
20
120
|
) -> np.ndarray:
|
|
21
121
|
"""Draw a the content of the element page (OCR response) on a blank page.
|
|
22
122
|
|
|
@@ -24,8 +124,10 @@ def synthesize_page(
|
|
|
24
124
|
----
|
|
25
125
|
page: exported Page object to represent
|
|
26
126
|
draw_proba: if True, draw words in colors to represent confidence. Blue: p=1, red: p=0
|
|
27
|
-
font_size: size of the font, default font = 13
|
|
28
127
|
font_family: family of the font
|
|
128
|
+
smoothing_factor: factor to smooth the font size
|
|
129
|
+
min_font_size: minimum font size
|
|
130
|
+
max_font_size: maximum font size
|
|
29
131
|
|
|
30
132
|
Returns:
|
|
31
133
|
-------
|
|
@@ -33,41 +135,42 @@ def synthesize_page(
|
|
|
33
135
|
"""
|
|
34
136
|
# Draw template
|
|
35
137
|
h, w = page["dimensions"]
|
|
36
|
-
response =
|
|
138
|
+
response = Image.new("RGB", (w, h), color=(255, 255, 255))
|
|
37
139
|
|
|
38
|
-
# Draw each word
|
|
39
140
|
for block in page["blocks"]:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
#
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
141
|
+
# If lines are provided use these to get better rendering results
|
|
142
|
+
if len(block["lines"]) > 1:
|
|
143
|
+
for line in block["lines"]:
|
|
144
|
+
_warn_rotation(block) # pragma: no cover
|
|
145
|
+
response = _synthesize(
|
|
146
|
+
response=response,
|
|
147
|
+
entry=line,
|
|
148
|
+
w=w,
|
|
149
|
+
h=h,
|
|
150
|
+
draw_proba=draw_proba,
|
|
151
|
+
font_family=font_family,
|
|
152
|
+
smoothing_factor=smoothing_factor,
|
|
153
|
+
min_font_size=min_font_size,
|
|
154
|
+
max_font_size=max_font_size,
|
|
155
|
+
)
|
|
156
|
+
# Otherwise, draw each word
|
|
157
|
+
else:
|
|
158
|
+
for line in block["lines"]:
|
|
159
|
+
_warn_rotation(block) # pragma: no cover
|
|
160
|
+
for word in line["words"]:
|
|
161
|
+
response = _synthesize(
|
|
162
|
+
response=response,
|
|
163
|
+
entry=word,
|
|
164
|
+
w=w,
|
|
165
|
+
h=h,
|
|
166
|
+
draw_proba=draw_proba,
|
|
167
|
+
font_family=font_family,
|
|
168
|
+
smoothing_factor=smoothing_factor,
|
|
169
|
+
min_font_size=min_font_size,
|
|
170
|
+
max_font_size=max_font_size,
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
return np.array(response, dtype=np.uint8)
|
|
71
174
|
|
|
72
175
|
|
|
73
176
|
def synthesize_kie_page(
|
|
@@ -81,8 +184,10 @@ def synthesize_kie_page(
|
|
|
81
184
|
----
|
|
82
185
|
page: exported Page object to represent
|
|
83
186
|
draw_proba: if True, draw words in colors to represent confidence. Blue: p=1, red: p=0
|
|
84
|
-
font_size: size of the font, default font = 13
|
|
85
187
|
font_family: family of the font
|
|
188
|
+
smoothing_factor: factor to smooth the font size
|
|
189
|
+
min_font_size: minimum font size
|
|
190
|
+
max_font_size: maximum font size
|
|
86
191
|
|
|
87
192
|
Returns:
|
|
88
193
|
-------
|
|
@@ -90,37 +195,18 @@ def synthesize_kie_page(
|
|
|
90
195
|
"""
|
|
91
196
|
# Draw template
|
|
92
197
|
h, w = page["dimensions"]
|
|
93
|
-
response =
|
|
198
|
+
response = Image.new("RGB", (w, h), color=(255, 255, 255))
|
|
94
199
|
|
|
95
200
|
# Draw each word
|
|
96
201
|
for predictions in page["predictions"].values():
|
|
97
202
|
for prediction in predictions:
|
|
98
|
-
#
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
try:
|
|
109
|
-
d.text((0, 0), prediction["value"], font=font, fill=(0, 0, 0))
|
|
110
|
-
except UnicodeEncodeError:
|
|
111
|
-
# When character cannot be encoded, use its anyascii version
|
|
112
|
-
d.text((0, 0), anyascii(prediction["value"]), font=font, fill=(0, 0, 0))
|
|
113
|
-
|
|
114
|
-
# Colorize if draw_proba
|
|
115
|
-
if draw_proba:
|
|
116
|
-
p = int(255 * prediction["confidence"])
|
|
117
|
-
mask = np.where(np.array(img) == 0, 1, 0)
|
|
118
|
-
proba: np.ndarray = np.array([255 - p, 0, p])
|
|
119
|
-
color = mask * proba[np.newaxis, np.newaxis, :]
|
|
120
|
-
white_mask = 255 * (1 - mask)
|
|
121
|
-
img = color + white_mask
|
|
122
|
-
|
|
123
|
-
# Write to response page
|
|
124
|
-
response[ymin:ymax, xmin:xmax, :] = np.array(img)
|
|
125
|
-
|
|
126
|
-
return response
|
|
203
|
+
_warn_rotation(prediction) # pragma: no cover
|
|
204
|
+
response = _synthesize(
|
|
205
|
+
response=response,
|
|
206
|
+
entry=prediction,
|
|
207
|
+
w=w,
|
|
208
|
+
h=h,
|
|
209
|
+
draw_proba=draw_proba,
|
|
210
|
+
font_family=font_family,
|
|
211
|
+
)
|
|
212
|
+
return np.array(response, dtype=np.uint8)
|
doctr/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = 'v0.
|
|
1
|
+
__version__ = 'v0.10.0'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: python-doctr
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.0
|
|
4
4
|
Summary: Document Text Recognition (docTR): deep Learning for high-performance OCR on documents.
|
|
5
5
|
Author-email: Mindee <contact@mindee.com>
|
|
6
6
|
Maintainer: François-Guillaume Fernandez, Charles Gaillard, Olivier Dulcy, Felix Dittrich
|
|
@@ -226,7 +226,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
226
226
|
Requires-Python: <4,>=3.9.0
|
|
227
227
|
Description-Content-Type: text/markdown
|
|
228
228
|
License-File: LICENSE
|
|
229
|
-
Requires-Dist: numpy<
|
|
229
|
+
Requires-Dist: numpy<3.0.0,>=1.16.0
|
|
230
230
|
Requires-Dist: scipy<2.0.0,>=1.4.0
|
|
231
231
|
Requires-Dist: h5py<4.0.0,>=3.1.0
|
|
232
232
|
Requires-Dist: opencv-python<5.0.0,>=4.5.0
|
|
@@ -243,17 +243,17 @@ Requires-Dist: tqdm>=4.30.0
|
|
|
243
243
|
Provides-Extra: contrib
|
|
244
244
|
Requires-Dist: onnxruntime>=1.11.0; extra == "contrib"
|
|
245
245
|
Provides-Extra: dev
|
|
246
|
-
Requires-Dist: tensorflow<
|
|
246
|
+
Requires-Dist: tensorflow<3.0.0,>=2.15.0; extra == "dev"
|
|
247
|
+
Requires-Dist: tf-keras<3.0.0,>=2.15.0; extra == "dev"
|
|
247
248
|
Requires-Dist: tf2onnx<2.0.0,>=1.16.0; extra == "dev"
|
|
248
|
-
Requires-Dist: torch<3.0.0,>=
|
|
249
|
-
Requires-Dist: torchvision>=0.
|
|
249
|
+
Requires-Dist: torch<3.0.0,>=2.0.0; extra == "dev"
|
|
250
|
+
Requires-Dist: torchvision>=0.15.0; extra == "dev"
|
|
250
251
|
Requires-Dist: onnx<3.0.0,>=1.12.0; extra == "dev"
|
|
251
252
|
Requires-Dist: weasyprint>=55.0; extra == "dev"
|
|
252
253
|
Requires-Dist: matplotlib>=3.1.0; extra == "dev"
|
|
253
254
|
Requires-Dist: mplcursors>=0.3; extra == "dev"
|
|
254
255
|
Requires-Dist: pytest>=5.3.2; extra == "dev"
|
|
255
256
|
Requires-Dist: coverage[toml]>=4.5.4; extra == "dev"
|
|
256
|
-
Requires-Dist: hdf5storage>=0.1.18; extra == "dev"
|
|
257
257
|
Requires-Dist: onnxruntime>=1.11.0; extra == "dev"
|
|
258
258
|
Requires-Dist: requests>=2.20.0; extra == "dev"
|
|
259
259
|
Requires-Dist: psutil>=5.9.5; extra == "dev"
|
|
@@ -286,16 +286,16 @@ Requires-Dist: pre-commit>=2.17.0; extra == "quality"
|
|
|
286
286
|
Provides-Extra: testing
|
|
287
287
|
Requires-Dist: pytest>=5.3.2; extra == "testing"
|
|
288
288
|
Requires-Dist: coverage[toml]>=4.5.4; extra == "testing"
|
|
289
|
-
Requires-Dist: hdf5storage>=0.1.18; extra == "testing"
|
|
290
289
|
Requires-Dist: onnxruntime>=1.11.0; extra == "testing"
|
|
291
290
|
Requires-Dist: requests>=2.20.0; extra == "testing"
|
|
292
291
|
Requires-Dist: psutil>=5.9.5; extra == "testing"
|
|
293
292
|
Provides-Extra: tf
|
|
294
|
-
Requires-Dist: tensorflow<
|
|
293
|
+
Requires-Dist: tensorflow<3.0.0,>=2.15.0; extra == "tf"
|
|
294
|
+
Requires-Dist: tf-keras<3.0.0,>=2.15.0; extra == "tf"
|
|
295
295
|
Requires-Dist: tf2onnx<2.0.0,>=1.16.0; extra == "tf"
|
|
296
296
|
Provides-Extra: torch
|
|
297
|
-
Requires-Dist: torch<3.0.0,>=
|
|
298
|
-
Requires-Dist: torchvision>=0.
|
|
297
|
+
Requires-Dist: torch<3.0.0,>=2.0.0; extra == "torch"
|
|
298
|
+
Requires-Dist: torchvision>=0.15.0; extra == "torch"
|
|
299
299
|
Requires-Dist: onnx<3.0.0,>=1.12.0; extra == "torch"
|
|
300
300
|
Provides-Extra: viz
|
|
301
301
|
Requires-Dist: matplotlib>=3.1.0; extra == "viz"
|
|
@@ -464,7 +464,7 @@ pip install "python-doctr[torch,viz,html,contib]"
|
|
|
464
464
|
For MacBooks with M1 chip, you will need some additional packages or specific versions:
|
|
465
465
|
|
|
466
466
|
- TensorFlow 2: [metal plugin](https://developer.apple.com/metal/tensorflow-plugin/)
|
|
467
|
-
- PyTorch: [version >=
|
|
467
|
+
- PyTorch: [version >= 2.0.0](https://pytorch.org/get-started/locally/#start-locally)
|
|
468
468
|
|
|
469
469
|
### Developer mode
|
|
470
470
|
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
doctr/__init__.py,sha256=q-1tv1hf-BRaZtxsrbPVxYNL6ZtyIOSDvlZOSt85TmU,170
|
|
2
|
-
doctr/file_utils.py,sha256=
|
|
2
|
+
doctr/file_utils.py,sha256=YRxb_xnV980ONPrYTS9XtKCeWsNfo_DamnqaeSvWygI,4442
|
|
3
3
|
doctr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
doctr/version.py,sha256=
|
|
4
|
+
doctr/version.py,sha256=hPF6G3uWBAkCELBsDxYD6Z0PDEzrjDfFIIWewytUf-U,24
|
|
5
5
|
doctr/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
doctr/contrib/artefacts.py,sha256=xXkTkZVMrjalzffeBDOXktRhMn-EmUVEdURpDsV0-h8,5351
|
|
7
7
|
doctr/contrib/base.py,sha256=dKUcKvVMyPFvZp_-IekocFNG3JmCJ1cNt0V8BQ5zdV0,3426
|
|
8
8
|
doctr/datasets/__init__.py,sha256=umI2ABbgWIKuhswl8RGaF6CefFiI8DdEGVb0Kbd8aZA,574
|
|
9
|
-
doctr/datasets/cord.py,sha256=
|
|
9
|
+
doctr/datasets/cord.py,sha256=J10eXeu6i90qnQjGNHR2C1o20-1vQeMKliTRthJvTBg,5288
|
|
10
10
|
doctr/datasets/detection.py,sha256=H6inFO6rjdvU_Asm9UTod5r5bjjpmJJWGityv0RTJ8M,3607
|
|
11
11
|
doctr/datasets/doc_artefacts.py,sha256=KKOlwE1oUG-sbC43an-TTh2m9PopuryXtUWM471TgO4,3258
|
|
12
|
-
doctr/datasets/funsd.py,sha256=
|
|
13
|
-
doctr/datasets/ic03.py,sha256=
|
|
14
|
-
doctr/datasets/ic13.py,sha256=
|
|
15
|
-
doctr/datasets/iiit5k.py,sha256=
|
|
12
|
+
doctr/datasets/funsd.py,sha256=_3r3BCWtUtQhH317JkNSfWMUWLouvMvJVtReRAPnVyE,4710
|
|
13
|
+
doctr/datasets/ic03.py,sha256=49vfjAcM0v1Pwp1dCDZa-MfX8dChbVze_K3O4c3W_mA,5577
|
|
14
|
+
doctr/datasets/ic13.py,sha256=l8fmVmtXaJZbOu7UDfmnCvIkF61TWUczfOAnOUSXVG0,4517
|
|
15
|
+
doctr/datasets/iiit5k.py,sha256=_z1EVQB0QOM7MjW5nXLawJiQ9HY_XVjK6Na5G8BYcr0,4417
|
|
16
16
|
doctr/datasets/iiithws.py,sha256=MFWgIW5bNJSvxWU-USZvbYVHNlkBsnzzMaSGrbut-zQ,2778
|
|
17
|
-
doctr/datasets/imgur5k.py,sha256=
|
|
17
|
+
doctr/datasets/imgur5k.py,sha256=aNwHH9PT5aLqDFlbaSQ9oZuuvgbT1Z5eCowPVC9nnqQ,7222
|
|
18
18
|
doctr/datasets/loader.py,sha256=77ErVBRQsXAhe4pTJstZ-wk4wOZSFdw9w-_OMv89IKg,2803
|
|
19
19
|
doctr/datasets/mjsynth.py,sha256=Sybpaxiib8jDOc33OQgl2gGQ4XX8kKsnZaNokKmt08o,4063
|
|
20
20
|
doctr/datasets/ocr.py,sha256=wSAU62NUdFgt52vxo65bXPsuKeVWArlAkD5kxWKypiM,2550
|
|
21
21
|
doctr/datasets/orientation.py,sha256=PZfSQGfBSqzwRlg84L7BA7Lb2jseBvxkKqzh36TtFXk,1113
|
|
22
22
|
doctr/datasets/recognition.py,sha256=bXNkHqJUgPx10lhPfMBK7B0wmpLd20-MFbuGJXAGW2w,1881
|
|
23
|
-
doctr/datasets/sroie.py,sha256=
|
|
24
|
-
doctr/datasets/svhn.py,sha256=
|
|
25
|
-
doctr/datasets/svt.py,sha256=
|
|
26
|
-
doctr/datasets/synthtext.py,sha256=
|
|
27
|
-
doctr/datasets/utils.py,sha256=
|
|
28
|
-
doctr/datasets/vocabs.py,sha256
|
|
29
|
-
doctr/datasets/wildreceipt.py,sha256=
|
|
23
|
+
doctr/datasets/sroie.py,sha256=2FJawrbG0evONbOkiS9ns5zoHQPOGMrsUYkU7SuQtxo,4442
|
|
24
|
+
doctr/datasets/svhn.py,sha256=VbHt51ZC3Y7t9sp3E-rdXryPkjB0MVV3WEyMwgxCXDY,5767
|
|
25
|
+
doctr/datasets/svt.py,sha256=2pIM8GIPXUXqzMKz5p_bKxM_7IlnOyjOhQZ4A2x2fY8,5054
|
|
26
|
+
doctr/datasets/synthtext.py,sha256=AKReG9jprETBrc8HEQ5EbMeBuf3rHq3nM3z4nrwbc7c,5925
|
|
27
|
+
doctr/datasets/utils.py,sha256=Mz6ErQPhEAn_ogJ3-1L-7A0PTqtQicuzbtokBkEgTEI,7753
|
|
28
|
+
doctr/datasets/vocabs.py,sha256=-NL0lJqSK6ECj2sJBe4mCcT-NyrMybZLXzDUvRIQlEo,4143
|
|
29
|
+
doctr/datasets/wildreceipt.py,sha256=Ce9Eqv2rgOhinlMnT15To1X9KKv0XOqi4C_e4mNWNSw,5130
|
|
30
30
|
doctr/datasets/datasets/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
31
31
|
doctr/datasets/datasets/base.py,sha256=TUK8GMosZnkTBsJm8zOc7AIy3FUMIV2vOTu3YbTjnSQ,4874
|
|
32
32
|
doctr/datasets/datasets/pytorch.py,sha256=M75erZOBP_Cg05Vk4D01yQZSyyqEbN0omHch1afe4pY,2039
|
|
@@ -36,7 +36,7 @@ doctr/datasets/generator/base.py,sha256=SpzbEqVYUpPZr5NTgccXtpw_yD37WxJ0Jx4HDwa_
|
|
|
36
36
|
doctr/datasets/generator/pytorch.py,sha256=HUmdHUm7rU84gXv18BeXdYTDBCHabtw21Xdpm-p02ik,2134
|
|
37
37
|
doctr/datasets/generator/tensorflow.py,sha256=Yj9vgEjdNnOwrM4Ew2w5TfkEwNXgy6ACZuEnExZcUMs,2229
|
|
38
38
|
doctr/io/__init__.py,sha256=kS7tKGFvzxOCWBOun-Y8n9CsziwRKNynjwpZEUUI03M,106
|
|
39
|
-
doctr/io/elements.py,sha256
|
|
39
|
+
doctr/io/elements.py,sha256=-RkM5WQG72CA3zUUYs7Epa8M0jh3-qrGaN9nke0hj-g,25061
|
|
40
40
|
doctr/io/html.py,sha256=cXDCMKztiFafCdPy_AMU5Ven52q1A0FJWXhPnJMLHGg,719
|
|
41
41
|
doctr/io/pdf.py,sha256=V2GAwPFvGAjBqhT85Y6uVejlLy0vn5S94_0ZJVPQLiE,1350
|
|
42
42
|
doctr/io/reader.py,sha256=68pr31K19Tej6UHAqhfAlD11paGX6h3IeSvEje8GaOg,2829
|
|
@@ -46,32 +46,32 @@ doctr/io/image/pytorch.py,sha256=13F8tFXultegdF9yZqCMXSM9Jn4ojwT9YLYWMF5nZ6M,331
|
|
|
46
46
|
doctr/io/image/tensorflow.py,sha256=47a-zW4VoAeaoihTsppFJlFyK_8dvGzjGF1GB3Ti0Ig,3213
|
|
47
47
|
doctr/models/__init__.py,sha256=yn_mXUL8B5L27Uaat1rLGRQHgLR8VLVxzBuPfNuN1YE,124
|
|
48
48
|
doctr/models/_utils.py,sha256=zt-wXy0OP8Mw9JhnCLPFhX5d5efdcijgPlLnVKBdRhw,7540
|
|
49
|
-
doctr/models/builder.py,sha256=
|
|
49
|
+
doctr/models/builder.py,sha256=b_HeUevO_GoVgPZYmD2qg06Jx_PvSmNTETdsiNSoVM0,20661
|
|
50
50
|
doctr/models/core.py,sha256=SMXYuX1o_Q2zrjcF-vzfqj7IkLKlDyzEOc-4HeiEZ8g,501
|
|
51
51
|
doctr/models/zoo.py,sha256=G52XurwqjVdLRHOZWrEu2QbmZQWsCPdZVIPu874gL_E,9318
|
|
52
52
|
doctr/models/classification/__init__.py,sha256=HeErE29Bs1-91FtS9HqNghHe89XZGzI_11MO_E6GJ7s,154
|
|
53
|
-
doctr/models/classification/zoo.py,sha256=
|
|
53
|
+
doctr/models/classification/zoo.py,sha256=BGPAt1-6ma7BfPU6Fw4z8cMOnbbIq5vY5A7Nxspuggg,3927
|
|
54
54
|
doctr/models/classification/magc_resnet/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
55
55
|
doctr/models/classification/magc_resnet/pytorch.py,sha256=UY65c3_Ux2o4hOm_USEQYP7O69bj76qbUB-PCb_0Lng,5603
|
|
56
|
-
doctr/models/classification/magc_resnet/tensorflow.py,sha256=
|
|
56
|
+
doctr/models/classification/magc_resnet/tensorflow.py,sha256=DGyzKwDtPqVcmDkvHzZJlMxY8hH80cphCMtTeA5KIkw,6761
|
|
57
57
|
doctr/models/classification/mobilenet/__init__.py,sha256=FBZ2YT2Cq3mj6vpDC3ff5TcMpagNWFhwxQ_brdsgBqo,172
|
|
58
|
-
doctr/models/classification/mobilenet/pytorch.py,sha256=
|
|
59
|
-
doctr/models/classification/mobilenet/tensorflow.py,sha256=
|
|
58
|
+
doctr/models/classification/mobilenet/pytorch.py,sha256=p3bp9CwDo5-1sfRP5G33Gl66iAlcwlfUJwhCPwTFzsY,9392
|
|
59
|
+
doctr/models/classification/mobilenet/tensorflow.py,sha256=1J7mWvPmdMum0NZatTXwtV8nSoEoTBV4jU_ZnNIWv_w,15942
|
|
60
60
|
doctr/models/classification/predictor/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
61
|
-
doctr/models/classification/predictor/pytorch.py,sha256=
|
|
62
|
-
doctr/models/classification/predictor/tensorflow.py,sha256=
|
|
61
|
+
doctr/models/classification/predictor/pytorch.py,sha256=YwWCO3ZsxYe-W6WlEtVVDmDxKgbk-MXbEgyb0VwsPho,2640
|
|
62
|
+
doctr/models/classification/predictor/tensorflow.py,sha256=EQq_00FdJ_2uUIsSo5nqkcHFA1dgv6TL_Haw6ZEfH0A,2369
|
|
63
63
|
doctr/models/classification/resnet/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
64
64
|
doctr/models/classification/resnet/pytorch.py,sha256=VVkNit3HEezRfOPw8wfuiEEAUCEnYSauCvWaCFF3cwo,12442
|
|
65
|
-
doctr/models/classification/resnet/tensorflow.py,sha256=
|
|
65
|
+
doctr/models/classification/resnet/tensorflow.py,sha256=Ivof4ki1VQILXiQG6w3IJ8n7x8oaBM5GJ-x4Gjmu6RI,13816
|
|
66
66
|
doctr/models/classification/textnet/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
67
67
|
doctr/models/classification/textnet/pytorch.py,sha256=z2BwTM-7ClEzanHWXB5Uie-_X62k1OZZ2Y6m08V_zUM,10163
|
|
68
|
-
doctr/models/classification/textnet/tensorflow.py,sha256=
|
|
68
|
+
doctr/models/classification/textnet/tensorflow.py,sha256=YuqLBbi95uGMIP7o_l2RuMhanKCEy7vmGg4mNoOAjkc,10100
|
|
69
69
|
doctr/models/classification/vgg/__init__.py,sha256=FBZ2YT2Cq3mj6vpDC3ff5TcMpagNWFhwxQ_brdsgBqo,172
|
|
70
70
|
doctr/models/classification/vgg/pytorch.py,sha256=b_q9oWmtlazD4uk9DFYezWgsgAwwN-3ewEz15E2cJR4,3136
|
|
71
|
-
doctr/models/classification/vgg/tensorflow.py,sha256=
|
|
71
|
+
doctr/models/classification/vgg/tensorflow.py,sha256=fqbU_SO0DQA7vuJa-L67rEg9sw3S4oHIwXSOZ-vtxfM,4387
|
|
72
72
|
doctr/models/classification/vit/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
73
73
|
doctr/models/classification/vit/pytorch.py,sha256=770ZrCPX7LlVUjE9XNFrzcb2i_0lHStJ8Q4vXEhXEHs,6096
|
|
74
|
-
doctr/models/classification/vit/tensorflow.py,sha256=
|
|
74
|
+
doctr/models/classification/vit/tensorflow.py,sha256=W2pbZH-4HTbcHWebNwj2Aq2QfUj8YEV1a_U4VoQUmgA,6173
|
|
75
75
|
doctr/models/detection/__init__.py,sha256=RqSz5beehLiqhW0PwFLFmCfTyMjofO-0umcQJLDMHjY,105
|
|
76
76
|
doctr/models/detection/core.py,sha256=K2uQTIu3ttgxj7YF7i1a-X6djIGCSFjZnQQ57JQBDv0,3566
|
|
77
77
|
doctr/models/detection/zoo.py,sha256=OJP8K3CKzLRmhaSe0CtvFPioXBcZcvf8__As_6xflFo,3332
|
|
@@ -82,92 +82,92 @@ doctr/models/detection/_utils/tensorflow.py,sha256=9D2ita4ZqJus2byLe7bkSIhyYExAi
|
|
|
82
82
|
doctr/models/detection/differentiable_binarization/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
83
83
|
doctr/models/detection/differentiable_binarization/base.py,sha256=fFnXH8iGLXFk4La5G19rqvId_7RDOh5H-v_IRyb1hA0,16432
|
|
84
84
|
doctr/models/detection/differentiable_binarization/pytorch.py,sha256=nYOLVLsLF4zrnXK9u6mTPue7X2JR7WQe2gUb_UMDI6I,15955
|
|
85
|
-
doctr/models/detection/differentiable_binarization/tensorflow.py,sha256=
|
|
85
|
+
doctr/models/detection/differentiable_binarization/tensorflow.py,sha256=XWZr1jB9i487LcrUphn7tZrZTWwJ_T3VaBvN6my-Z4c,15277
|
|
86
86
|
doctr/models/detection/fast/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
87
87
|
doctr/models/detection/fast/base.py,sha256=Ydm8fzKwYO_NBMnGazAYg1hpzlXZcRWJ-oKGir36DsE,10927
|
|
88
88
|
doctr/models/detection/fast/pytorch.py,sha256=4FYCaMZ2vzr_j4Phu2bOXs73L_Cfvgu4LDE0Q7m8hz0,16143
|
|
89
|
-
doctr/models/detection/fast/tensorflow.py,sha256=
|
|
89
|
+
doctr/models/detection/fast/tensorflow.py,sha256=ZzEtP--oSXc21hCb6_sGllcexTb3wBvRUuoU8FLbnE8,15904
|
|
90
90
|
doctr/models/detection/linknet/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
91
91
|
doctr/models/detection/linknet/base.py,sha256=R12TMBNeOsY_UTjSFbPr7-FmLsMIJSwxdHc3e3pFLKw,10617
|
|
92
92
|
doctr/models/detection/linknet/pytorch.py,sha256=sodWXaCDv1taRl3g6lgwxitvhU-ZszfN-OIofsorkp8,13810
|
|
93
|
-
doctr/models/detection/linknet/tensorflow.py,sha256=
|
|
93
|
+
doctr/models/detection/linknet/tensorflow.py,sha256=tZquu24-mSNe_SPg7Hsar_Q1g1__b7p5MHx9js3-oaM,13240
|
|
94
94
|
doctr/models/detection/predictor/__init__.py,sha256=lwmH917kRdbUUBsE02fELIuXQNRNePpIj3iK43ey6Bg,159
|
|
95
95
|
doctr/models/detection/predictor/pytorch.py,sha256=sNuMGvcKQeeOcW8QG-xWK0W59DohGYxXlKv0yK2HcNQ,2689
|
|
96
|
-
doctr/models/detection/predictor/tensorflow.py,sha256=
|
|
96
|
+
doctr/models/detection/predictor/tensorflow.py,sha256=MwsrIDDfqbU0llJ9RAW8N1QzZA2dmoOmMMj4SGF0tr8,2448
|
|
97
97
|
doctr/models/factory/__init__.py,sha256=cKPoH2V2157lLMTR2zsljG3_IQHziodqR-XK_LG0D_I,19
|
|
98
|
-
doctr/models/factory/hub.py,sha256=
|
|
98
|
+
doctr/models/factory/hub.py,sha256=_JJMgJGM-eT6kFtq8SgGIbmvnpGwRe2vUN-isei6xFg,7454
|
|
99
99
|
doctr/models/kie_predictor/__init__.py,sha256=lwmH917kRdbUUBsE02fELIuXQNRNePpIj3iK43ey6Bg,159
|
|
100
|
-
doctr/models/kie_predictor/base.py,sha256=
|
|
101
|
-
doctr/models/kie_predictor/pytorch.py,sha256=
|
|
102
|
-
doctr/models/kie_predictor/tensorflow.py,sha256=
|
|
100
|
+
doctr/models/kie_predictor/base.py,sha256=6ZFsOYWbyd6aN3OAX32ZaOHuDLeQT8_4b9phHb38McY,2316
|
|
101
|
+
doctr/models/kie_predictor/pytorch.py,sha256=hwPhjldL01h6HiMRQ6Kh69JzYql9iD211fUrEBIPfp4,8179
|
|
102
|
+
doctr/models/kie_predictor/tensorflow.py,sha256=ei-qEj8B9NooWnq4Pa1MIfkBePqAjX0peDeLO25XN_g,7864
|
|
103
103
|
doctr/models/modules/__init__.py,sha256=pouP7obVTu4p6aHkyaqa1yHKbynpvT0Hgo-LO_1U2R4,83
|
|
104
104
|
doctr/models/modules/layers/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
105
105
|
doctr/models/modules/layers/pytorch.py,sha256=UIidAIKfXQxlX9MbVWADLGrrPE7J496BMfgRHR73jMY,6853
|
|
106
106
|
doctr/models/modules/layers/tensorflow.py,sha256=etXoKXuIeFr_LD-L0x0fhVlL-cUrjL5vFTh4cmci2P8,7145
|
|
107
107
|
doctr/models/modules/transformer/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
108
108
|
doctr/models/modules/transformer/pytorch.py,sha256=93wDIrV7odRORV_wOLFNsw-QSH_COjUcp9J55PPp_qA,7664
|
|
109
|
-
doctr/models/modules/transformer/tensorflow.py,sha256=
|
|
109
|
+
doctr/models/modules/transformer/tensorflow.py,sha256=eJjxb9B0PYD4R4ga0VQjY0RKrGyzJhOty6i5TFNNBV0,9074
|
|
110
110
|
doctr/models/modules/vision_transformer/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
111
|
-
doctr/models/modules/vision_transformer/pytorch.py,sha256=
|
|
112
|
-
doctr/models/modules/vision_transformer/tensorflow.py,sha256=
|
|
111
|
+
doctr/models/modules/vision_transformer/pytorch.py,sha256=h1L7w1SIKIQ9eDU8WEXzntdum-tWMgiVnuqU_Vz81cI,3968
|
|
112
|
+
doctr/models/modules/vision_transformer/tensorflow.py,sha256=OENBhKQf3rw6iUW2-h63pH8aCapTG5GyPN8pOtMGR7A,4197
|
|
113
113
|
doctr/models/predictor/__init__.py,sha256=lwmH917kRdbUUBsE02fELIuXQNRNePpIj3iK43ey6Bg,159
|
|
114
|
-
doctr/models/predictor/base.py,sha256=
|
|
115
|
-
doctr/models/predictor/pytorch.py,sha256=
|
|
116
|
-
doctr/models/predictor/tensorflow.py,sha256=
|
|
114
|
+
doctr/models/predictor/base.py,sha256=FQqIG7H7ZTBGLWKmJtJ1mcAgSidlge07iZu3XeFpQD4,8754
|
|
115
|
+
doctr/models/predictor/pytorch.py,sha256=LWlpgkk16gLS03uUS2TlO56YHEcZVbGec413qCxU1lI,6703
|
|
116
|
+
doctr/models/predictor/tensorflow.py,sha256=y11toyEbZV_nVa2FfX5QchdX5o9xn9eX0pDwHWgl26k,6465
|
|
117
117
|
doctr/models/preprocessor/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
118
118
|
doctr/models/preprocessor/pytorch.py,sha256=blJVqP1Xsa5GBX4pWrmaHJetCjP08Im8fry7BzLks-U,4877
|
|
119
|
-
doctr/models/preprocessor/tensorflow.py,sha256=
|
|
119
|
+
doctr/models/preprocessor/tensorflow.py,sha256=1DvrgdReXqwj6QKYTHhMYzRE3RmrOQzBGC-6odTRVvg,4643
|
|
120
120
|
doctr/models/recognition/__init__.py,sha256=902nfVyvjOuUGHDKSGZgoS0fKC52J3jcUJQJhIpvOIY,124
|
|
121
121
|
doctr/models/recognition/core.py,sha256=dbg8SebgfK8CPHXR-7rzmCI9XMLXmWW0jLd1yLLv_34,1593
|
|
122
122
|
doctr/models/recognition/utils.py,sha256=GhNehWmCjl3GJ1ZFneA3cBRrZZk36856uU5i727FaQg,3550
|
|
123
123
|
doctr/models/recognition/zoo.py,sha256=GFe7TikjfjF5nxuINrFJP7jK3hqan44kjNWoIFyYylA,2506
|
|
124
124
|
doctr/models/recognition/crnn/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
125
125
|
doctr/models/recognition/crnn/pytorch.py,sha256=AE8Ey-Z5VZNGUldL-crbMdyKI__OUMBmn8nYC2790Pc,11802
|
|
126
|
-
doctr/models/recognition/crnn/tensorflow.py,sha256=
|
|
126
|
+
doctr/models/recognition/crnn/tensorflow.py,sha256=CgAU0VTG7nI-fNMsQuEY6XhyWkSvvYnFI2LUoztFbiA,11885
|
|
127
127
|
doctr/models/recognition/master/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
128
128
|
doctr/models/recognition/master/base.py,sha256=5yQ0mUaS_ZWmUUzTAobgAlNS3Vp90PFvrzAcQXUF758,1540
|
|
129
129
|
doctr/models/recognition/master/pytorch.py,sha256=-RpyO6mBW3ql-BjNjnh5T-EMCvxIHLIJSUkB1lzX7Uw,12260
|
|
130
|
-
doctr/models/recognition/master/tensorflow.py,sha256=
|
|
130
|
+
doctr/models/recognition/master/tensorflow.py,sha256=vXHDyWzU3K2P8fOX_6IwWWYKAV_LGPg8y5domYWf61I,12368
|
|
131
131
|
doctr/models/recognition/parseq/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
132
132
|
doctr/models/recognition/parseq/base.py,sha256=8MMqibB8zZLw2qU-iyx79Zpr4MdEtbnF3f3ikfLrBjU,1534
|
|
133
133
|
doctr/models/recognition/parseq/pytorch.py,sha256=PAojvRwtz1qzKzW3JI_tTm1pco7mPHuX-Y-lah5mZOk,19927
|
|
134
|
-
doctr/models/recognition/parseq/tensorflow.py,sha256=
|
|
134
|
+
doctr/models/recognition/parseq/tensorflow.py,sha256=ormv2HpA7dLaajBQGDLN6jGGEMHLQCGpbquCeszxj3U,21816
|
|
135
135
|
doctr/models/recognition/predictor/__init__.py,sha256=lwmH917kRdbUUBsE02fELIuXQNRNePpIj3iK43ey6Bg,159
|
|
136
136
|
doctr/models/recognition/predictor/_utils.py,sha256=y6hDoGS8reluLmx8JmTxM2f1uhlYnjOouh0BOr6wNTA,3389
|
|
137
137
|
doctr/models/recognition/predictor/pytorch.py,sha256=snMHU0GopDEJ9HDdzpVxuvfJxVL-91Le-rc_dSqKCA0,2785
|
|
138
138
|
doctr/models/recognition/predictor/tensorflow.py,sha256=o4Mhbxf9BUofqTV863U7-Zi0H77imX3LfhqzYLc2m4k,2549
|
|
139
139
|
doctr/models/recognition/sar/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
140
140
|
doctr/models/recognition/sar/pytorch.py,sha256=pN68aLfuqWKN6dexxeMy3DFJq1YP-MWUsUFj4BBHtXs,15118
|
|
141
|
-
doctr/models/recognition/sar/tensorflow.py,sha256=
|
|
141
|
+
doctr/models/recognition/sar/tensorflow.py,sha256=CqxQp9zNXxvWsAcgFMlwB40prbtIkUMTWPWYnwgSiOk,15281
|
|
142
142
|
doctr/models/recognition/vitstr/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
143
143
|
doctr/models/recognition/vitstr/base.py,sha256=Xt7hq45tq999boF0XgW62x_cX5wJXx7VLxWA9H06U_o,1488
|
|
144
144
|
doctr/models/recognition/vitstr/pytorch.py,sha256=21N7PJbaYmO_mQKW8uS0MGXTtTyFr4QYWRsX6PTKhtU,9568
|
|
145
|
-
doctr/models/recognition/vitstr/tensorflow.py,sha256=
|
|
145
|
+
doctr/models/recognition/vitstr/tensorflow.py,sha256=Ighm92HE1h5A0Xv4fJR0wcwygxGehBmiz85XpFEDVsI,9915
|
|
146
146
|
doctr/models/utils/__init__.py,sha256=zwLK6mpproUGFH-1PUNiQyoR9IrAAakj7RgOiTJaBjk,200
|
|
147
|
-
doctr/models/utils/pytorch.py,sha256=
|
|
148
|
-
doctr/models/utils/tensorflow.py,sha256=
|
|
147
|
+
doctr/models/utils/pytorch.py,sha256=RiCNOVnOoMMXboOcyOxMnmi_88x40Ed9q8gNrq8qOZM,5520
|
|
148
|
+
doctr/models/utils/tensorflow.py,sha256=JYGH16yYn_8cy1g0NEcizDzRhSaopAYH-K4ooCwt7Hk,6179
|
|
149
149
|
doctr/transforms/__init__.py,sha256=0VHbvUZ7llFd1e_7_JdWTaxYMCvaR6KbUJaYJequmQI,23
|
|
150
150
|
doctr/transforms/functional/__init__.py,sha256=FBZ2YT2Cq3mj6vpDC3ff5TcMpagNWFhwxQ_brdsgBqo,172
|
|
151
151
|
doctr/transforms/functional/base.py,sha256=c2PYwU4ZDDDwTGqgaIdOTP71XZ7lo458yc3CimYxiWQ,6943
|
|
152
|
-
doctr/transforms/functional/pytorch.py,sha256=
|
|
152
|
+
doctr/transforms/functional/pytorch.py,sha256=_7ZjWlwadGOvh4Qf--0mWYbtzK7A3Crbgo-2yNIF1yg,5031
|
|
153
153
|
doctr/transforms/functional/tensorflow.py,sha256=35dYnCtA9A9SvjndEvckxD8rK_uZ1_4BTgBZ7WiBtGI,9959
|
|
154
154
|
doctr/transforms/modules/__init__.py,sha256=a4GXc5YZWt26eeBKo2HqLmbDn1_qo-uko6GoPNrniC0,221
|
|
155
155
|
doctr/transforms/modules/base.py,sha256=fwaXQhjuR514-fl4FqVZnb_NsOxkRtE8Yh_hiE2uCTU,9970
|
|
156
|
-
doctr/transforms/modules/pytorch.py,sha256=
|
|
157
|
-
doctr/transforms/modules/tensorflow.py,sha256=
|
|
156
|
+
doctr/transforms/modules/pytorch.py,sha256=J-6QwbQYD7mq0ohEvIPOCvNqlB-Wvd7mzMkYxGudyqo,10872
|
|
157
|
+
doctr/transforms/modules/tensorflow.py,sha256=zcTESs-A92Ktrqyumb6MeNb5NaCQqt1wzJ04uBb6T8U,20440
|
|
158
158
|
doctr/utils/__init__.py,sha256=uQY9ibZ24V896fmihIsK23QOIZdKtk0HyKoCVJ_lLuM,95
|
|
159
159
|
doctr/utils/common_types.py,sha256=KXG-4mvL1MPmkrjuhCs8vAfiaBmdGRmt2yQcNlgALM8,584
|
|
160
160
|
doctr/utils/data.py,sha256=26iN_Ra1OJD_LHIEbefADMxU2yVtCpu3gYdhCW5K9B4,4280
|
|
161
161
|
doctr/utils/fonts.py,sha256=QqtfTDNCEKPb1drUbpXEhVDxtHWhKCKcGHC1l_t2_iI,1336
|
|
162
|
-
doctr/utils/geometry.py,sha256=
|
|
163
|
-
doctr/utils/metrics.py,sha256
|
|
162
|
+
doctr/utils/geometry.py,sha256=Lwj9h8P5p7zLQDsf03nxrBRRyvVJRCnS1RINsSELafw,19641
|
|
163
|
+
doctr/utils/metrics.py,sha256=-9Ks1myFqa3NPfLKMYUxuH09Bd-dz_VZLzNrM95j5c4,20552
|
|
164
164
|
doctr/utils/multithreading.py,sha256=iEM6o_qjutH-CxFTz7K1VQseYpVaHH3Hpw_yNDoQBSw,1989
|
|
165
|
-
doctr/utils/reconstitution.py,sha256=
|
|
165
|
+
doctr/utils/reconstitution.py,sha256=LPujIo2NMduqnfXH6gFcT5LZXnYgrjdq3X-RvzLJdlA,7323
|
|
166
166
|
doctr/utils/repr.py,sha256=3GdMquo1NtwNkQPoB-nmDm_AFmU3sLc4T3VfGck9uoQ,2111
|
|
167
167
|
doctr/utils/visualization.py,sha256=L6UXyxecH2NVSA_u-OL0_TJ0HGLD5ROAyEaL59I7buI,13277
|
|
168
|
-
python_doctr-0.
|
|
169
|
-
python_doctr-0.
|
|
170
|
-
python_doctr-0.
|
|
171
|
-
python_doctr-0.
|
|
172
|
-
python_doctr-0.
|
|
173
|
-
python_doctr-0.
|
|
168
|
+
python_doctr-0.10.0.dist-info/LICENSE,sha256=75RTSsXOsAYhGpxsHc9U41ep6GS7vrUPufeekgoeOXM,11336
|
|
169
|
+
python_doctr-0.10.0.dist-info/METADATA,sha256=aYC4njpsGWuHN6z2qS_n3PmBJ4mftnzHBV5tKoVLvf4,33350
|
|
170
|
+
python_doctr-0.10.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
171
|
+
python_doctr-0.10.0.dist-info/top_level.txt,sha256=lCgp4pmjPI3HYph62XhfzA3jRwM715kGtJPmqIUJ9t8,6
|
|
172
|
+
python_doctr-0.10.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
173
|
+
python_doctr-0.10.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|