BabelDOC 0.3.63__tar.gz → 0.3.65__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.
- {babeldoc-0.3.63 → babeldoc-0.3.65}/PKG-INFO +1 -1
- babeldoc-0.3.65/babeldoc/__init__.py +1 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/const.py +1 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/backend/pdf_creater.py +5 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/il_translator.py +1 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/il_translator_llm_only.py +2 -2
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/layout_helper.py +1 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/docvision/doclayout.py +1 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/docvision/rpc_doclayout.py +1 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/docvision/table_detection/rapidocr.py +1 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/high_level.py +3 -7
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/main.py +1 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/tools/italic_assistance.py +78 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/CONTRIBUTOR_REWARD.md +8 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/pyproject.toml +2 -2
- {babeldoc-0.3.63 → babeldoc-0.3.65}/uv.lock +148 -64
- babeldoc-0.3.63/babeldoc/__init__.py +0 -1
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.cursorignore +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/dependabot.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/labels.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/release-drafter.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/workflows/docs.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/workflows/lint.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/workflows/pr-lint.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/workflows/publish-to-pypi.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.github/workflows/test.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.gitignore +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/LICENSE +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/README.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/assets/assets.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/converter.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/backend/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/frontend/il_creater.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/il_version_1.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/il_version_1.rng +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/automatic_term_extractor.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/translator/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/translator/cache.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/translator/translator.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/atomic_integer.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/mupdf_helper.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/paragraph_helper.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/utils/zstd_helper.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/document_il/xml_converter.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/docvision/base_doclayout.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/format/office/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/glossary.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfinterp.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/LICENSE +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/__init__.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/_saslprep.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/arcfour.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/ascii85.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/casting.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/ccitt.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/README.txt +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/cmapdb.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/converter.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/data_structures.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/encodingdb.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/fontmetrics.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/glyphlist.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/high_level.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/image.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/jbig2.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/latin_enc.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/layout.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/lzw.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdfcolor.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdfdevice.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdfdocument.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdfexceptions.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdffont.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdfinterp.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdfpage.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdfparser.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/pdftypes.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/psexceptions.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/psparser.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/py.typed +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/runlength.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/settings.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/pdfminer/utils.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/result_merger.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/split_manager.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/tools/italic_recognize_tool.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/babeldoc/translation_config.py +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/README.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/deploy.sh +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/example/demo_glossary.csv +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/index.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/requirements.txt +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/docs/supported_languages.md +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/mkdocs.yml +0 -0
- {babeldoc-0.3.63 → babeldoc-0.3.65}/tests/test_translation_config.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.3.65"
|
|
@@ -99,6 +99,7 @@ def parse_truetype_data(data):
|
|
|
99
99
|
TOUNICODE_HEAD = """\
|
|
100
100
|
/CIDInit /ProcSet findresource begin
|
|
101
101
|
12 dict begin
|
|
102
|
+
begincmap
|
|
102
103
|
/CIDSystemInfo <</Registry(Adobe)/Ordering(UCS)/Supplement 0>> def
|
|
103
104
|
/CMapName /Adobe-Identity-UCS def
|
|
104
105
|
/CMapType 2 def
|
|
@@ -124,7 +125,10 @@ def make_tounicode(cmap, used):
|
|
|
124
125
|
if code < 0x10000:
|
|
125
126
|
line.append(f"<{glyph:04x}><{code:04x}>")
|
|
126
127
|
else:
|
|
127
|
-
|
|
128
|
+
code -= 0x10000
|
|
129
|
+
high = 0xD800 + (code >> 10)
|
|
130
|
+
low = 0xDC00 + (code & 0b1111111111)
|
|
131
|
+
line.append(f"<{glyph:04x}><{high:04x}{low:04x}>")
|
|
128
132
|
line.append("endbfchar")
|
|
129
133
|
line.append(TOUNICODE_TAIL)
|
|
130
134
|
return "\n".join(line)
|
|
@@ -867,7 +867,7 @@ class ILTranslator:
|
|
|
867
867
|
"3. If there is no need to translate (such as proper nouns, codes, etc.), then return the original text."
|
|
868
868
|
)
|
|
869
869
|
llm_input.append(
|
|
870
|
-
"4. Only output the translation result without explanations and annotations."
|
|
870
|
+
f"4. Only output the translation result in {self.translation_config.lang_out} without explanations and annotations."
|
|
871
871
|
)
|
|
872
872
|
llm_input.append(f"5. Translate text into {self.translation_config.lang_out}.")
|
|
873
873
|
prompt_template = f"""
|
|
@@ -284,7 +284,7 @@ class ILTranslatorLLMOnly:
|
|
|
284
284
|
llm_prompt_parts.append(self.translation_config.custom_system_prompt)
|
|
285
285
|
else:
|
|
286
286
|
llm_prompt_parts.append(
|
|
287
|
-
f"You are a professional and reliable machine translation engine responsible for translating the input text into {self.translation_config.lang_out}
|
|
287
|
+
f"You are a professional and reliable machine translation engine responsible for translating the input text into {self.translation_config.lang_out}.\n"
|
|
288
288
|
"When translating, strictly follow the instructions below to ensure translation quality and preserve all formatting, tags, and placeholders:\n"
|
|
289
289
|
)
|
|
290
290
|
|
|
@@ -378,7 +378,7 @@ class ILTranslatorLLMOnly:
|
|
|
378
378
|
'1. You will receive a JSON object with entries containing "id" and "input" fields.'
|
|
379
379
|
)
|
|
380
380
|
llm_prompt_parts.append(
|
|
381
|
-
'2. Your task is to translate the value of "input" into
|
|
381
|
+
f'2. Your task is to translate the value of "input" into {self.translation_config.lang_out}, while applying the rules above.'
|
|
382
382
|
)
|
|
383
383
|
llm_prompt_parts.append(
|
|
384
384
|
'3. Return a new JSON object with the same "id" and the translated "output" field.'
|
|
@@ -39,7 +39,7 @@ LEFT_BRACKET = ("(cid:8)", "(", "(cid:16)", "{", "[", "(cid:104)", "(cid:2)")
|
|
|
39
39
|
RIGHT_BRACKET = ("(cid:9)", ")", "(cid:17)", "}", "]", "(cid:105)", "(cid:3)")
|
|
40
40
|
|
|
41
41
|
BULLET_POINT_PATTERN = re.compile(
|
|
42
|
-
r"[
|
|
42
|
+
r"[■•⚫⬤◆◇○●◦‣⁃▪▫∗†‡¹²³⁴⁵⁶⁷⁸⁹⁰₁₂₃₄₅₆₇₈₉₀ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖᵍʳˢᵗᵘᵛʷˣʸᶻ†‡§¶※⁑⁂⁕⁎⁜⁑❧☙⁋‖‽·]"
|
|
43
43
|
)
|
|
44
44
|
|
|
45
45
|
|
|
@@ -217,7 +217,7 @@ class OnnxModel(DocLayoutModel):
|
|
|
217
217
|
with self.lock:
|
|
218
218
|
# pix = mupdf_doc[page.page_number].get_pixmap(dpi=72)
|
|
219
219
|
pix = get_no_rotation_img(mupdf_doc[page.page_number])
|
|
220
|
-
image = np.
|
|
220
|
+
image = np.frombuffer(pix.samples, np.uint8).reshape(
|
|
221
221
|
pix.height,
|
|
222
222
|
pix.width,
|
|
223
223
|
3,
|
|
@@ -259,7 +259,7 @@ class RpcDocLayoutModel(DocLayoutModel):
|
|
|
259
259
|
with self.lock:
|
|
260
260
|
# pix = mupdf_doc[page.page_number].get_pixmap(dpi=72)
|
|
261
261
|
pix = get_no_rotation_img(mupdf_doc[page.page_number])
|
|
262
|
-
image = np.
|
|
262
|
+
image = np.frombuffer(pix.samples, np.uint8).reshape(
|
|
263
263
|
pix.height,
|
|
264
264
|
pix.width,
|
|
265
265
|
3,
|
|
@@ -239,7 +239,7 @@ class RapidOCRModel:
|
|
|
239
239
|
with self.lock:
|
|
240
240
|
# pix = mupdf_doc[page.page_number].get_pixmap(dpi=72)
|
|
241
241
|
pix = get_no_rotation_img(mupdf_doc[page.page_number])
|
|
242
|
-
image = np.
|
|
242
|
+
image = np.frombuffer(pix.samples, np.uint8).reshape(
|
|
243
243
|
pix.height,
|
|
244
244
|
pix.width,
|
|
245
245
|
3,
|
|
@@ -92,7 +92,7 @@ def fix_cmap(translate_result: TranslateResult, translate_config: TranslationCon
|
|
|
92
92
|
"no_watermark_dual_pdf_path",
|
|
93
93
|
):
|
|
94
94
|
path = getattr(translate_result, attr)
|
|
95
|
-
if path in processed:
|
|
95
|
+
if not path or path in processed:
|
|
96
96
|
continue
|
|
97
97
|
processed.append(path)
|
|
98
98
|
|
|
@@ -188,7 +188,7 @@ def start_parse_il(
|
|
|
188
188
|
# but in order to facilitate the migration of pdf2zh,
|
|
189
189
|
# the relevant code is temporarily retained.
|
|
190
190
|
# pix = doc_zh[page.pageno].get_pixmap()
|
|
191
|
-
# image = np.
|
|
191
|
+
# image = np.frombuffer(pix.samples, np.uint8).reshape(
|
|
192
192
|
# pix.height, pix.width, 3
|
|
193
193
|
# )[:, :, ::-1]
|
|
194
194
|
# page_layout = model.predict(
|
|
@@ -593,11 +593,7 @@ def do_translate(
|
|
|
593
593
|
result.original_pdf_path = translation_config.input_file
|
|
594
594
|
result.peak_memory_usage = peak_memory_usage
|
|
595
595
|
|
|
596
|
-
|
|
597
|
-
# Although the issue of Windows Edge
|
|
598
|
-
# not being able to copy translated text can be fixed,
|
|
599
|
-
# the macOS preview is broken
|
|
600
|
-
# fix_cmap(result, translation_config)
|
|
596
|
+
fix_cmap(result, translation_config)
|
|
601
597
|
try:
|
|
602
598
|
migrate_toc(translation_config, result)
|
|
603
599
|
except Exception as e:
|
|
@@ -5,6 +5,10 @@ from pathlib import Path
|
|
|
5
5
|
|
|
6
6
|
import orjson
|
|
7
7
|
from babeldoc.const import CACHE_FOLDER
|
|
8
|
+
from babeldoc.document_il.midend.styles_and_formulas import StylesAndFormulas
|
|
9
|
+
from babeldoc.translation_config import TranslationConfig
|
|
10
|
+
from rich.console import Console
|
|
11
|
+
from rich.table import Table
|
|
8
12
|
|
|
9
13
|
WORKING_FOLDER = Path(CACHE_FOLDER) / "working"
|
|
10
14
|
|
|
@@ -210,6 +214,80 @@ def main():
|
|
|
210
214
|
f"No fonts found for paragraphs matching debug_id pattern: {args.debug_id_regex}"
|
|
211
215
|
)
|
|
212
216
|
|
|
217
|
+
fonts = []
|
|
218
|
+
|
|
219
|
+
# Read intermediate representation
|
|
220
|
+
with json_path.open(encoding="utf-8") as f:
|
|
221
|
+
pdf_data = json.load(f)
|
|
222
|
+
|
|
223
|
+
for page_index, page in enumerate(pdf_data["page"]):
|
|
224
|
+
for paragraph_index, paragraph_content in enumerate(page["pdf_paragraph"]):
|
|
225
|
+
font_debug_id = paragraph_content["debug_id"]
|
|
226
|
+
if font_debug_id:
|
|
227
|
+
# Create page font mapping
|
|
228
|
+
page_font_map = {}
|
|
229
|
+
for font in page["pdf_font"]:
|
|
230
|
+
if "font_id" in font and "name" in font:
|
|
231
|
+
page_font_map[font["font_id"]] = (font["font_id"], font["name"])
|
|
232
|
+
|
|
233
|
+
# Extract fonts from paragraph
|
|
234
|
+
name_list = []
|
|
235
|
+
paragraph_fonts = extract_fonts_from_paragraph(
|
|
236
|
+
paragraph_content, page_font_map
|
|
237
|
+
)
|
|
238
|
+
for _font_id, font_name in paragraph_fonts:
|
|
239
|
+
name_list.append(font_name)
|
|
240
|
+
|
|
241
|
+
font_list = []
|
|
242
|
+
for each in fonts:
|
|
243
|
+
font_list.append(each[1])
|
|
244
|
+
|
|
245
|
+
for each_name in name_list:
|
|
246
|
+
if each_name not in font_list:
|
|
247
|
+
fonts.append(
|
|
248
|
+
(page_index, each_name, paragraph_index, font_debug_id)
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
# Initialize checker
|
|
252
|
+
translation_config = TranslationConfig(
|
|
253
|
+
*[None for _ in range(3)], lang_out="zh_cn", doc_layout_model=1
|
|
254
|
+
)
|
|
255
|
+
checker = StylesAndFormulas(translation_config)
|
|
256
|
+
|
|
257
|
+
# Create table
|
|
258
|
+
table = Table(title="Font Recognition Results")
|
|
259
|
+
table.add_column("Page #", justify="center", style="cyan")
|
|
260
|
+
table.add_column("Paragraph #", justify="center", style="cyan")
|
|
261
|
+
table.add_column("DEBUG_ID", justify="center", style="cyan")
|
|
262
|
+
table.add_column("Font Name", style="magenta")
|
|
263
|
+
table.add_column("Recognition Result", justify="center")
|
|
264
|
+
|
|
265
|
+
# Output results
|
|
266
|
+
for each_font in fonts:
|
|
267
|
+
page_index, font_name, paragraph_index, font_debug_id = each_font
|
|
268
|
+
|
|
269
|
+
if checker.is_formulas_font(font_name):
|
|
270
|
+
table.add_row(
|
|
271
|
+
str(page_index),
|
|
272
|
+
str(paragraph_index),
|
|
273
|
+
str(font_debug_id),
|
|
274
|
+
font_name,
|
|
275
|
+
"[bold red]Formula Font[/bold red]",
|
|
276
|
+
)
|
|
277
|
+
else:
|
|
278
|
+
table.add_row(
|
|
279
|
+
str(page_index),
|
|
280
|
+
str(paragraph_index),
|
|
281
|
+
str(font_debug_id),
|
|
282
|
+
font_name,
|
|
283
|
+
"[bold blue]Non-Formula Font[/bold blue]",
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
# Print table
|
|
287
|
+
console = Console()
|
|
288
|
+
|
|
289
|
+
console.print(table)
|
|
290
|
+
|
|
213
291
|
return 0
|
|
214
292
|
|
|
215
293
|
|
|
@@ -16,7 +16,10 @@
|
|
|
16
16
|
|
|
17
17
|
### 二、申请流程
|
|
18
18
|
#### **申请条件**
|
|
19
|
-
- PR
|
|
19
|
+
- PR 需被成功合并至以下几个仓库:
|
|
20
|
+
1. [funstory-ai/BabelDOC](https://github.com/funstory-ai/BabelDOC/pulls) 仓库
|
|
21
|
+
2. [Byaidu/PDFMathTranslate](https://github.com/Byaidu/PDFMathTranslate/pulls) 的主分支
|
|
22
|
+
3. [PDFMathTranslate/PDFMathTranslate-next](https://github.com/PDFMathTranslate/PDFMathTranslate-next/pulls) 的主分支。
|
|
20
23
|
- 若目标为 [funstory-ai/BabelDOC](https://github.com/funstory-ai/BabelDOC/pulls) 的 PR 未被合并,但被维护者认定为有价值的概念验证,同样符合条件。
|
|
21
24
|
- 审核 PR、撰写 wiki 等贡献也必须是以上两个仓库。
|
|
22
25
|
- 同一贡献者每月仅可申请一次(无论提交 PR 数量)
|
|
@@ -33,6 +36,10 @@
|
|
|
33
36
|
- 附件要求:
|
|
34
37
|
- PR 页面完整截图(需包含合并状态、仓库名称及点击头像后弹出来的侧边栏,如下图所示)
|
|
35
38
|
|
|
39
|
+
> [!IMPORTANT]
|
|
40
|
+
>
|
|
41
|
+
> 不满足上述格式要求的邮件会被直接忽略!
|
|
42
|
+
|
|
36
43
|

|
|
37
44
|
|
|
38
45
|
#### **奖励说明**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "BabelDOC"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.65"
|
|
4
4
|
description = "Yet Another Document Translator"
|
|
5
5
|
license = "AGPL-3.0"
|
|
6
6
|
readme = "README.md"
|
|
@@ -154,7 +154,7 @@ pythonpath = [".", "src"]
|
|
|
154
154
|
testpaths = ["tests"]
|
|
155
155
|
|
|
156
156
|
[bumpver]
|
|
157
|
-
current_version = "0.3.
|
|
157
|
+
current_version = "0.3.65"
|
|
158
158
|
version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
|
|
159
159
|
|
|
160
160
|
[bumpver.file_patterns]
|