openocr-python 0.0.9__py3-none-any.whl → 0.1.0.dev0__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.
- openocr/__init__.py +35 -1
- openocr/configs/dataset/rec/evaluation.yaml +41 -0
- openocr/configs/dataset/rec/ltb.yaml +9 -0
- openocr/configs/dataset/rec/mjsynth.yaml +11 -0
- openocr/configs/dataset/rec/openvino.yaml +25 -0
- openocr/configs/dataset/rec/ost.yaml +17 -0
- openocr/configs/dataset/rec/synthtext.yaml +7 -0
- openocr/configs/dataset/rec/test.yaml +77 -0
- openocr/configs/dataset/rec/textocr.yaml +13 -0
- openocr/configs/dataset/rec/textocr_horizontal.yaml +13 -0
- openocr/configs/dataset/rec/union14m_b.yaml +47 -0
- openocr/configs/dataset/rec/union14m_l_filtered.yaml +35 -0
- openocr/configs/rec/cmer/cmer.yml +127 -0
- openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_base.yml +152 -0
- openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_small.yml +152 -0
- openocr/configs/rec/unirec/focalsvtr_ardecoder_unirec.yml +114 -0
- openocr/configs/rec/unirec/opendoc_pipeline.yml +105 -0
- openocr/demo_gradio.py +28 -8
- openocr/demo_opendoc.py +572 -0
- openocr/demo_unirec.py +392 -0
- openocr/opendet/losses/__init__.py +5 -7
- openocr/opendet/preprocess/crop_resize.py +2 -1
- openocr/openocr.py +685 -0
- openocr/openrec/losses/__init__.py +8 -3
- openocr/openrec/losses/cmer_loss.py +12 -0
- openocr/openrec/losses/mdiff_loss.py +11 -0
- openocr/openrec/losses/unirec_loss.py +12 -0
- openocr/openrec/metrics/__init__.py +4 -1
- openocr/openrec/metrics/rec_metric_cmer.py +328 -0
- openocr/openrec/modeling/cmer_modeling/modeling_cmer.py +643 -0
- openocr/openrec/modeling/decoders/__init__.py +1 -0
- openocr/openrec/modeling/decoders/ctc_decoder.py +1 -1
- openocr/openrec/modeling/decoders/dan_decoder.py +4 -4
- openocr/openrec/modeling/decoders/dptr_parseq_clip_b_decoder.py +1563 -1398
- openocr/openrec/modeling/decoders/mdiff_decoder.py +587 -0
- openocr/openrec/modeling/decoders/smtr_decoder.py +99 -48
- openocr/openrec/modeling/unirec_modeling/configuration_unirec.py +166 -0
- openocr/openrec/modeling/unirec_modeling/modeling_unirec.py +433 -0
- openocr/openrec/optimizer/__init__.py +4 -3
- openocr/openrec/optimizer/lr.py +49 -0
- openocr/openrec/postprocess/__init__.py +2 -0
- openocr/openrec/postprocess/abinet_postprocess.py +1 -1
- openocr/openrec/postprocess/ar_postprocess.py +1 -1
- openocr/openrec/postprocess/cmer_postprocess.py +86 -0
- openocr/openrec/postprocess/cppd_postprocess.py +1 -1
- openocr/openrec/postprocess/igtr_postprocess.py +1 -1
- openocr/openrec/postprocess/lister_postprocess.py +1 -1
- openocr/openrec/postprocess/mgp_postprocess.py +1 -1
- openocr/openrec/postprocess/nrtr_postprocess.py +2 -2
- openocr/openrec/postprocess/smtr_postprocess.py +1 -1
- openocr/openrec/postprocess/srn_postprocess.py +1 -1
- openocr/openrec/postprocess/unirec_postprocess.py +58 -0
- openocr/openrec/postprocess/visionlan_postprocess.py +1 -1
- openocr/openrec/preprocess/__init__.py +5 -0
- openocr/openrec/preprocess/ce_label_encode.py +1 -1
- openocr/openrec/preprocess/cmer_label_encode.py +1025 -0
- openocr/openrec/preprocess/ctc_label_encode.py +1 -1
- openocr/openrec/preprocess/dptr_label_encode.py +177 -157
- openocr/openrec/preprocess/igtr_label_encode.py +4 -2
- openocr/openrec/preprocess/mdiff_label_encode.py +312 -0
- openocr/openrec/preprocess/rec_aug.py +128 -2
- openocr/openrec/preprocess/resize.py +57 -0
- openocr/openrec/preprocess/unirec_label_encode.py +62 -0
- openocr/tools/data/__init__.py +78 -55
- openocr/tools/data/cmer_web_dataset.py +310 -0
- openocr/tools/data/native_size_dataset.py +753 -0
- openocr/tools/data/native_size_sampler.py +158 -0
- openocr/tools/data/ratio_dataset_tvresize.py +2 -0
- openocr/tools/data/ratio_sampler.py +2 -1
- openocr/tools/download/download_dataset.py +38 -0
- openocr/tools/download/utils.py +28 -0
- openocr/tools/download_example_images.py +236 -0
- openocr/tools/engine/trainer.py +155 -39
- openocr/tools/eval_rec_all_ch.py +2 -2
- openocr/tools/infer_det.py +20 -2
- openocr/tools/infer_doc.py +898 -0
- openocr/tools/infer_doc_onnx.py +1172 -0
- openocr/tools/infer_e2e.py +27 -10
- openocr/tools/infer_rec.py +64 -15
- openocr/tools/infer_unirec_onnx.py +730 -0
- openocr/tools/to_markdown.py +468 -0
- openocr/tools/utils/ckpt.py +17 -5
- openocr/tools/utils/opendoc_onnx_utils/utils.py +1052 -0
- openocr_python-0.1.0.dev0.dist-info/METADATA +324 -0
- {openocr_python-0.0.9.dist-info → openocr_python-0.1.0.dev0.dist-info}/RECORD +89 -45
- {openocr_python-0.0.9.dist-info → openocr_python-0.1.0.dev0.dist-info}/WHEEL +1 -1
- openocr_python-0.1.0.dev0.dist-info/entry_points.txt +2 -0
- openocr_python-0.0.9.dist-info/METADATA +0 -149
- /openocr_python-0.0.9.dist-info/LICENCE → /openocr_python-0.1.0.dev0.dist-info/licenses/LICENSE +0 -0
- {openocr_python-0.0.9.dist-info → openocr_python-0.1.0.dev0.dist-info}/top_level.txt +0 -0
|
@@ -33,7 +33,7 @@ class SMTRLabelDecode(BaseRecLabelDecode):
|
|
|
33
33
|
if batch is None:
|
|
34
34
|
return text
|
|
35
35
|
label = batch[1]
|
|
36
|
-
label = self.decode(label[:, 1:]
|
|
36
|
+
label = self.decode(label[:, 1:])
|
|
37
37
|
return text, label
|
|
38
38
|
|
|
39
39
|
def add_special_char(self, dict_character):
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from .ctc_postprocess import BaseRecLabelDecode
|
|
3
|
+
|
|
4
|
+
rules = [
|
|
5
|
+
(r'-<\|sn\|>', ''),
|
|
6
|
+
(r' <\|sn\|>', ' '),
|
|
7
|
+
(r'<\|sn\|>', ' '),
|
|
8
|
+
(r'<\|unk\|>', ''),
|
|
9
|
+
(r'<s>', ''),
|
|
10
|
+
(r'</s>', ''),
|
|
11
|
+
(r'\uffff', ''),
|
|
12
|
+
(r'_{4,}', '___'),
|
|
13
|
+
(r'\.{4,}', '...'),
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def clean_special_tokens(text):
|
|
18
|
+
text = text.replace('Ġ',
|
|
19
|
+
' ').replace('Ċ', '\n').replace('<|bos|>', '').replace(
|
|
20
|
+
'<|eos|>', '').replace('<|pad|>', '')
|
|
21
|
+
for rule in rules:
|
|
22
|
+
text = re.sub(rule[0], rule[1], text)
|
|
23
|
+
return text
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class UniRecLabelDecode(BaseRecLabelDecode):
|
|
27
|
+
"""Convert between text-label and text-index."""
|
|
28
|
+
SPACE = '[s]'
|
|
29
|
+
GO = '[GO]'
|
|
30
|
+
list_token = [GO, SPACE]
|
|
31
|
+
|
|
32
|
+
def __init__(self,
|
|
33
|
+
character_dict_path=None,
|
|
34
|
+
use_space_char=False,
|
|
35
|
+
tokenizer_path='./configs/rec/unirec/unirec-0.1b',
|
|
36
|
+
**kwargs):
|
|
37
|
+
super(UniRecLabelDecode, self).__init__(character_dict_path,
|
|
38
|
+
use_space_char)
|
|
39
|
+
from transformers import AutoTokenizer
|
|
40
|
+
self.tokenizer = AutoTokenizer.from_pretrained(tokenizer_path)
|
|
41
|
+
|
|
42
|
+
def __call__(self, preds, batch=None, *args, **kwargs):
|
|
43
|
+
result_list = []
|
|
44
|
+
pred_ids = preds
|
|
45
|
+
res = [
|
|
46
|
+
''.join(self.tokenizer.convert_ids_to_tokens(seq.tolist()))
|
|
47
|
+
for seq in pred_ids
|
|
48
|
+
]
|
|
49
|
+
for i in range(len(res)):
|
|
50
|
+
res[i] = clean_special_tokens(res[i])
|
|
51
|
+
result_list.append(
|
|
52
|
+
(res[i],
|
|
53
|
+
0.0)) # Assuming confidence is not available, set to 0.0
|
|
54
|
+
return result_list
|
|
55
|
+
|
|
56
|
+
def add_special_char(self, dict_character):
|
|
57
|
+
dict_character = self.list_token + dict_character
|
|
58
|
+
return dict_character
|
|
@@ -101,11 +101,15 @@ MODULE_MAPPING = {
|
|
|
101
101
|
'SRNLabelEncode': '.srn_label_encode',
|
|
102
102
|
'VisionLANLabelEncode': '.visionlan_label_encode',
|
|
103
103
|
'CAMLabelEncode': '.cam_label_encode',
|
|
104
|
+
'MDiffLabelEncode': '.mdiff_label_encode',
|
|
105
|
+
'UniRecLabelEncode': '.unirec_label_encode',
|
|
106
|
+
'CMERProcessor': '.cmer_label_encode',
|
|
104
107
|
'ABINetAug': '.rec_aug',
|
|
105
108
|
'BDA': '.rec_aug',
|
|
106
109
|
'PARSeqAug': '.rec_aug',
|
|
107
110
|
'PARSeqAugPIL': '.rec_aug',
|
|
108
111
|
'SVTRAug': '.rec_aug',
|
|
112
|
+
'DocAug': '.rec_aug',
|
|
109
113
|
'ABINetResize': '.resize',
|
|
110
114
|
'CDistNetResize': '.resize',
|
|
111
115
|
'LongResize': '.resize',
|
|
@@ -117,6 +121,7 @@ MODULE_MAPPING = {
|
|
|
117
121
|
'SVTRResize': '.resize',
|
|
118
122
|
'VisionLANResize': '.resize',
|
|
119
123
|
'RecDynamicResize': '.resize',
|
|
124
|
+
'NaSizeResize': '.resize',
|
|
120
125
|
}
|
|
121
126
|
|
|
122
127
|
|
|
@@ -50,7 +50,7 @@ class BaseRecLabelEncode(object):
|
|
|
50
50
|
text_re = []
|
|
51
51
|
c_current = ''
|
|
52
52
|
for c in text:
|
|
53
|
-
if not bool(re.search('[a-zA-Z0-9
|
|
53
|
+
if not bool(re.search('[a-zA-Z0-9 :*./%+١٢٣٤٥٦٧٨٩٠-]', c)):
|
|
54
54
|
if c_current != '':
|
|
55
55
|
text_re.append(c_current)
|
|
56
56
|
text_re.append(c)
|