openocr-python 0.1.0.dev0__tar.gz → 0.1.0.dev2__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.
Files changed (392) hide show
  1. {openocr_python-0.1.0.dev0/openocr_python.egg-info → openocr_python-0.1.0.dev2}/PKG-INFO +21 -30
  2. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/QUICKSTART.md +3 -6
  3. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/__init__.py +1 -1
  4. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/demo_gradio.py +5 -3
  5. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/demo_opendoc.py +7 -1
  6. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/demo_unirec.py +106 -146
  7. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_doc_onnx.py +1 -1
  8. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2/openocr_python.egg-info}/PKG-INFO +21 -30
  9. openocr_python-0.1.0.dev2/openocr_python.egg-info/requires.txt +27 -0
  10. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/pyproject.toml +18 -27
  11. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/setup.py +0 -44
  12. openocr_python-0.1.0.dev0/openocr_python.egg-info/requires.txt +0 -36
  13. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/LICENSE +0 -0
  14. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/MANIFEST.in +0 -0
  15. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/evaluation.yaml +0 -0
  16. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/ltb.yaml +0 -0
  17. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/mjsynth.yaml +0 -0
  18. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/openvino.yaml +0 -0
  19. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/ost.yaml +0 -0
  20. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/synthtext.yaml +0 -0
  21. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/test.yaml +0 -0
  22. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/textocr.yaml +0 -0
  23. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/textocr_horizontal.yaml +0 -0
  24. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/union14m_b.yaml +0 -0
  25. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/union14m_l_filtered.yaml +0 -0
  26. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/det/dbnet/repvit_db.yml +0 -0
  27. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/resnet45_trans_abinet_lang.yml +0 -0
  28. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/resnet45_trans_abinet_wo_lang.yml +0 -0
  29. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/svtrv2_abinet_lang.yml +0 -0
  30. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/svtrv2_abinet_wo_lang.yml +0 -0
  31. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/aster/resnet31_lstm_aster_tps_on.yml +0 -0
  32. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/aster/svtrv2_aster.yml +0 -0
  33. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/aster/svtrv2_aster_tps_on.yml +0 -0
  34. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/autostr/autostr_lstm_aster_tps_on.yml +0 -0
  35. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/svtrv2_busnet.yml +0 -0
  36. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/svtrv2_busnet_pretraining.yml +0 -0
  37. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/vit_busnet.yml +0 -0
  38. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/vit_busnet_pretraining.yml +0 -0
  39. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cam/convnextv2_cam_tps_on.yml +0 -0
  40. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cam/convnextv2_tiny_cam_tps_on.yml +0 -0
  41. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cam/svtrv2_cam_tps_on.yml +0 -0
  42. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cdistnet/resnet45_trans_cdistnet.yml +0 -0
  43. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cdistnet/svtrv2_cdistnet.yml +0 -0
  44. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cmer/cmer.yml +0 -0
  45. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd.yml +0 -0
  46. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd_ch.yml +0 -0
  47. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd_h8.yml +0 -0
  48. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd_syn.yml +0 -0
  49. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtrv2_cppd.yml +0 -0
  50. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/dan/resnet45_fpn_dan.yml +0 -0
  51. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/dan/svtrv2_dan.yml +0 -0
  52. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/dptr/dptr_parseq_pretrain.yml +0 -0
  53. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/focalsvtr/focalsvtr_ctc.yml +0 -0
  54. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/gtc/svtrv2_lnconv_nrtr_gtc.yml +0 -0
  55. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/gtc/svtrv2_lnconv_smtr_gtc_long_infer.yml +0 -0
  56. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/gtc/svtrv2_lnconv_smtr_gtc_smtr_long.yml +0 -0
  57. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/gtc/svtrv2_lnconv_smtr_gtc_stream.yml +0 -0
  58. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/igtr/svtr_base_ds_igtr.yml +0 -0
  59. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lister/focalsvtr_lister_wo_fem_maxratio12.yml +0 -0
  60. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lister/svtrv2_lister_wo_fem_maxratio12.yml +0 -0
  61. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtr_base_lpv.yml +0 -0
  62. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtr_base_lpv_wo_glrm.yml +0 -0
  63. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtrv2_lpv.yml +0 -0
  64. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtrv2_lpv_wo_glrm.yml +0 -0
  65. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/maerec/vit_nrtr.yml +0 -0
  66. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/matrn/resnet45_trans_matrn.yml +0 -0
  67. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/matrn/svtrv2_matrn.yml +0 -0
  68. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_base.yml +0 -0
  69. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_small.yml +0 -0
  70. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/svtrv2_mgpstr_only_char.yml +0 -0
  71. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_base_mgpstr_only_char.yml +0 -0
  72. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_large_mgpstr_only_char.yml +0 -0
  73. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_mgpstr.yml +0 -0
  74. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_mgpstr_only_char.yml +0 -0
  75. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/moran/resnet31_lstm_moran.yml +0 -0
  76. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/focalsvtr_nrtr_maxraio12.yml +0 -0
  77. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/nrtr.yml +0 -0
  78. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/svtr_base_nrtr.yml +0 -0
  79. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/svtr_base_nrtr_syn.yml +0 -0
  80. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/svtrv2_nrtr.yml +0 -0
  81. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/ote/svtr_base_h8_ote.yml +0 -0
  82. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/ote/svtr_base_ote.yml +0 -0
  83. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/parseq/focalsvtr_parseq_maxratio12.yml +0 -0
  84. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/parseq/svrtv2_parseq.yml +0 -0
  85. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/parseq/vit_parseq.yml +0 -0
  86. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/robustscanner/resnet31_robustscanner.yml +0 -0
  87. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/robustscanner/svtrv2_robustscanner.yml +0 -0
  88. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/sar/resnet31_lstm_sar.yml +0 -0
  89. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/sar/svtrv2_sar.yml +0 -0
  90. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/seed/resnet31_lstm_seed_tps_on.yml +0 -0
  91. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/focalsvtr_smtr.yml +0 -0
  92. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/focalsvtr_smtr_long.yml +0 -0
  93. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/svtrv2_smtr.yml +0 -0
  94. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/svtrv2_smtr_bi.yml +0 -0
  95. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/srn/resnet50_fpn_srn.yml +0 -0
  96. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/srn/svtrv2_srn.yml +0 -0
  97. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_ctc.yml +0 -0
  98. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_h8_ctc.yml +0 -0
  99. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_h8_rctc.yml +0 -0
  100. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_rctc.yml +0 -0
  101. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_tiny_h8_ctc.yml +0 -0
  102. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_tiny_h8_rctc.yml +0 -0
  103. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/crnn_ctc.yml +0 -0
  104. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/crnn_ctc_long.yml +0 -0
  105. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalnet_base_ctc.yml +0 -0
  106. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalnet_base_rctc.yml +0 -0
  107. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalsvtr_ctc.yml +0 -0
  108. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalsvtr_rctc.yml +0 -0
  109. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/resnet45_trans_ctc.yml +0 -0
  110. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/resnet45_trans_rctc.yml +0 -0
  111. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/svtr_base_ctc.yml +0 -0
  112. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/svtr_base_rctc.yml +0 -0
  113. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/svtrnet_ctc_syn.yml +0 -0
  114. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/vit_ctc.yml +0 -0
  115. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/vit_rctc.yml +0 -0
  116. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/repsvtr_ch.yml +0 -0
  117. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_ch.yml +0 -0
  118. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_ctc.yml +0 -0
  119. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_rctc.yml +0 -0
  120. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_small_rctc.yml +0 -0
  121. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_smtr_gtc_rctc.yml +0 -0
  122. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_smtr_gtc_rctc_ch.yml +0 -0
  123. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_smtr_gtc_rctc_infer.yml +0 -0
  124. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_tiny_rctc.yml +0 -0
  125. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/unirec/focalsvtr_ardecoder_unirec.yml +0 -0
  126. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/unirec/opendoc_pipeline.yml +0 -0
  127. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/resnet45_trans_visionlan_LA.yml +0 -0
  128. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/resnet45_trans_visionlan_LF_1.yml +0 -0
  129. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/resnet45_trans_visionlan_LF_2.yml +0 -0
  130. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/svtrv2_visionlan_LA.yml +0 -0
  131. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/svtrv2_visionlan_LF_1.yml +0 -0
  132. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/svtrv2_visionlan_LF_2.yml +0 -0
  133. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/losses/__init__.py +0 -0
  134. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/losses/db_loss.py +0 -0
  135. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/losses/det_basic_loss.py +0 -0
  136. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/metrics/__init__.py +0 -0
  137. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/metrics/det_metric.py +0 -0
  138. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/metrics/eval_det_iou.py +0 -0
  139. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/__init__.py +0 -0
  140. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/backbones/__init__.py +0 -0
  141. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/backbones/repvit.py +0 -0
  142. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/base_detector.py +0 -0
  143. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/heads/__init__.py +0 -0
  144. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/heads/db_head.py +0 -0
  145. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/necks/__init__.py +0 -0
  146. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/necks/db_fpn.py +0 -0
  147. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/postprocess/__init__.py +0 -0
  148. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/postprocess/db_postprocess.py +0 -0
  149. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/__init__.py +0 -0
  150. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/crop_paste.py +0 -0
  151. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/crop_resize.py +0 -0
  152. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/db_label_encode.py +0 -0
  153. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/db_resize_for_test.py +0 -0
  154. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/iaa_augment.py +0 -0
  155. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openocr.py +0 -0
  156. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/__init__.py +0 -0
  157. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/abinet_loss.py +0 -0
  158. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/ar_loss.py +0 -0
  159. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cam_loss.py +0 -0
  160. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cdistnet_loss.py +0 -0
  161. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/ce_loss.py +0 -0
  162. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cmer_loss.py +0 -0
  163. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cppd_loss.py +0 -0
  164. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/ctc_loss.py +0 -0
  165. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/igtr_loss.py +0 -0
  166. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/lister_loss.py +0 -0
  167. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/lpv_loss.py +0 -0
  168. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/mdiff_loss.py +0 -0
  169. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/mgp_loss.py +0 -0
  170. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/parseq_loss.py +0 -0
  171. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/robustscanner_loss.py +0 -0
  172. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/seed_loss.py +0 -0
  173. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/smtr_loss.py +0 -0
  174. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/srn_loss.py +0 -0
  175. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/unirec_loss.py +0 -0
  176. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/visionlan_loss.py +0 -0
  177. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/__init__.py +0 -0
  178. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric.py +0 -0
  179. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_cmer.py +0 -0
  180. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_gtc.py +0 -0
  181. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_long.py +0 -0
  182. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_mgp.py +0 -0
  183. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/__init__.py +0 -0
  184. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/base_recognizer.py +0 -0
  185. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/cmer_modeling/modeling_cmer.py +0 -0
  186. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/common.py +0 -0
  187. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/__init__.py +0 -0
  188. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/abinet_decoder.py +0 -0
  189. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/aster_decoder.py +0 -0
  190. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/bus_decoder.py +0 -0
  191. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/cam_decoder.py +0 -0
  192. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/cdistnet_decoder.py +0 -0
  193. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/cppd_decoder.py +0 -0
  194. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/ctc_decoder.py +0 -0
  195. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/dan_decoder.py +0 -0
  196. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/dptr_parseq_clip_b_decoder.py +0 -0
  197. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/igtr_decoder.py +0 -0
  198. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/lister_decoder.py +0 -0
  199. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/lpv_decoder.py +0 -0
  200. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/matrn_decoder.py +0 -0
  201. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/mdiff_decoder.py +0 -0
  202. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/mgp_decoder.py +0 -0
  203. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/nrtr_decoder.py +0 -0
  204. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/ote_decoder.py +0 -0
  205. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/parseq_decoder.py +0 -0
  206. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/rctc_decoder.py +0 -0
  207. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/robustscanner_decoder.py +0 -0
  208. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/sar_decoder.py +0 -0
  209. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/smtr_decoder.py +0 -0
  210. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/smtr_decoder_nattn.py +0 -0
  211. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/srn_decoder.py +0 -0
  212. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/visionlan_decoder.py +0 -0
  213. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/__init__.py +0 -0
  214. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/autostr_encoder.py +0 -0
  215. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/cam_encoder.py +0 -0
  216. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/convnextv2.py +0 -0
  217. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/focalsvtr.py +0 -0
  218. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/nrtr_encoder.py +0 -0
  219. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_hgnet.py +0 -0
  220. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_lcnetv3.py +0 -0
  221. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_mobilenet_v3.py +0 -0
  222. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_mv1_enhance.py +0 -0
  223. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_nrtr_mtb.py +0 -0
  224. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_31.py +0 -0
  225. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_45.py +0 -0
  226. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_fpn.py +0 -0
  227. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_vd.py +0 -0
  228. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/repvit.py +0 -0
  229. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/resnet31_rnn.py +0 -0
  230. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrnet.py +0 -0
  231. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrnet2dpos.py +0 -0
  232. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrv2.py +0 -0
  233. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrv2_lnconv.py +0 -0
  234. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrv2_lnconv_two33.py +0 -0
  235. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/vit.py +0 -0
  236. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/__init__.py +0 -0
  237. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/aster_tps.py +0 -0
  238. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/moran.py +0 -0
  239. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/tps.py +0 -0
  240. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/unirec_modeling/configuration_unirec.py +0 -0
  241. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/unirec_modeling/modeling_unirec.py +0 -0
  242. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/optimizer/__init__.py +0 -0
  243. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/optimizer/lr.py +0 -0
  244. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/__init__.py +0 -0
  245. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/abinet_postprocess.py +0 -0
  246. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/ar_postprocess.py +0 -0
  247. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/ce_postprocess.py +0 -0
  248. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/char_postprocess.py +0 -0
  249. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/cmer_postprocess.py +0 -0
  250. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/cppd_postprocess.py +0 -0
  251. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/ctc_postprocess.py +0 -0
  252. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/igtr_postprocess.py +0 -0
  253. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/lister_postprocess.py +0 -0
  254. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/mgp_postprocess.py +0 -0
  255. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/nrtr_postprocess.py +0 -0
  256. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/smtr_postprocess.py +0 -0
  257. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/srn_postprocess.py +0 -0
  258. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/unirec_postprocess.py +0 -0
  259. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/visionlan_postprocess.py +0 -0
  260. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/__init__.py +0 -0
  261. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/abinet_aug.py +0 -0
  262. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/abinet_label_encode.py +0 -0
  263. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ar_label_encode.py +0 -0
  264. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/auto_augment.py +0 -0
  265. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/cam_label_encode.py +0 -0
  266. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ce_label_encode.py +0 -0
  267. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/char_label_encode.py +0 -0
  268. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/cmer_label_encode.py +0 -0
  269. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/cppd_label_encode.py +0 -0
  270. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ctc_label_encode.py +0 -0
  271. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/dptr_label_encode.py +0 -0
  272. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ep_label_encode.py +0 -0
  273. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/igtr_label_encode.py +0 -0
  274. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/mdiff_label_encode.py +0 -0
  275. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/mgp_label_encode.py +0 -0
  276. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/parseq_aug.py +0 -0
  277. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/rec_aug.py +0 -0
  278. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/resize.py +0 -0
  279. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/smtr_label_encode.py +0 -0
  280. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/srn_label_encode.py +0 -0
  281. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/unirec_label_encode.py +0 -0
  282. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/visionlan_label_encode.py +0 -0
  283. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/create_lmdb_dataset.py +0 -0
  284. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/__init__.py +0 -0
  285. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/cmer_web_dataset.py +0 -0
  286. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/collate_fn.py +0 -0
  287. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/lmdb_dataset.py +0 -0
  288. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/lmdb_dataset_test.py +0 -0
  289. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/multi_scale_sampler.py +0 -0
  290. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/native_size_dataset.py +0 -0
  291. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/native_size_sampler.py +0 -0
  292. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset.py +0 -0
  293. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset_test.py +0 -0
  294. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset_tvresize.py +0 -0
  295. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset_tvresize_test.py +0 -0
  296. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_sampler.py +0 -0
  297. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/simple_dataset.py +0 -0
  298. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/strlmdb_dataset.py +0 -0
  299. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/text_lmdb_dataset.py +0 -0
  300. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/download/download_dataset.py +0 -0
  301. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/download/utils.py +0 -0
  302. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/download_example_images.py +0 -0
  303. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/engine/config.py +0 -0
  304. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/engine/trainer.py +0 -0
  305. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_det.py +0 -0
  306. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec.py +0 -0
  307. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_ch.py +0 -0
  308. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_en.py +0 -0
  309. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_long.py +0 -0
  310. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_long_simple.py +0 -0
  311. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/export_rec.py +0 -0
  312. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer/onnx_engine.py +0 -0
  313. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer/predict_rec.py +0 -0
  314. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer/utility.py +0 -0
  315. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_det.py +0 -0
  316. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_doc.py +0 -0
  317. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_e2e.py +0 -0
  318. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_e2e_parallel.py +0 -0
  319. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_rec.py +0 -0
  320. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_unirec_onnx.py +0 -0
  321. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/to_markdown.py +0 -0
  322. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/toonnx.py +0 -0
  323. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/train_det.py +0 -0
  324. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/train_rec.py +0 -0
  325. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utility.py +0 -0
  326. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/EN_symbol_dict.txt +0 -0
  327. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/__init__.py +0 -0
  328. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/ckpt.py +0 -0
  329. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ar_dict.txt +0 -0
  330. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/arabic_dict.txt +0 -0
  331. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/be_dict.txt +0 -0
  332. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/bg_dict.txt +0 -0
  333. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/chinese_cht_dict.txt +0 -0
  334. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/cyrillic_dict.txt +0 -0
  335. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/devanagari_dict.txt +0 -0
  336. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/en_dict.txt +0 -0
  337. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/fa_dict.txt +0 -0
  338. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/french_dict.txt +0 -0
  339. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/german_dict.txt +0 -0
  340. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/hi_dict.txt +0 -0
  341. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/it_dict.txt +0 -0
  342. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/japan_dict.txt +0 -0
  343. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ka_dict.txt +0 -0
  344. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/kie_dict/xfund_class_list.txt +0 -0
  345. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/korean_dict.txt +0 -0
  346. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/latex_symbol_dict.txt +0 -0
  347. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/latin_dict.txt +0 -0
  348. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/layout_dict/layout_cdla_dict.txt +0 -0
  349. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/layout_dict/layout_publaynet_dict.txt +0 -0
  350. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/layout_dict/layout_table_dict.txt +0 -0
  351. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/mr_dict.txt +0 -0
  352. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ne_dict.txt +0 -0
  353. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/oc_dict.txt +0 -0
  354. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/pu_dict.txt +0 -0
  355. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/rs_dict.txt +0 -0
  356. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/rsc_dict.txt +0 -0
  357. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ru_dict.txt +0 -0
  358. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/spin_dict.txt +0 -0
  359. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ta_dict.txt +0 -0
  360. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_dict.txt +0 -0
  361. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_master_structure_dict.txt +0 -0
  362. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_structure_dict.txt +0 -0
  363. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_structure_dict_ch.txt +0 -0
  364. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/te_dict.txt +0 -0
  365. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ug_dict.txt +0 -0
  366. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/uk_dict.txt +0 -0
  367. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ur_dict.txt +0 -0
  368. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/xi_dict.txt +0 -0
  369. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict90.txt +0 -0
  370. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_metric/Deteval.py +0 -0
  371. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_metric/polygon_fast.py +0 -0
  372. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/extract_batchsize.py +0 -0
  373. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/extract_textpoint_fast.py +0 -0
  374. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/extract_textpoint_slow.py +0 -0
  375. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/pgnet_pp_utils.py +0 -0
  376. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/visual.py +0 -0
  377. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/en_dict.txt +0 -0
  378. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/gen_label.py +0 -0
  379. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/ic15_dict.txt +0 -0
  380. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/logging.py +0 -0
  381. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/opendoc_onnx_utils/utils.py +0 -0
  382. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/poly_nms.py +0 -0
  383. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/ppocr_keys_v1.txt +0 -0
  384. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/stats.py +0 -0
  385. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/utility.py +0 -0
  386. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/visual.py +0 -0
  387. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/SOURCES.txt +0 -0
  388. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/dependency_links.txt +0 -0
  389. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/entry_points.txt +0 -0
  390. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/not-zip-safe +0 -0
  391. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/top_level.txt +0 -0
  392. {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openocr-python
3
- Version: 0.1.0.dev0
3
+ Version: 0.1.0.dev2
4
4
  Summary: Accurate and Efficient General OCR System
5
5
  Home-page: https://github.com/Topdu/OpenOCR
6
6
  Author: OCR Team, FVL Lab
@@ -27,35 +27,29 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
27
  Requires-Python: >=3.8
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE
30
- Requires-Dist: numpy==1.26.4
31
- Requires-Dist: opencv-python<=4.12.0
32
- Requires-Dist: Pillow>=8.0.0
33
- Requires-Dist: pyyaml>=5.4.0
34
- Requires-Dist: tqdm>=4.60.0
35
- Requires-Dist: rapidfuzz>=2.0.0
36
- Requires-Dist: pyclipper>=1.3.0
30
+ Requires-Dist: numpy
31
+ Requires-Dist: opencv-python
32
+ Requires-Dist: Pillow
33
+ Requires-Dist: pyyaml
34
+ Requires-Dist: tqdm
35
+ Requires-Dist: rapidfuzz
36
+ Requires-Dist: pyclipper
37
37
  Requires-Dist: pydantic
38
38
  Requires-Dist: shapely
39
- Provides-Extra: onnx
40
- Requires-Dist: onnxruntime>=1.12.0; extra == "onnx"
39
+ Requires-Dist: huggingface-hub
40
+ Requires-Dist: modelscope
41
+ Requires-Dist: onnxruntime
41
42
  Provides-Extra: onnx-gpu
42
- Requires-Dist: onnxruntime-gpu>=1.12.0; extra == "onnx-gpu"
43
+ Requires-Dist: onnxruntime-gpu; extra == "onnx-gpu"
43
44
  Provides-Extra: pytorch
44
- Requires-Dist: torch>=1.10.0; extra == "pytorch"
45
- Requires-Dist: torchvision>=0.11.0; extra == "pytorch"
45
+ Requires-Dist: torch; extra == "pytorch"
46
+ Requires-Dist: torchvision; extra == "pytorch"
46
47
  Provides-Extra: gradio
47
- Requires-Dist: gradio==4.20.0; extra == "gradio"
48
- Provides-Extra: huggingface
49
- Requires-Dist: huggingface-hub>=0.16.0; extra == "huggingface"
50
- Provides-Extra: modelscope
51
- Requires-Dist: modelscope>=1.9.0; extra == "modelscope"
48
+ Requires-Dist: gradio; extra == "gradio"
52
49
  Provides-Extra: all
53
- Requires-Dist: onnxruntime>=1.12.0; extra == "all"
54
- Requires-Dist: torch>=1.10.0; extra == "all"
55
- Requires-Dist: torchvision>=0.11.0; extra == "all"
56
- Requires-Dist: gradio==4.20.0; extra == "all"
57
- Requires-Dist: huggingface-hub>=0.16.0; extra == "all"
58
- Requires-Dist: modelscope>=1.9.0; extra == "all"
50
+ Requires-Dist: torch; extra == "all"
51
+ Requires-Dist: torchvision; extra == "all"
52
+ Requires-Dist: gradio; extra == "all"
59
53
  Dynamic: author
60
54
  Dynamic: home-page
61
55
  Dynamic: license-file
@@ -81,13 +75,13 @@ Visit: https://github.com/Topdu/OpenOCR
81
75
 
82
76
  ```bash
83
77
  # Install from PyPI (recommended)
84
- pip install openocr-python huggingface-hub==0.36.0 modelscope onnxruntime
78
+ pip install openocr-python==0.1.0.dev2
85
79
 
86
80
  # Or install from source
87
81
  git clone https://github.com/Topdu/OpenOCR.git
88
82
  cd OpenOCR
89
83
  python build_package.py
90
- pip install ./build/dist/openocr_python-*.whl huggingface-hub==0.36.0 modelscope onnxruntime
84
+ pip install ./build/dist/openocr_python-*.whl
91
85
  ```
92
86
 
93
87
  ## Command Line Usage
@@ -173,7 +167,7 @@ openocr --task doc --input_path path/to/img --use_layout_detection --save_vis --
173
167
 
174
168
  ```bash
175
169
  # Install gradio
176
- pip install gradio==4.20.0
170
+ pip install gradio
177
171
  ```
178
172
 
179
173
  ### OCR Demo
@@ -181,7 +175,6 @@ pip install gradio==4.20.0
181
175
  Launch Gradio web interface for OCR tasks:
182
176
 
183
177
  ```bash
184
- pip install onnxruntime
185
178
  # Local access only
186
179
  openocr --task launch_openocr_demo --server_port 7860
187
180
 
@@ -194,7 +187,6 @@ openocr --task launch_openocr_demo --server_port 7860 --share
194
187
  Launch Gradio web interface for universal recognition:
195
188
 
196
189
  ```bash
197
- pip install onnxruntime
198
190
  openocr --task launch_unirec_demo --server_port 7861 --share
199
191
  ```
200
192
 
@@ -203,7 +195,6 @@ openocr --task launch_unirec_demo --server_port 7861 --share
203
195
  Launch Gradio web interface for document parsing:
204
196
 
205
197
  ```bash
206
- pip install onnxruntime
207
198
  openocr --task launch_opendoc_demo --server_port 7862 --share
208
199
  ```
209
200
 
@@ -18,13 +18,13 @@ Visit: https://github.com/Topdu/OpenOCR
18
18
 
19
19
  ```bash
20
20
  # Install from PyPI (recommended)
21
- pip install openocr-python huggingface-hub==0.36.0 modelscope onnxruntime
21
+ pip install openocr-python==0.1.0.dev2
22
22
 
23
23
  # Or install from source
24
24
  git clone https://github.com/Topdu/OpenOCR.git
25
25
  cd OpenOCR
26
26
  python build_package.py
27
- pip install ./build/dist/openocr_python-*.whl huggingface-hub==0.36.0 modelscope onnxruntime
27
+ pip install ./build/dist/openocr_python-*.whl
28
28
  ```
29
29
 
30
30
  ## Command Line Usage
@@ -110,7 +110,7 @@ openocr --task doc --input_path path/to/img --use_layout_detection --save_vis --
110
110
 
111
111
  ```bash
112
112
  # Install gradio
113
- pip install gradio==4.20.0
113
+ pip install gradio
114
114
  ```
115
115
 
116
116
  ### OCR Demo
@@ -118,7 +118,6 @@ pip install gradio==4.20.0
118
118
  Launch Gradio web interface for OCR tasks:
119
119
 
120
120
  ```bash
121
- pip install onnxruntime
122
121
  # Local access only
123
122
  openocr --task launch_openocr_demo --server_port 7860
124
123
 
@@ -131,7 +130,6 @@ openocr --task launch_openocr_demo --server_port 7860 --share
131
130
  Launch Gradio web interface for universal recognition:
132
131
 
133
132
  ```bash
134
- pip install onnxruntime
135
133
  openocr --task launch_unirec_demo --server_port 7861 --share
136
134
  ```
137
135
 
@@ -140,7 +138,6 @@ openocr --task launch_unirec_demo --server_port 7861 --share
140
138
  Launch Gradio web interface for document parsing:
141
139
 
142
140
  ```bash
143
- pip install onnxruntime
144
141
  openocr --task launch_opendoc_demo --server_port 7862 --share
145
142
  ```
146
143
 
@@ -13,7 +13,7 @@ sys.path.insert(0, os.path.abspath(os.path.join(__dir__, '..')))
13
13
  # from .tools.infer_doc_onnx import OpenDocONNX
14
14
  from .openocr import OpenOCR, main
15
15
 
16
- __version__ = '0.1.0.dev'
16
+ __version__ = '0.1.0.dev2'
17
17
 
18
18
  # Lazy import for demo interfaces to avoid initialization on import
19
19
  def launch_openocr_demo(*args, **kwargs):
@@ -1,7 +1,7 @@
1
1
  # @Author: OpenOCR
2
2
  # @Contact: 784990967@qq.com
3
3
  import os
4
- import gradio as gr # gradio==4.20.0
4
+ import gradio as gr
5
5
 
6
6
  os.environ['FLAGS_allocator_strategy'] = 'auto_growth'
7
7
  import cv2
@@ -9,6 +9,8 @@ import numpy as np
9
9
  import json
10
10
  import time
11
11
  from PIL import Image
12
+ from pathlib import Path
13
+
12
14
  from tools.infer_e2e import OpenOCRE2E, check_and_download_font, draw_ocr_box_txt
13
15
  from tools.download_example_images import get_example_images_path
14
16
 
@@ -218,8 +220,8 @@ def launch_demo(share=False, server_port=7860, server_name='0.0.0.0'):
218
220
  img_output,
219
221
  img_mask,
220
222
  ])
221
-
222
- demo.launch(share=share, server_port=server_port, server_name=server_name)
223
+ allowed_path = str(Path.home() / '.cache' / 'openocr')
224
+ demo.launch(share=share, server_port=server_port, server_name=server_name, allowed_paths=[allowed_path])
223
225
  return demo
224
226
 
225
227
 
@@ -6,7 +6,10 @@ import base64
6
6
  import argparse
7
7
  import gradio as gr
8
8
  from PIL import Image
9
+ from pathlib import Path
9
10
 
11
+ import sys
12
+ sys.path.append(os.path.dirname(os.path.abspath(__file__)))
10
13
  from tools.infer_doc_onnx import OpenDocONNX
11
14
  from tools.utils.logging import get_logger
12
15
  from tools.download_example_images import get_example_images_path
@@ -496,10 +499,13 @@ def launch_demo(
496
499
 
497
500
  demo = create_demo()
498
501
  # Launch with settings from arguments
502
+ allowed_path = str(Path.home() / '.cache' / 'openocr')
503
+ # Launch demo
499
504
  demo.launch(
500
505
  share=share,
506
+ server_name=server_name,
501
507
  server_port=server_port,
502
- server_name=server_name
508
+ allowed_paths=[allowed_path]
503
509
  )
504
510
  return demo
505
511
 
@@ -2,9 +2,7 @@ import re
2
2
  import gradio as gr
3
3
  import numpy as np
4
4
  from PIL import Image
5
- from threading import Thread
6
- import queue
7
- import time
5
+ from pathlib import Path
8
6
 
9
7
  # Import ONNX inference components
10
8
  import sys
@@ -75,15 +73,30 @@ model = None
75
73
 
76
74
 
77
75
  # --- 2. Streaming generation function ---
78
- def stream_generate(inference, image, max_length=2048, result_queue=None):
79
- """Generate text with streaming output."""
76
+ def stream_recognize_image(input_image, max_length=2048):
77
+ """Stream recognition results with dual display: markdown text during recognition, render after completion.
78
+
79
+ Args:
80
+ input_image: Input PIL Image
81
+ max_length: Maximum generation length
82
+ """
83
+ if input_image is None:
84
+ yield '请先上传一张图片。', '**请先上传一张图片。**'
85
+ return
86
+
87
+ # Convert to PIL Image if needed
88
+ if not isinstance(input_image, Image.Image):
89
+ input_image = Image.fromarray(input_image).convert('RGB')
90
+ else:
91
+ input_image = input_image.convert('RGB')
92
+
80
93
  # Get token IDs
81
- bos_token_id = inference.tokenizer.bos_token_id
82
- eos_token_id = inference.tokenizer.eos_token_id
83
- pad_token_id = inference.tokenizer.pad_token_id
94
+ bos_token_id = model.tokenizer.bos_token_id
95
+ eos_token_id = model.tokenizer.eos_token_id
96
+ pad_token_id = model.tokenizer.pad_token_id
84
97
 
85
98
  # Encode image
86
- encoder_hidden_states, cross_k, cross_v = inference.encode_image(image)
99
+ encoder_hidden_states, cross_k, cross_v = model.encode_image(input_image)
87
100
 
88
101
  # Initialize generation
89
102
  generated_ids = [bos_token_id]
@@ -91,23 +104,24 @@ def stream_generate(inference, image, max_length=2048, result_queue=None):
91
104
  # Initialize empty past_key_values
92
105
  batch_size = encoder_hidden_states.shape[0]
93
106
  past_key_values = []
94
- for _ in range(inference.num_decoder_layers):
107
+ for _ in range(model.num_decoder_layers):
95
108
  empty_key = np.zeros(
96
- (batch_size, inference.num_heads, 0, inference.head_dim),
109
+ (batch_size, model.num_heads, 0, model.head_dim),
97
110
  dtype=np.float32)
98
111
  empty_value = np.zeros(
99
- (batch_size, inference.num_heads, 0, inference.head_dim),
112
+ (batch_size, model.num_heads, 0, model.head_dim),
100
113
  dtype=np.float32)
101
114
  past_key_values.append((empty_key, empty_value))
115
+
102
116
  cleaned_text = ''
103
- put_token_num = 30
117
+
104
118
  # Generation loop with streaming
105
119
  for step in range(max_length - 1):
106
120
  current_token = generated_ids[-1]
107
121
  past_length = step
108
122
 
109
123
  # Decode step
110
- logits, past_key_values = inference.decode_step(
124
+ logits, past_key_values = model.decode_step(
111
125
  current_token,
112
126
  past_length,
113
127
  cross_k,
@@ -120,81 +134,22 @@ def stream_generate(inference, image, max_length=2048, result_queue=None):
120
134
  next_token_id = int(np.argmax(logits[0, -1, :]))
121
135
  generated_ids.append(next_token_id)
122
136
 
123
- # Decode current sequence and put in queue
124
- if result_queue is not None:
125
- current_text = inference.tokenizer.decode(generated_ids[-1:], skip_special_tokens=False)
126
- # print(current_text+'\n')
127
- cleaned_text = cleaned_text + clean_special_tokens(current_text)
128
- # Post-process HTML table attributes
129
- # cleaned_text = cleaned_text.replace('<tdcolspan=', '<td colspan=')
130
- # cleaned_text = cleaned_text.replace('<tdrowspan=', '<td rowspan=')
131
- # cleaned_text = cleaned_text.replace('"colspan=', '" colspan=')
132
- if (step + 1) % put_token_num == 0:
133
- result_queue.put(cleaned_text)
134
- result_queue.put(cleaned_text)
137
+ # Decode and clean current token
138
+ current_text = model.tokenizer.decode(generated_ids[-1:], skip_special_tokens=False)
139
+ cleaned_text += clean_special_tokens(current_text)
140
+
141
+ yield cleaned_text, '_正在识别中,请稍候..._'
142
+
135
143
  # Check for EOS
136
144
  if next_token_id == eos_token_id:
137
145
  break
138
146
 
139
- # Signal completion
140
- if result_queue is not None:
141
- result_queue.put(None)
142
-
143
-
144
- # --- 3. Gradio streaming function for dual display ---
145
- def stream_recognize_image(input_image):
146
- """Stream recognition results with dual display: markdown text only during recognition, render after completion."""
147
- if input_image is None:
148
- yield '请先上传一张图片。', '**请先上传一张图片。**'
149
- return
150
-
151
- # Convert to PIL Image if needed
152
- if not isinstance(input_image, Image.Image):
153
- input_image = Image.fromarray(input_image).convert('RGB')
147
+ # Final yield - render the complete result
148
+ if cleaned_text:
149
+ formatted_result = format_markdown_output(cleaned_text)
150
+ yield formatted_result, formatted_result
154
151
  else:
155
- input_image = input_image.convert('RGB')
156
-
157
- # Create queue for streaming results
158
- result_queue = queue.Queue()
159
-
160
- # Start generation in background thread
161
- thread = Thread(target=stream_generate, args=(model, input_image, 2048, result_queue))
162
- thread.daemon = True # Set as daemon thread
163
- thread.start()
164
-
165
- # Stream results - only update markdown text, keep render area with "recognizing" message
166
- last_update_time = time.time()
167
- current_text = ''
168
-
169
- while True:
170
- try:
171
- # Get result with longer timeout
172
- result = result_queue.get(timeout=1.0)
173
- if result is None: # Generation complete
174
- break
175
- current_text = result
176
- last_update_time = time.time()
177
-
178
- # Only update markdown text, show "recognizing" message in render area
179
- yield current_text, '_正在识别中,请稍候..._'
180
-
181
- except queue.Empty:
182
- # No new result yet, check if thread is still alive
183
- if not thread.is_alive():
184
- # Thread finished but no completion signal, break
185
- break
186
- # Yield current state periodically to keep UI responsive
187
- current_time = time.time()
188
- if current_time - last_update_time > 0.5: # Update UI every 0.5s
189
- yield current_text if current_text else '正在识别中...', '_正在识别中,请稍候..._'
190
- last_update_time = current_time
191
-
192
- # Wait for thread to complete
193
- thread.join(timeout=2.0)
194
-
195
- # Final yield - now render the complete result
196
- formatted_result = format_markdown_output(current_text)
197
- yield formatted_result, formatted_result
152
+ yield '识别失败,请重试。', '**识别失败,请重试。**'
198
153
 
199
154
 
200
155
  def format_markdown_output(markdown_text):
@@ -223,69 +178,71 @@ def format_markdown_output(markdown_text):
223
178
  # Gradio's Markdown component will handle the rendering
224
179
  return markdown_text
225
180
 
226
-
227
- # --- 4. Gradio Interface ---
228
- # Get example images path and download if necessary
229
- example_img_dir = get_example_images_path(demo_type='unirec')
230
-
231
- # Get list of example images
232
- example_images = []
233
- if os.path.exists(example_img_dir):
234
- for file in os.listdir(example_img_dir):
235
- if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
236
- example_images.append(os.path.join(example_img_dir, file))
237
- example_images = sorted(example_images)
238
-
239
- with gr.Blocks(theme=gr.themes.Soft()) as demo:
240
- gr.HTML("""
241
- <h1 style='text-align: center;'><a href="https://github.com/Topdu/OpenOCR">UniRec-0.1B: Unified Text and Formula Recognition with 0.1B Parameters</a></h1>
242
- <p style='text-align: center;'>0.1B超轻量模型统一文本与公式识别(由<a href="https://fvl.fudan.edu.cn">FVL实验室</a> <a href="https://github.com/Topdu/OpenOCR">OCR Team</a> 创建)</p>
243
- <p style='text-align: center;'><a href="https://github.com/Topdu/OpenOCR/blob/main/docs/unirec.md">[本地GPU部署]</a>获取快速识别体验</p>"""
244
- )
245
- gr.Markdown('上传一张图片,点击"运行识别"按钮进行文本和公式识别。')
246
- with gr.Row():
247
- with gr.Column(scale=4): # 左侧竖排:图片 + 按钮
248
- image_input = gr.Image(label='上传图片 or 粘贴截图', type='pil')
249
-
250
- # Add examples if available
251
- if example_images:
252
- gr.Examples(
253
- examples=example_images,
254
- inputs=image_input,
255
- label='📚 示例图片'
181
+ def create_demo() -> gr.Blocks:
182
+
183
+ # --- 4. Gradio Interface ---
184
+ # Get example images path and download if necessary
185
+ example_img_dir = get_example_images_path(demo_type='unirec')
186
+
187
+ # Get list of example images
188
+ example_images = []
189
+ if os.path.exists(example_img_dir):
190
+ for file in os.listdir(example_img_dir):
191
+ if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
192
+ example_images.append(os.path.join(example_img_dir, file))
193
+ example_images = sorted(example_images)
194
+
195
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
196
+ gr.HTML("""
197
+ <h1 style='text-align: center;'><a href="https://github.com/Topdu/OpenOCR">UniRec-0.1B: Unified Text and Formula Recognition with 0.1B Parameters</a></h1>
198
+ <p style='text-align: center;'>0.1B超轻量模型统一文本与公式识别(由<a href="https://fvl.fudan.edu.cn">FVL实验室</a> <a href="https://github.com/Topdu/OpenOCR">OCR Team</a> 创建)</p>
199
+ <p style='text-align: center;'><a href="https://github.com/Topdu/OpenOCR/blob/main/docs/unirec.md">[本地GPU部署]</a>获取快速识别体验</p>"""
256
200
  )
201
+ gr.Markdown('上传一张图片,点击"运行识别"按钮进行文本和公式识别。')
202
+ with gr.Row():
203
+ with gr.Column(scale=4): # 左侧竖排:图片 + 按钮
204
+ image_input = gr.Image(label='上传图片 or 粘贴截图', type='pil')
205
+
206
+ # Add examples if available
207
+ if example_images:
208
+ gr.Examples(
209
+ examples=example_images,
210
+ inputs=image_input,
211
+ label='📚 示例图片'
212
+ )
213
+
214
+ with gr.Row():
215
+ run_button = gr.Button('🚀 运行识别', variant='primary')
216
+ clear_button = gr.Button('🗑️ 清空', variant='secondary')
217
+
218
+ with gr.Column(scale=6):
219
+ with gr.Tabs():
220
+ with gr.Tab('📄 Markdown Source'):
221
+ markdown_output = gr.Code(label='Markdown Source',
222
+ language='markdown',
223
+ lines=20)
224
+ with gr.Tab('📝 Markdown Preview'):
225
+ markdown_render = gr.Markdown(
226
+ value='_渲染后的表格/公式将显示在这里..._',
227
+ latex_delimiters=LATEX_DELIMS,
228
+ elem_id='md_preview')
229
+
230
+ # 点击运行按钮后触发
231
+ run_button.click(
232
+ stream_recognize_image,
233
+ inputs=[image_input],
234
+ outputs=[markdown_output, markdown_render]
235
+ )
257
236
 
258
- with gr.Row():
259
- run_button = gr.Button('🚀 运行识别', variant='primary')
260
- clear_button = gr.Button('🗑️ 清空', variant='secondary')
261
-
262
- with gr.Column(scale=6):
263
- with gr.Tabs():
264
- with gr.Tab('📝 Markdown Source'):
265
- markdown_output = gr.Code(label='Markdown Source',
266
- language='markdown',
267
- lines=20)
268
- with gr.Tab('📝 Markdown Preview'):
269
- markdown_render = gr.Markdown(
270
- value='_渲染后的表格/公式将显示在这里..._',
271
- latex_delimiters=LATEX_DELIMS,
272
- elem_id='md_preview')
273
-
274
- # 点击运行按钮后触发
275
- run_button.click(
276
- stream_recognize_image,
277
- inputs=[image_input],
278
- outputs=[markdown_output, markdown_render]
279
- )
280
-
281
- # 清空按钮功能:清空图片和输出结果
282
- def clear_all():
283
- return None, '', '_渲染后的表格/公式将显示在这里..._'
237
+ # 清空按钮功能:清空图片和输出结果
238
+ def clear_all():
239
+ return None, '', '_渲染后的表格/公式将显示在这里..._'
284
240
 
285
- clear_button.click(
286
- clear_all,
287
- outputs=[image_input, markdown_output, markdown_render]
288
- )
241
+ clear_button.click(
242
+ clear_all,
243
+ outputs=[image_input, markdown_output, markdown_render]
244
+ )
245
+ return demo
289
246
 
290
247
 
291
248
  def launch_demo(
@@ -323,12 +280,15 @@ def launch_demo(
323
280
  use_gpu=use_gpu,
324
281
  auto_download=auto_download
325
282
  )
283
+ demo = create_demo()
326
284
 
285
+ allowed_paths = str(Path.home() / '.cache' / 'openocr')
327
286
  # Launch demo
328
- demo.queue().launch(
287
+ demo.launch(
329
288
  share=share,
330
289
  server_name=server_name,
331
- server_port=server_port
290
+ server_port=server_port,
291
+ allowed_paths=[allowed_paths]
332
292
  )
333
293
  return demo
334
294
 
@@ -999,7 +999,7 @@ class OpenDocONNX:
999
999
  elif 'table' in base_label:
1000
1000
  f.write(f'{merged_text}\n\n')
1001
1001
  elif 'formula' in base_label or base_label == 'equation':
1002
- f.write(f'$${merged_text}$$\n\n')
1002
+ f.write(f'{merged_text}\n\n')
1003
1003
  else:
1004
1004
  f.write(f'{merged_text}\n\n')
1005
1005
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openocr-python
3
- Version: 0.1.0.dev0
3
+ Version: 0.1.0.dev2
4
4
  Summary: Accurate and Efficient General OCR System
5
5
  Home-page: https://github.com/Topdu/OpenOCR
6
6
  Author: OCR Team, FVL Lab
@@ -27,35 +27,29 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
27
  Requires-Python: >=3.8
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE
30
- Requires-Dist: numpy==1.26.4
31
- Requires-Dist: opencv-python<=4.12.0
32
- Requires-Dist: Pillow>=8.0.0
33
- Requires-Dist: pyyaml>=5.4.0
34
- Requires-Dist: tqdm>=4.60.0
35
- Requires-Dist: rapidfuzz>=2.0.0
36
- Requires-Dist: pyclipper>=1.3.0
30
+ Requires-Dist: numpy
31
+ Requires-Dist: opencv-python
32
+ Requires-Dist: Pillow
33
+ Requires-Dist: pyyaml
34
+ Requires-Dist: tqdm
35
+ Requires-Dist: rapidfuzz
36
+ Requires-Dist: pyclipper
37
37
  Requires-Dist: pydantic
38
38
  Requires-Dist: shapely
39
- Provides-Extra: onnx
40
- Requires-Dist: onnxruntime>=1.12.0; extra == "onnx"
39
+ Requires-Dist: huggingface-hub
40
+ Requires-Dist: modelscope
41
+ Requires-Dist: onnxruntime
41
42
  Provides-Extra: onnx-gpu
42
- Requires-Dist: onnxruntime-gpu>=1.12.0; extra == "onnx-gpu"
43
+ Requires-Dist: onnxruntime-gpu; extra == "onnx-gpu"
43
44
  Provides-Extra: pytorch
44
- Requires-Dist: torch>=1.10.0; extra == "pytorch"
45
- Requires-Dist: torchvision>=0.11.0; extra == "pytorch"
45
+ Requires-Dist: torch; extra == "pytorch"
46
+ Requires-Dist: torchvision; extra == "pytorch"
46
47
  Provides-Extra: gradio
47
- Requires-Dist: gradio==4.20.0; extra == "gradio"
48
- Provides-Extra: huggingface
49
- Requires-Dist: huggingface-hub>=0.16.0; extra == "huggingface"
50
- Provides-Extra: modelscope
51
- Requires-Dist: modelscope>=1.9.0; extra == "modelscope"
48
+ Requires-Dist: gradio; extra == "gradio"
52
49
  Provides-Extra: all
53
- Requires-Dist: onnxruntime>=1.12.0; extra == "all"
54
- Requires-Dist: torch>=1.10.0; extra == "all"
55
- Requires-Dist: torchvision>=0.11.0; extra == "all"
56
- Requires-Dist: gradio==4.20.0; extra == "all"
57
- Requires-Dist: huggingface-hub>=0.16.0; extra == "all"
58
- Requires-Dist: modelscope>=1.9.0; extra == "all"
50
+ Requires-Dist: torch; extra == "all"
51
+ Requires-Dist: torchvision; extra == "all"
52
+ Requires-Dist: gradio; extra == "all"
59
53
  Dynamic: author
60
54
  Dynamic: home-page
61
55
  Dynamic: license-file
@@ -81,13 +75,13 @@ Visit: https://github.com/Topdu/OpenOCR
81
75
 
82
76
  ```bash
83
77
  # Install from PyPI (recommended)
84
- pip install openocr-python huggingface-hub==0.36.0 modelscope onnxruntime
78
+ pip install openocr-python==0.1.0.dev2
85
79
 
86
80
  # Or install from source
87
81
  git clone https://github.com/Topdu/OpenOCR.git
88
82
  cd OpenOCR
89
83
  python build_package.py
90
- pip install ./build/dist/openocr_python-*.whl huggingface-hub==0.36.0 modelscope onnxruntime
84
+ pip install ./build/dist/openocr_python-*.whl
91
85
  ```
92
86
 
93
87
  ## Command Line Usage
@@ -173,7 +167,7 @@ openocr --task doc --input_path path/to/img --use_layout_detection --save_vis --
173
167
 
174
168
  ```bash
175
169
  # Install gradio
176
- pip install gradio==4.20.0
170
+ pip install gradio
177
171
  ```
178
172
 
179
173
  ### OCR Demo
@@ -181,7 +175,6 @@ pip install gradio==4.20.0
181
175
  Launch Gradio web interface for OCR tasks:
182
176
 
183
177
  ```bash
184
- pip install onnxruntime
185
178
  # Local access only
186
179
  openocr --task launch_openocr_demo --server_port 7860
187
180
 
@@ -194,7 +187,6 @@ openocr --task launch_openocr_demo --server_port 7860 --share
194
187
  Launch Gradio web interface for universal recognition:
195
188
 
196
189
  ```bash
197
- pip install onnxruntime
198
190
  openocr --task launch_unirec_demo --server_port 7861 --share
199
191
  ```
200
192
 
@@ -203,7 +195,6 @@ openocr --task launch_unirec_demo --server_port 7861 --share
203
195
  Launch Gradio web interface for document parsing:
204
196
 
205
197
  ```bash
206
- pip install onnxruntime
207
198
  openocr --task launch_opendoc_demo --server_port 7862 --share
208
199
  ```
209
200