BabelDOC 0.5.0__tar.gz → 0.5.1__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.5.0 → babeldoc-0.5.1}/.github/workflows/docs.yml +1 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/publish-to-pypi.yml +1 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/test.yml +1 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/PKG-INFO +1 -1
- babeldoc-0.5.1/babeldoc/__init__.py +1 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/const.py +1 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +89 -96
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/frontend/il_creater.py +1 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +24 -16
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +2 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/high_level.py +3 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/translation_config.py +5 -2
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/main.py +1 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/pyproject.toml +2 -2
- babeldoc-0.5.0/babeldoc/__init__.py +0 -1
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.cursorignore +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/dependabot.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/labels.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/release-drafter.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/lint.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/pr-lint.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.gitignore +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/LICENSE +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/README.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/assets/assets.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/babeldoc_exception/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/base_doclayout.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout2.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout3.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout4.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout5.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout6.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout7.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/babelpdf/base14.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/babelpdf/encoding.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/babelpdf/utils.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/converter.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.rng +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/extract_char.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/matrix_helper.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/spatial_analyzer.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/pdfinterp.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/result_merger.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/split_manager.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/glossary.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/LICENSE +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/_saslprep.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/arcfour.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/ascii85.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/casting.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/ccitt.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/README.txt +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmapdb.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/converter.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/data_structures.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/encodingdb.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/fontmetrics.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/glyphlist.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/high_level.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/image.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/jbig2.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/latin_enc.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/layout.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/lzw.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfcolor.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfdevice.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfdocument.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfexceptions.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdffont.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfinterp.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfpage.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfparser.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdftypes.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/psexceptions.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/psparser.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/py.typed +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/runlength.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/settings.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/utils.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/tools/italic_assistance.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/tools/italic_recognize_tool.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/translator/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/translator/cache.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/translator/translator.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/utils/__init__.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/utils/atomic_integer.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/CONTRIBUTOR_REWARD.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/README.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/deploy.sh +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/example/demo_glossary.csv +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/index.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/requirements.txt +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/supported_languages.md +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/mkdocs.yml +0 -0
- {babeldoc-0.5.0 → babeldoc-0.5.1}/tests/test_translation_cache_cleanup.py +0 -0
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
git config user.name github-actions[bot]
|
|
18
18
|
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
19
19
|
- name: Setup uv with Python 3.12
|
|
20
|
-
uses: astral-sh/setup-uv@
|
|
20
|
+
uses: astral-sh/setup-uv@d9e0f98d3fc6adb07d1e3d37f3043649ddad06a1 # v6.5.0
|
|
21
21
|
with:
|
|
22
22
|
python-version: "3.12"
|
|
23
23
|
enable-cache: true
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
36
36
|
|
|
37
37
|
- name: Setup uv with Python 3.12
|
|
38
|
-
uses: astral-sh/setup-uv@
|
|
38
|
+
uses: astral-sh/setup-uv@d9e0f98d3fc6adb07d1e3d37f3043649ddad06a1 # v6.5.0
|
|
39
39
|
with:
|
|
40
40
|
python-version: "3.12"
|
|
41
41
|
enable-cache: true
|
|
@@ -28,7 +28,7 @@ jobs:
|
|
|
28
28
|
path: ~/.cache/babeldoc
|
|
29
29
|
key: babeldoc-assets-${{ hashFiles('babeldoc/assets/embedding_assets_metadata.py') }}
|
|
30
30
|
- name: Setup uv with Python ${{ matrix.python-version }}
|
|
31
|
-
uses: astral-sh/setup-uv@
|
|
31
|
+
uses: astral-sh/setup-uv@d9e0f98d3fc6adb07d1e3d37f3043649ddad06a1 # v6.5.0
|
|
32
32
|
with:
|
|
33
33
|
python-version: ${{ matrix.python-version }}
|
|
34
34
|
enable-cache: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.5.1"
|
|
@@ -1256,103 +1256,9 @@ class PDFCreater:
|
|
|
1256
1256
|
len(self.docs.page),
|
|
1257
1257
|
) as pbar:
|
|
1258
1258
|
for page in self.docs.page:
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
ctm_for_ops = (
|
|
1262
|
-
1,
|
|
1263
|
-
0,
|
|
1264
|
-
0,
|
|
1265
|
-
1,
|
|
1266
|
-
-page_crop_box.x,
|
|
1267
|
-
-page_crop_box.y,
|
|
1259
|
+
self.update_page_content_stream(
|
|
1260
|
+
check_font_exists, page, pdf, translation_config
|
|
1268
1261
|
)
|
|
1269
|
-
ctm_for_ops = (
|
|
1270
|
-
f" {' '.join(f'{x:f}' for x in ctm_for_ops)} cm ".encode()
|
|
1271
|
-
)
|
|
1272
|
-
|
|
1273
|
-
translation_config.raise_if_cancelled()
|
|
1274
|
-
xobj_available_fonts = {}
|
|
1275
|
-
xobj_draw_ops = {}
|
|
1276
|
-
xobj_encoding_length_map = {}
|
|
1277
|
-
available_font_list = self.get_available_font_list(pdf, page)
|
|
1278
|
-
page_encoding_length_map: dict[str | None, int | None] = {
|
|
1279
|
-
f.font_id: f.encoding_length for f in page.pdf_font
|
|
1280
|
-
}
|
|
1281
|
-
all_encoding_length_map = page_encoding_length_map.copy()
|
|
1282
|
-
|
|
1283
|
-
for xobj in page.pdf_xobject:
|
|
1284
|
-
xobj_available_fonts[xobj.xobj_id] = available_font_list.copy()
|
|
1285
|
-
try:
|
|
1286
|
-
xobj_available_fonts[xobj.xobj_id].update(
|
|
1287
|
-
self.get_xobj_available_fonts(xobj.xref_id, pdf),
|
|
1288
|
-
)
|
|
1289
|
-
except Exception:
|
|
1290
|
-
pass
|
|
1291
|
-
xobj_encoding_length_map[xobj.xobj_id] = {
|
|
1292
|
-
f.font_id: f.encoding_length for f in xobj.pdf_font
|
|
1293
|
-
}
|
|
1294
|
-
all_encoding_length_map.update(
|
|
1295
|
-
xobj_encoding_length_map[xobj.xobj_id]
|
|
1296
|
-
)
|
|
1297
|
-
xobj_encoding_length_map[xobj.xobj_id].update(
|
|
1298
|
-
page_encoding_length_map
|
|
1299
|
-
)
|
|
1300
|
-
xobj_op = BitStream()
|
|
1301
|
-
base_op = xobj.base_operations.value
|
|
1302
|
-
base_op = zstd_decompress(base_op)
|
|
1303
|
-
xobj_op.append(base_op.encode())
|
|
1304
|
-
xobj_draw_ops[xobj.xobj_id] = xobj_op
|
|
1305
|
-
|
|
1306
|
-
page_op = BitStream()
|
|
1307
|
-
# q {ops_base}Q 1 0 0 1 {x0} {y0} cm {ops_new}
|
|
1308
|
-
# page_op.append(b"q ")
|
|
1309
|
-
# base_op = page.base_operations.value
|
|
1310
|
-
# base_op = zstd_decompress(base_op)
|
|
1311
|
-
# page_op.append(base_op.encode())
|
|
1312
|
-
# page_op.append(b" \n")
|
|
1313
|
-
page_op.append(ctm_for_ops)
|
|
1314
|
-
page_op.append(b" \n")
|
|
1315
|
-
|
|
1316
|
-
# Create render context
|
|
1317
|
-
context = RenderContext(
|
|
1318
|
-
pdf_creator=self,
|
|
1319
|
-
page=page,
|
|
1320
|
-
available_font_list=available_font_list,
|
|
1321
|
-
page_encoding_length_map=page_encoding_length_map,
|
|
1322
|
-
all_encoding_length_map=all_encoding_length_map,
|
|
1323
|
-
xobj_available_fonts=xobj_available_fonts,
|
|
1324
|
-
xobj_encoding_length_map=xobj_encoding_length_map,
|
|
1325
|
-
ctm_for_ops=ctm_for_ops,
|
|
1326
|
-
check_font_exists=check_font_exists,
|
|
1327
|
-
)
|
|
1328
|
-
|
|
1329
|
-
# Create render units for all renderable objects
|
|
1330
|
-
render_units = self.create_render_units_for_page(
|
|
1331
|
-
page, translation_config
|
|
1332
|
-
)
|
|
1333
|
-
|
|
1334
|
-
# Render all units to their appropriate streams
|
|
1335
|
-
self.render_units_to_stream(
|
|
1336
|
-
render_units, context, page_op, xobj_draw_ops
|
|
1337
|
-
)
|
|
1338
|
-
|
|
1339
|
-
# Update xobject streams
|
|
1340
|
-
for xobj in page.pdf_xobject:
|
|
1341
|
-
draw_op = xobj_draw_ops[xobj.xobj_id]
|
|
1342
|
-
try:
|
|
1343
|
-
pdf.update_stream(xobj.xref_id, draw_op.tobytes())
|
|
1344
|
-
except Exception:
|
|
1345
|
-
logger.warning(
|
|
1346
|
-
f"update xref {xobj.xref_id} stream fail, continue"
|
|
1347
|
-
)
|
|
1348
|
-
|
|
1349
|
-
draw_op = page_op
|
|
1350
|
-
op_container = pdf.get_new_xref()
|
|
1351
|
-
# Since this is a draw instruction container,
|
|
1352
|
-
# no additional information is needed
|
|
1353
|
-
pdf.update_object(op_container, "<<>>")
|
|
1354
|
-
pdf.update_stream(op_container, draw_op.tobytes())
|
|
1355
|
-
pdf[page.page_number].set_contents(op_container)
|
|
1356
1262
|
pbar.advance()
|
|
1357
1263
|
translation_config.raise_if_cancelled()
|
|
1358
1264
|
gc_level = 1
|
|
@@ -1512,3 +1418,90 @@ class PDFCreater:
|
|
|
1512
1418
|
if not check_font_exists:
|
|
1513
1419
|
return self.write(translation_config, True)
|
|
1514
1420
|
raise
|
|
1421
|
+
|
|
1422
|
+
def update_page_content_stream(
|
|
1423
|
+
self, check_font_exists, page, pdf, translation_config, skip_char: bool = False
|
|
1424
|
+
):
|
|
1425
|
+
assert page.cropbox is not None and page.cropbox.box is not None
|
|
1426
|
+
page_crop_box = page.cropbox.box
|
|
1427
|
+
ctm_for_ops = (
|
|
1428
|
+
1,
|
|
1429
|
+
0,
|
|
1430
|
+
0,
|
|
1431
|
+
1,
|
|
1432
|
+
-page_crop_box.x,
|
|
1433
|
+
-page_crop_box.y,
|
|
1434
|
+
)
|
|
1435
|
+
ctm_for_ops = f" {' '.join(f'{x:f}' for x in ctm_for_ops)} cm ".encode()
|
|
1436
|
+
translation_config.raise_if_cancelled()
|
|
1437
|
+
xobj_available_fonts = {}
|
|
1438
|
+
xobj_draw_ops = {}
|
|
1439
|
+
xobj_encoding_length_map = {}
|
|
1440
|
+
available_font_list = self.get_available_font_list(pdf, page)
|
|
1441
|
+
page_encoding_length_map: dict[str | None, int | None] = {
|
|
1442
|
+
f.font_id: f.encoding_length for f in page.pdf_font
|
|
1443
|
+
}
|
|
1444
|
+
all_encoding_length_map = page_encoding_length_map.copy()
|
|
1445
|
+
for xobj in page.pdf_xobject:
|
|
1446
|
+
xobj_available_fonts[xobj.xobj_id] = available_font_list.copy()
|
|
1447
|
+
try:
|
|
1448
|
+
xobj_available_fonts[xobj.xobj_id].update(
|
|
1449
|
+
self.get_xobj_available_fonts(xobj.xref_id, pdf),
|
|
1450
|
+
)
|
|
1451
|
+
except Exception:
|
|
1452
|
+
pass
|
|
1453
|
+
xobj_encoding_length_map[xobj.xobj_id] = {
|
|
1454
|
+
f.font_id: f.encoding_length for f in xobj.pdf_font
|
|
1455
|
+
}
|
|
1456
|
+
all_encoding_length_map.update(xobj_encoding_length_map[xobj.xobj_id])
|
|
1457
|
+
xobj_encoding_length_map[xobj.xobj_id].update(page_encoding_length_map)
|
|
1458
|
+
xobj_op = BitStream()
|
|
1459
|
+
base_op = xobj.base_operations.value
|
|
1460
|
+
base_op = zstd_decompress(base_op)
|
|
1461
|
+
xobj_op.append(base_op.encode())
|
|
1462
|
+
xobj_draw_ops[xobj.xobj_id] = xobj_op
|
|
1463
|
+
page_op = BitStream()
|
|
1464
|
+
# q {ops_base}Q 1 0 0 1 {x0} {y0} cm {ops_new}
|
|
1465
|
+
# page_op.append(b"q ")
|
|
1466
|
+
# base_op = page.base_operations.value
|
|
1467
|
+
# base_op = zstd_decompress(base_op)
|
|
1468
|
+
# page_op.append(base_op.encode())
|
|
1469
|
+
# page_op.append(b" \n")
|
|
1470
|
+
page_op.append(ctm_for_ops)
|
|
1471
|
+
page_op.append(b" \n")
|
|
1472
|
+
# Create render context
|
|
1473
|
+
context = RenderContext(
|
|
1474
|
+
pdf_creator=self,
|
|
1475
|
+
page=page,
|
|
1476
|
+
available_font_list=available_font_list,
|
|
1477
|
+
page_encoding_length_map=page_encoding_length_map,
|
|
1478
|
+
all_encoding_length_map=all_encoding_length_map,
|
|
1479
|
+
xobj_available_fonts=xobj_available_fonts,
|
|
1480
|
+
xobj_encoding_length_map=xobj_encoding_length_map,
|
|
1481
|
+
ctm_for_ops=ctm_for_ops,
|
|
1482
|
+
check_font_exists=check_font_exists,
|
|
1483
|
+
)
|
|
1484
|
+
# Create render units for all renderable objects
|
|
1485
|
+
render_units = self.create_render_units_for_page(page, translation_config)
|
|
1486
|
+
if skip_char:
|
|
1487
|
+
render_units = [
|
|
1488
|
+
unit
|
|
1489
|
+
for unit in render_units
|
|
1490
|
+
if not isinstance(unit, CharacterRenderUnit)
|
|
1491
|
+
]
|
|
1492
|
+
# Render all units to their appropriate streams
|
|
1493
|
+
self.render_units_to_stream(render_units, context, page_op, xobj_draw_ops)
|
|
1494
|
+
# Update xobject streams
|
|
1495
|
+
for xobj in page.pdf_xobject:
|
|
1496
|
+
draw_op = xobj_draw_ops[xobj.xobj_id]
|
|
1497
|
+
try:
|
|
1498
|
+
pdf.update_stream(xobj.xref_id, draw_op.tobytes())
|
|
1499
|
+
except Exception:
|
|
1500
|
+
logger.warning(f"update xref {xobj.xref_id} stream fail, continue")
|
|
1501
|
+
draw_op = page_op
|
|
1502
|
+
op_container = pdf.get_new_xref()
|
|
1503
|
+
# Since this is a draw instruction container,
|
|
1504
|
+
# no additional information is needed
|
|
1505
|
+
pdf.update_object(op_container, "<<>>")
|
|
1506
|
+
pdf.update_stream(op_container, draw_op.tobytes())
|
|
1507
|
+
pdf[page.page_number].set_contents(op_container)
|
{babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py
RENAMED
|
@@ -8,8 +8,8 @@ from skimage.metrics import structural_similarity
|
|
|
8
8
|
|
|
9
9
|
from babeldoc.babeldoc_exception.BabelDOCException import ScannedPDFError
|
|
10
10
|
from babeldoc.format.pdf.document_il import il_version_1
|
|
11
|
+
from babeldoc.format.pdf.document_il.backend.pdf_creater import PDFCreater
|
|
11
12
|
from babeldoc.format.pdf.document_il.utils.style_helper import GREEN
|
|
12
|
-
from babeldoc.format.pdf.document_il.utils.zstd_helper import zstd_decompress
|
|
13
13
|
from babeldoc.format.pdf.translation_config import TranslationConfig
|
|
14
14
|
|
|
15
15
|
logger = logging.getLogger(__name__)
|
|
@@ -80,9 +80,16 @@ class DetectScannedFile:
|
|
|
80
80
|
return bool(sum(hit_list) > len(doc) * 0.8)
|
|
81
81
|
return False
|
|
82
82
|
|
|
83
|
-
def process(
|
|
83
|
+
def process(
|
|
84
|
+
self, docs: il_version_1.Document, original_pdf_path, mediabox_data: dict
|
|
85
|
+
):
|
|
84
86
|
"""Generate layouts for all pages that need to be translated."""
|
|
85
87
|
# Get pages that need to be translated
|
|
88
|
+
|
|
89
|
+
pdf_creater = PDFCreater(
|
|
90
|
+
original_pdf_path, docs, self.translation_config, mediabox_data
|
|
91
|
+
)
|
|
92
|
+
|
|
86
93
|
pages_to_translate = [
|
|
87
94
|
page
|
|
88
95
|
for page in docs.page
|
|
@@ -104,7 +111,7 @@ class DetectScannedFile:
|
|
|
104
111
|
for page in pages_to_translate:
|
|
105
112
|
if scanned < threshold and non_scanned < non_scanned_threshold:
|
|
106
113
|
# Only continue detection if both counts are below thresholds
|
|
107
|
-
is_scanned = self.detect_page_is_scanned(page, mupdf)
|
|
114
|
+
is_scanned = self.detect_page_is_scanned(page, mupdf, pdf_creater)
|
|
108
115
|
if is_scanned:
|
|
109
116
|
scanned += 1
|
|
110
117
|
else:
|
|
@@ -123,6 +130,8 @@ class DetectScannedFile:
|
|
|
123
130
|
self.translation_config.shared_context_cross_split_part.auto_enabled_ocr_workaround = True
|
|
124
131
|
self.translation_config.ocr_workaround = True
|
|
125
132
|
self.translation_config.skip_scanned_detection = True
|
|
133
|
+
self.clean_render_order_for_chars(docs)
|
|
134
|
+
self.translation_config.remove_non_formula_lines = False
|
|
126
135
|
else:
|
|
127
136
|
logger.warning(
|
|
128
137
|
f"Detected {scanned} scanned pages, which is more than 80% of the total pages. "
|
|
@@ -130,25 +139,24 @@ class DetectScannedFile:
|
|
|
130
139
|
)
|
|
131
140
|
raise ScannedPDFError("Scanned PDF detected.")
|
|
132
141
|
|
|
133
|
-
|
|
134
|
-
|
|
142
|
+
def clean_render_order_for_chars(self, docs: il_version_1.Document):
|
|
143
|
+
for page in docs.page:
|
|
144
|
+
for char in page.pdf_character:
|
|
145
|
+
char.render_order = None
|
|
146
|
+
|
|
147
|
+
def detect_page_is_scanned(
|
|
148
|
+
self, page: il_version_1.Page, pdf: pymupdf.Document, pdf_creater: PDFCreater
|
|
149
|
+
) -> bool:
|
|
135
150
|
before_page_image = pdf[page.page_number].get_pixmap()
|
|
136
151
|
before_page_image = np.frombuffer(before_page_image.samples, np.uint8).reshape(
|
|
137
152
|
before_page_image.height,
|
|
138
153
|
before_page_image.width,
|
|
139
154
|
3,
|
|
140
155
|
)[:, :, ::-1]
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
pdf.update_stream(new_xref, baseop.encode("utf-8"))
|
|
146
|
-
pdf[page.page_number].set_contents(new_xref)
|
|
147
|
-
|
|
148
|
-
for xobj in page.pdf_xobject:
|
|
149
|
-
base_op = xobj.base_operations.value
|
|
150
|
-
base_op = zstd_decompress(base_op)
|
|
151
|
-
pdf.update_stream(xobj.xref_id, base_op.encode("utf-8"))
|
|
156
|
+
|
|
157
|
+
pdf_creater.update_page_content_stream(
|
|
158
|
+
False, page, pdf, self.translation_config, True
|
|
159
|
+
)
|
|
152
160
|
|
|
153
161
|
after_page_image = pdf[page.page_number].get_pixmap()
|
|
154
162
|
after_page_image = np.frombuffer(after_page_image.samples, np.uint8).reshape(
|
{babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py
RENAMED
|
@@ -369,7 +369,8 @@ class StylesAndFormulas:
|
|
|
369
369
|
self.process_page_offsets(page)
|
|
370
370
|
self.process_translatable_formulas(page)
|
|
371
371
|
self.update_all_formula_data(page)
|
|
372
|
-
self.
|
|
372
|
+
if not self.translation_config.ocr_workaround:
|
|
373
|
+
self.collect_contained_elements(page)
|
|
373
374
|
|
|
374
375
|
# Process remaining non-formula lines after formula assignment is complete
|
|
375
376
|
if self.translation_config.remove_non_formula_lines:
|
|
@@ -877,7 +877,9 @@ def _do_translate_single(
|
|
|
877
877
|
logger.debug("skipping scanned file detection")
|
|
878
878
|
else:
|
|
879
879
|
logger.debug("start detect scanned file")
|
|
880
|
-
DetectScannedFile(translation_config).process(
|
|
880
|
+
DetectScannedFile(translation_config).process(
|
|
881
|
+
docs, temp_pdf_path, mediabox_data
|
|
882
|
+
)
|
|
881
883
|
logger.debug("finish detect scanned file")
|
|
882
884
|
if translation_config.debug:
|
|
883
885
|
xml_converter.write_json(
|
|
@@ -162,8 +162,8 @@ class TranslationConfig:
|
|
|
162
162
|
skip_curve_render: bool = False,
|
|
163
163
|
only_parse_generate_pdf: bool = False,
|
|
164
164
|
remove_non_formula_lines: bool = False,
|
|
165
|
-
non_formula_line_iou_threshold: float = 0.
|
|
166
|
-
figure_table_protection_threshold: float = 0.
|
|
165
|
+
non_formula_line_iou_threshold: float = 0.9,
|
|
166
|
+
figure_table_protection_threshold: float = 0.9,
|
|
167
167
|
skip_formula_offset_calculation: bool = False,
|
|
168
168
|
):
|
|
169
169
|
self.translator = translator
|
|
@@ -303,6 +303,9 @@ class TranslationConfig:
|
|
|
303
303
|
self.figure_table_protection_threshold = figure_table_protection_threshold
|
|
304
304
|
self.skip_formula_offset_calculation = skip_formula_offset_calculation
|
|
305
305
|
|
|
306
|
+
if self.ocr_workaround:
|
|
307
|
+
self.remove_non_formula_lines = False
|
|
308
|
+
|
|
306
309
|
def parse_pages(self, pages_str: str | None) -> list[tuple[int, int]] | None:
|
|
307
310
|
"""解析页码字符串,返回页码范围列表
|
|
308
311
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "BabelDOC"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.1"
|
|
4
4
|
description = "Yet Another Document Translator"
|
|
5
5
|
license = "AGPL-3.0"
|
|
6
6
|
readme = "README.md"
|
|
@@ -162,7 +162,7 @@ pythonpath = [".", "src"]
|
|
|
162
162
|
testpaths = ["tests"]
|
|
163
163
|
|
|
164
164
|
[bumpver]
|
|
165
|
-
current_version = "0.5.
|
|
165
|
+
current_version = "0.5.1"
|
|
166
166
|
version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
|
|
167
167
|
|
|
168
168
|
[bumpver.file_patterns]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.5.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/add_debug_information.py
RENAMED
|
File without changes
|
{babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py
RENAMED
|
File without changes
|
|
File without changes
|
{babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py
RENAMED
|
File without changes
|
|
File without changes
|
{babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|