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.
- {openocr_python-0.1.0.dev0/openocr_python.egg-info → openocr_python-0.1.0.dev2}/PKG-INFO +21 -30
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/QUICKSTART.md +3 -6
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/__init__.py +1 -1
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/demo_gradio.py +5 -3
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/demo_opendoc.py +7 -1
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/demo_unirec.py +106 -146
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_doc_onnx.py +1 -1
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2/openocr_python.egg-info}/PKG-INFO +21 -30
- openocr_python-0.1.0.dev2/openocr_python.egg-info/requires.txt +27 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/pyproject.toml +18 -27
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/setup.py +0 -44
- openocr_python-0.1.0.dev0/openocr_python.egg-info/requires.txt +0 -36
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/LICENSE +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/MANIFEST.in +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/evaluation.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/ltb.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/mjsynth.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/openvino.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/ost.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/synthtext.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/test.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/textocr.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/textocr_horizontal.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/union14m_b.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/dataset/rec/union14m_l_filtered.yaml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/det/dbnet/repvit_db.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/resnet45_trans_abinet_lang.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/resnet45_trans_abinet_wo_lang.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/svtrv2_abinet_lang.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/abinet/svtrv2_abinet_wo_lang.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/aster/resnet31_lstm_aster_tps_on.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/aster/svtrv2_aster.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/aster/svtrv2_aster_tps_on.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/autostr/autostr_lstm_aster_tps_on.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/svtrv2_busnet.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/svtrv2_busnet_pretraining.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/vit_busnet.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/busnet/vit_busnet_pretraining.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cam/convnextv2_cam_tps_on.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cam/convnextv2_tiny_cam_tps_on.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cam/svtrv2_cam_tps_on.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cdistnet/resnet45_trans_cdistnet.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cdistnet/svtrv2_cdistnet.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cmer/cmer.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd_ch.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd_h8.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtr_base_cppd_syn.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/cppd/svtrv2_cppd.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/dan/resnet45_fpn_dan.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/dan/svtrv2_dan.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/dptr/dptr_parseq_pretrain.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/focalsvtr/focalsvtr_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/gtc/svtrv2_lnconv_nrtr_gtc.yml +0 -0
- {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
- {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
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/gtc/svtrv2_lnconv_smtr_gtc_stream.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/igtr/svtr_base_ds_igtr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lister/focalsvtr_lister_wo_fem_maxratio12.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lister/svtrv2_lister_wo_fem_maxratio12.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtr_base_lpv.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtr_base_lpv_wo_glrm.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtrv2_lpv.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/lpv/svtrv2_lpv_wo_glrm.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/maerec/vit_nrtr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/matrn/resnet45_trans_matrn.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/matrn/svtrv2_matrn.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_base.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mdiff4str/svtrv2_mdiffdecoder_small.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/svtrv2_mgpstr_only_char.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_base_mgpstr_only_char.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_large_mgpstr_only_char.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_mgpstr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/mgpstr/vit_mgpstr_only_char.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/moran/resnet31_lstm_moran.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/focalsvtr_nrtr_maxraio12.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/nrtr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/svtr_base_nrtr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/svtr_base_nrtr_syn.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/nrtr/svtrv2_nrtr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/ote/svtr_base_h8_ote.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/ote/svtr_base_ote.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/parseq/focalsvtr_parseq_maxratio12.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/parseq/svrtv2_parseq.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/parseq/vit_parseq.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/robustscanner/resnet31_robustscanner.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/robustscanner/svtrv2_robustscanner.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/sar/resnet31_lstm_sar.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/sar/svtrv2_sar.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/seed/resnet31_lstm_seed_tps_on.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/focalsvtr_smtr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/focalsvtr_smtr_long.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/svtrv2_smtr.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/smtr/svtrv2_smtr_bi.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/srn/resnet50_fpn_srn.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/srn/svtrv2_srn.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_h8_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_h8_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_tiny_h8_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/convnextv2_tiny_h8_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/crnn_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/crnn_ctc_long.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalnet_base_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalnet_base_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalsvtr_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/focalsvtr_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/resnet45_trans_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/resnet45_trans_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/svtr_base_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/svtr_base_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/svtrnet_ctc_syn.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/vit_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrs/vit_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/repsvtr_ch.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_ch.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_ctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_small_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_smtr_gtc_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_smtr_gtc_rctc_ch.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_smtr_gtc_rctc_infer.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/svtrv2/svtrv2_tiny_rctc.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/unirec/focalsvtr_ardecoder_unirec.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/unirec/opendoc_pipeline.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/resnet45_trans_visionlan_LA.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/resnet45_trans_visionlan_LF_1.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/resnet45_trans_visionlan_LF_2.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/svtrv2_visionlan_LA.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/svtrv2_visionlan_LF_1.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/configs/rec/visionlan/svtrv2_visionlan_LF_2.yml +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/losses/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/losses/db_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/losses/det_basic_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/metrics/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/metrics/det_metric.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/metrics/eval_det_iou.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/backbones/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/backbones/repvit.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/base_detector.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/heads/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/heads/db_head.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/necks/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/modeling/necks/db_fpn.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/postprocess/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/postprocess/db_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/crop_paste.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/crop_resize.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/db_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/db_resize_for_test.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/opendet/preprocess/iaa_augment.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openocr.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/abinet_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/ar_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cam_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cdistnet_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/ce_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cmer_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/cppd_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/ctc_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/igtr_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/lister_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/lpv_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/mdiff_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/mgp_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/parseq_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/robustscanner_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/seed_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/smtr_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/srn_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/unirec_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/losses/visionlan_loss.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_cmer.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_gtc.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_long.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/metrics/rec_metric_mgp.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/base_recognizer.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/cmer_modeling/modeling_cmer.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/common.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/abinet_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/aster_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/bus_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/cam_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/cdistnet_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/cppd_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/ctc_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/dan_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/dptr_parseq_clip_b_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/igtr_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/lister_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/lpv_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/matrn_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/mdiff_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/mgp_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/nrtr_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/ote_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/parseq_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/rctc_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/robustscanner_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/sar_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/smtr_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/smtr_decoder_nattn.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/srn_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/decoders/visionlan_decoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/autostr_encoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/cam_encoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/convnextv2.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/focalsvtr.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/nrtr_encoder.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_hgnet.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_lcnetv3.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_mobilenet_v3.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_mv1_enhance.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_nrtr_mtb.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_31.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_45.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_fpn.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/rec_resnet_vd.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/repvit.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/resnet31_rnn.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrnet.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrnet2dpos.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrv2.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrv2_lnconv.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/svtrv2_lnconv_two33.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/encoders/vit.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/aster_tps.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/moran.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/transforms/tps.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/unirec_modeling/configuration_unirec.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/modeling/unirec_modeling/modeling_unirec.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/optimizer/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/optimizer/lr.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/abinet_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/ar_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/ce_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/char_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/cmer_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/cppd_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/ctc_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/igtr_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/lister_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/mgp_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/nrtr_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/smtr_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/srn_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/unirec_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/postprocess/visionlan_postprocess.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/abinet_aug.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/abinet_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ar_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/auto_augment.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/cam_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ce_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/char_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/cmer_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/cppd_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ctc_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/dptr_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/ep_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/igtr_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/mdiff_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/mgp_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/parseq_aug.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/rec_aug.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/resize.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/smtr_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/srn_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/unirec_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/openrec/preprocess/visionlan_label_encode.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/create_lmdb_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/cmer_web_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/collate_fn.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/lmdb_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/lmdb_dataset_test.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/multi_scale_sampler.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/native_size_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/native_size_sampler.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset_test.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset_tvresize.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_dataset_tvresize_test.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/ratio_sampler.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/simple_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/strlmdb_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/data/text_lmdb_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/download/download_dataset.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/download/utils.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/download_example_images.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/engine/config.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/engine/trainer.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_det.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_ch.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_en.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_long.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/eval_rec_all_long_simple.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/export_rec.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer/onnx_engine.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer/predict_rec.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer/utility.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_det.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_doc.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_e2e.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_e2e_parallel.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_rec.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/infer_unirec_onnx.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/to_markdown.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/toonnx.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/train_det.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/train_rec.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utility.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/EN_symbol_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/__init__.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/ckpt.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ar_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/arabic_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/be_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/bg_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/chinese_cht_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/cyrillic_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/devanagari_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/en_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/fa_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/french_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/german_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/hi_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/it_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/japan_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ka_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/kie_dict/xfund_class_list.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/korean_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/latex_symbol_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/latin_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/layout_dict/layout_cdla_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/layout_dict/layout_publaynet_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/layout_dict/layout_table_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/mr_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ne_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/oc_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/pu_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/rs_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/rsc_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ru_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/spin_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ta_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_master_structure_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_structure_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/table_structure_dict_ch.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/te_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ug_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/uk_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/ur_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict/xi_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/dict90.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_metric/Deteval.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_metric/polygon_fast.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/extract_batchsize.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/extract_textpoint_fast.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/extract_textpoint_slow.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/pgnet_pp_utils.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/e2e_utils/visual.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/en_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/gen_label.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/ic15_dict.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/logging.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/opendoc_onnx_utils/utils.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/poly_nms.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/ppocr_keys_v1.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/stats.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/utility.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr/tools/utils/visual.py +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/SOURCES.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/dependency_links.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/entry_points.txt +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/not-zip-safe +0 -0
- {openocr_python-0.1.0.dev0 → openocr_python-0.1.0.dev2}/openocr_python.egg-info/top_level.txt +0 -0
- {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.
|
|
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
|
|
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
|
|
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
|
-
|
|
40
|
-
Requires-Dist:
|
|
39
|
+
Requires-Dist: huggingface-hub
|
|
40
|
+
Requires-Dist: modelscope
|
|
41
|
+
Requires-Dist: onnxruntime
|
|
41
42
|
Provides-Extra: onnx-gpu
|
|
42
|
-
Requires-Dist: onnxruntime-gpu
|
|
43
|
+
Requires-Dist: onnxruntime-gpu; extra == "onnx-gpu"
|
|
43
44
|
Provides-Extra: pytorch
|
|
44
|
-
Requires-Dist: torch
|
|
45
|
-
Requires-Dist: torchvision
|
|
45
|
+
Requires-Dist: torch; extra == "pytorch"
|
|
46
|
+
Requires-Dist: torchvision; extra == "pytorch"
|
|
46
47
|
Provides-Extra: gradio
|
|
47
|
-
Requires-Dist: 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:
|
|
54
|
-
Requires-Dist:
|
|
55
|
-
Requires-Dist:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
79
|
-
"""
|
|
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 =
|
|
82
|
-
eos_token_id =
|
|
83
|
-
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 =
|
|
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(
|
|
107
|
+
for _ in range(model.num_decoder_layers):
|
|
95
108
|
empty_key = np.zeros(
|
|
96
|
-
(batch_size,
|
|
109
|
+
(batch_size, model.num_heads, 0, model.head_dim),
|
|
97
110
|
dtype=np.float32)
|
|
98
111
|
empty_value = np.zeros(
|
|
99
|
-
(batch_size,
|
|
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
|
-
|
|
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 =
|
|
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
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
#
|
|
140
|
-
if
|
|
141
|
-
|
|
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
|
-
|
|
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
|
-
|
|
228
|
-
#
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
gr.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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
|
-
|
|
259
|
-
|
|
260
|
-
|
|
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
|
-
|
|
286
|
-
|
|
287
|
-
|
|
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.
|
|
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'
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
40
|
-
Requires-Dist:
|
|
39
|
+
Requires-Dist: huggingface-hub
|
|
40
|
+
Requires-Dist: modelscope
|
|
41
|
+
Requires-Dist: onnxruntime
|
|
41
42
|
Provides-Extra: onnx-gpu
|
|
42
|
-
Requires-Dist: onnxruntime-gpu
|
|
43
|
+
Requires-Dist: onnxruntime-gpu; extra == "onnx-gpu"
|
|
43
44
|
Provides-Extra: pytorch
|
|
44
|
-
Requires-Dist: torch
|
|
45
|
-
Requires-Dist: torchvision
|
|
45
|
+
Requires-Dist: torch; extra == "pytorch"
|
|
46
|
+
Requires-Dist: torchvision; extra == "pytorch"
|
|
46
47
|
Provides-Extra: gradio
|
|
47
|
-
Requires-Dist: 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:
|
|
54
|
-
Requires-Dist:
|
|
55
|
-
Requires-Dist:
|
|
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
|
|
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
|
|
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
|
|
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
|
|