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.
Files changed (90) hide show
  1. openocr/__init__.py +35 -1
  2. openocr/configs/dataset/rec/evaluation.yaml +41 -0
  3. openocr/configs/dataset/rec/ltb.yaml +9 -0
  4. openocr/configs/dataset/rec/mjsynth.yaml +11 -0
  5. openocr/configs/dataset/rec/openvino.yaml +25 -0
  6. openocr/configs/dataset/rec/ost.yaml +17 -0
  7. openocr/configs/dataset/rec/synthtext.yaml +7 -0
  8. openocr/configs/dataset/rec/test.yaml +77 -0
  9. openocr/configs/dataset/rec/textocr.yaml +13 -0
  10. openocr/configs/dataset/rec/textocr_horizontal.yaml +13 -0
  11. openocr/configs/dataset/rec/union14m_b.yaml +47 -0
  12. openocr/configs/dataset/rec/union14m_l_filtered.yaml +35 -0
  13. openocr/configs/rec/cmer/cmer.yml +127 -0
  14. openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_base.yml +152 -0
  15. openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_small.yml +152 -0
  16. openocr/configs/rec/unirec/focalsvtr_ardecoder_unirec.yml +114 -0
  17. openocr/configs/rec/unirec/opendoc_pipeline.yml +105 -0
  18. openocr/demo_gradio.py +28 -8
  19. openocr/demo_opendoc.py +572 -0
  20. openocr/demo_unirec.py +392 -0
  21. openocr/opendet/losses/__init__.py +5 -7
  22. openocr/opendet/preprocess/crop_resize.py +2 -1
  23. openocr/openocr.py +685 -0
  24. openocr/openrec/losses/__init__.py +8 -3
  25. openocr/openrec/losses/cmer_loss.py +12 -0
  26. openocr/openrec/losses/mdiff_loss.py +11 -0
  27. openocr/openrec/losses/unirec_loss.py +12 -0
  28. openocr/openrec/metrics/__init__.py +4 -1
  29. openocr/openrec/metrics/rec_metric_cmer.py +328 -0
  30. openocr/openrec/modeling/cmer_modeling/modeling_cmer.py +643 -0
  31. openocr/openrec/modeling/decoders/__init__.py +1 -0
  32. openocr/openrec/modeling/decoders/ctc_decoder.py +1 -1
  33. openocr/openrec/modeling/decoders/dan_decoder.py +4 -4
  34. openocr/openrec/modeling/decoders/dptr_parseq_clip_b_decoder.py +1563 -1398
  35. openocr/openrec/modeling/decoders/mdiff_decoder.py +587 -0
  36. openocr/openrec/modeling/decoders/smtr_decoder.py +99 -48
  37. openocr/openrec/modeling/unirec_modeling/configuration_unirec.py +166 -0
  38. openocr/openrec/modeling/unirec_modeling/modeling_unirec.py +433 -0
  39. openocr/openrec/optimizer/__init__.py +4 -3
  40. openocr/openrec/optimizer/lr.py +49 -0
  41. openocr/openrec/postprocess/__init__.py +2 -0
  42. openocr/openrec/postprocess/abinet_postprocess.py +1 -1
  43. openocr/openrec/postprocess/ar_postprocess.py +1 -1
  44. openocr/openrec/postprocess/cmer_postprocess.py +86 -0
  45. openocr/openrec/postprocess/cppd_postprocess.py +1 -1
  46. openocr/openrec/postprocess/igtr_postprocess.py +1 -1
  47. openocr/openrec/postprocess/lister_postprocess.py +1 -1
  48. openocr/openrec/postprocess/mgp_postprocess.py +1 -1
  49. openocr/openrec/postprocess/nrtr_postprocess.py +2 -2
  50. openocr/openrec/postprocess/smtr_postprocess.py +1 -1
  51. openocr/openrec/postprocess/srn_postprocess.py +1 -1
  52. openocr/openrec/postprocess/unirec_postprocess.py +58 -0
  53. openocr/openrec/postprocess/visionlan_postprocess.py +1 -1
  54. openocr/openrec/preprocess/__init__.py +5 -0
  55. openocr/openrec/preprocess/ce_label_encode.py +1 -1
  56. openocr/openrec/preprocess/cmer_label_encode.py +1025 -0
  57. openocr/openrec/preprocess/ctc_label_encode.py +1 -1
  58. openocr/openrec/preprocess/dptr_label_encode.py +177 -157
  59. openocr/openrec/preprocess/igtr_label_encode.py +4 -2
  60. openocr/openrec/preprocess/mdiff_label_encode.py +312 -0
  61. openocr/openrec/preprocess/rec_aug.py +128 -2
  62. openocr/openrec/preprocess/resize.py +57 -0
  63. openocr/openrec/preprocess/unirec_label_encode.py +62 -0
  64. openocr/tools/data/__init__.py +78 -55
  65. openocr/tools/data/cmer_web_dataset.py +310 -0
  66. openocr/tools/data/native_size_dataset.py +753 -0
  67. openocr/tools/data/native_size_sampler.py +158 -0
  68. openocr/tools/data/ratio_dataset_tvresize.py +2 -0
  69. openocr/tools/data/ratio_sampler.py +2 -1
  70. openocr/tools/download/download_dataset.py +38 -0
  71. openocr/tools/download/utils.py +28 -0
  72. openocr/tools/download_example_images.py +236 -0
  73. openocr/tools/engine/trainer.py +155 -39
  74. openocr/tools/eval_rec_all_ch.py +2 -2
  75. openocr/tools/infer_det.py +20 -2
  76. openocr/tools/infer_doc.py +898 -0
  77. openocr/tools/infer_doc_onnx.py +1172 -0
  78. openocr/tools/infer_e2e.py +27 -10
  79. openocr/tools/infer_rec.py +64 -15
  80. openocr/tools/infer_unirec_onnx.py +730 -0
  81. openocr/tools/to_markdown.py +468 -0
  82. openocr/tools/utils/ckpt.py +17 -5
  83. openocr/tools/utils/opendoc_onnx_utils/utils.py +1052 -0
  84. openocr_python-0.1.0.dev0.dist-info/METADATA +324 -0
  85. {openocr_python-0.0.9.dist-info → openocr_python-0.1.0.dev0.dist-info}/RECORD +89 -45
  86. {openocr_python-0.0.9.dist-info → openocr_python-0.1.0.dev0.dist-info}/WHEEL +1 -1
  87. openocr_python-0.1.0.dev0.dist-info/entry_points.txt +2 -0
  88. openocr_python-0.0.9.dist-info/METADATA +0 -149
  89. /openocr_python-0.0.9.dist-info/LICENCE → /openocr_python-0.1.0.dev0.dist-info/licenses/LICENSE +0 -0
  90. {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:].detach().cpu().numpy())
36
+ label = self.decode(label[:, 1:])
37
37
  return text, label
38
38
 
39
39
  def add_special_char(self, dict_character):
@@ -71,7 +71,7 @@ class SRNLabelDecode(BaseRecLabelDecode):
71
71
  if batch is None:
72
72
  return text
73
73
 
74
- label = batch[1].cpu().numpy()
74
+ label = batch[1]
75
75
  # print(f"label.shape:{label.shape}")
76
76
  label = self.decode(label, is_remove_duplicate=False)
77
77
  return text, label
@@ -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
@@ -77,5 +77,5 @@ class VisionLANLabelDecode(BaseRecLabelDecode):
77
77
  text.append((preds_text, float(preds_prob)))
78
78
  if batch is None:
79
79
  return text
80
- label = self.decode(label.detach().cpu().numpy())
80
+ label = self.decode(label)
81
81
  return text, label
@@ -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 :*./%+-١٢٣٤٥٦٧٨٩٠]', c)):
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)