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.
Files changed (311) hide show
  1. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/docs.yml +1 -1
  2. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/publish-to-pypi.yml +1 -1
  3. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/test.yml +1 -1
  4. {babeldoc-0.5.0 → babeldoc-0.5.1}/PKG-INFO +1 -1
  5. babeldoc-0.5.1/babeldoc/__init__.py +1 -0
  6. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/const.py +1 -1
  7. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +89 -96
  8. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/frontend/il_creater.py +1 -0
  9. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +24 -16
  10. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +2 -1
  11. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/high_level.py +3 -1
  12. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/translation_config.py +5 -2
  13. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/main.py +1 -1
  14. {babeldoc-0.5.0 → babeldoc-0.5.1}/pyproject.toml +2 -2
  15. babeldoc-0.5.0/babeldoc/__init__.py +0 -1
  16. {babeldoc-0.5.0 → babeldoc-0.5.1}/.cursorignore +0 -0
  17. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  18. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  19. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  20. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  21. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/dependabot.yml +0 -0
  22. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/labels.yml +0 -0
  23. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/release-drafter.yml +0 -0
  24. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/codeql.yml +0 -0
  25. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/labeler.yml +0 -0
  26. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/lint.yml +0 -0
  27. {babeldoc-0.5.0 → babeldoc-0.5.1}/.github/workflows/pr-lint.yml +0 -0
  28. {babeldoc-0.5.0 → babeldoc-0.5.1}/.gitignore +0 -0
  29. {babeldoc-0.5.0 → babeldoc-0.5.1}/.pre-commit-config.yaml +0 -0
  30. {babeldoc-0.5.0 → babeldoc-0.5.1}/LICENSE +0 -0
  31. {babeldoc-0.5.0 → babeldoc-0.5.1}/README.md +0 -0
  32. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/assets/assets.py +0 -0
  33. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  34. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/asynchronize/__init__.py +0 -0
  35. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
  36. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/babeldoc_exception/__init__.py +0 -0
  37. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/README.md +0 -0
  38. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/__init__.py +0 -0
  39. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/base_doclayout.py +0 -0
  40. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/doclayout.py +0 -0
  41. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout.py +0 -0
  42. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout2.py +0 -0
  43. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout3.py +0 -0
  44. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout4.py +0 -0
  45. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout5.py +0 -0
  46. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout6.py +0 -0
  47. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/rpc_doclayout7.py +0 -0
  48. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  49. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/__init__.py +0 -0
  50. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/__init__.py +0 -0
  51. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/babelpdf/base14.py +0 -0
  52. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/babelpdf/encoding.py +0 -0
  53. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/babelpdf/utils.py +0 -0
  54. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/converter.py +0 -0
  55. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/__init__.py +0 -0
  56. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
  57. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
  58. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.py +0 -0
  59. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.rnc +0 -0
  60. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.rng +0 -0
  61. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/il_version_1.xsd +0 -0
  62. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
  63. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
  64. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
  65. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
  66. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +0 -0
  67. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
  68. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
  69. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
  70. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
  71. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/midend/typesetting.py +0 -0
  72. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
  73. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/extract_char.py +0 -0
  74. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
  75. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
  76. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/layout_helper.py +0 -0
  77. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/matrix_helper.py +0 -0
  78. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
  79. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
  80. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/spatial_analyzer.py +0 -0
  81. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
  82. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
  83. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
  84. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/pdfinterp.py +0 -0
  85. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/result_merger.py +0 -0
  86. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/format/pdf/split_manager.py +0 -0
  87. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/glossary.py +0 -0
  88. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/LICENSE +0 -0
  89. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/__init__.py +0 -0
  90. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/_saslprep.py +0 -0
  91. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/arcfour.py +0 -0
  92. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/ascii85.py +0 -0
  93. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/casting.py +0 -0
  94. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/ccitt.py +0 -0
  95. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
  96. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
  97. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
  98. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
  99. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
  100. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
  101. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
  102. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
  103. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
  104. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
  105. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
  106. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
  107. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
  108. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
  109. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
  110. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
  111. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
  112. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
  113. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
  114. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
  115. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
  116. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
  117. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
  118. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
  119. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
  120. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
  121. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
  122. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
  123. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
  124. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
  125. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
  126. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
  127. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
  128. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
  129. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
  130. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
  131. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
  132. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
  133. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
  134. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
  135. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
  136. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
  137. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
  138. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
  139. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
  140. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
  141. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
  142. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
  143. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
  144. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
  145. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
  146. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
  147. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
  148. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
  149. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
  150. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
  151. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
  152. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
  153. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
  154. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
  155. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
  156. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
  157. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
  158. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
  159. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
  160. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
  161. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
  162. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
  163. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
  164. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
  165. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
  166. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
  167. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
  168. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
  169. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
  170. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
  171. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
  172. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
  173. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
  174. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
  175. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
  176. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
  177. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
  178. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
  179. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
  180. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
  181. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
  182. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
  183. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
  184. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
  185. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
  186. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
  187. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
  188. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/README.txt +0 -0
  189. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
  190. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
  191. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
  192. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
  193. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
  194. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
  195. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
  196. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
  197. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
  198. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
  199. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
  200. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
  201. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
  202. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
  203. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
  204. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
  205. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
  206. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
  207. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
  208. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
  209. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
  210. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
  211. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
  212. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
  213. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
  214. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
  215. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
  216. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
  217. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
  218. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
  219. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
  220. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
  221. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
  222. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
  223. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
  224. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
  225. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
  226. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
  227. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
  228. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
  229. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
  230. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
  231. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
  232. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
  233. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
  234. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
  235. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
  236. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
  237. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
  238. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
  239. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
  240. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
  241. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
  242. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
  243. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
  244. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/cmapdb.py +0 -0
  245. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/converter.py +0 -0
  246. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/data_structures.py +0 -0
  247. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/encodingdb.py +0 -0
  248. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/fontmetrics.py +0 -0
  249. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/glyphlist.py +0 -0
  250. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/high_level.py +0 -0
  251. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/image.py +0 -0
  252. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/jbig2.py +0 -0
  253. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/latin_enc.py +0 -0
  254. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/layout.py +0 -0
  255. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/lzw.py +0 -0
  256. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfcolor.py +0 -0
  257. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfdevice.py +0 -0
  258. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfdocument.py +0 -0
  259. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfexceptions.py +0 -0
  260. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdffont.py +0 -0
  261. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfinterp.py +0 -0
  262. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfpage.py +0 -0
  263. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdfparser.py +0 -0
  264. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/pdftypes.py +0 -0
  265. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/psexceptions.py +0 -0
  266. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/psparser.py +0 -0
  267. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/py.typed +0 -0
  268. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/runlength.py +0 -0
  269. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/settings.py +0 -0
  270. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/pdfminer/utils.py +0 -0
  271. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/progress_monitor.py +0 -0
  272. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/tools/generate_font_metadata.py +0 -0
  273. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/tools/italic_assistance.py +0 -0
  274. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/tools/italic_recognize_tool.py +0 -0
  275. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/translator/__init__.py +0 -0
  276. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/translator/cache.py +0 -0
  277. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/translator/translator.py +0 -0
  278. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/utils/__init__.py +0 -0
  279. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/utils/atomic_integer.py +0 -0
  280. {babeldoc-0.5.0 → babeldoc-0.5.1}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
  281. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/CODE_OF_CONDUCT.md +0 -0
  282. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/CONTRIBUTING.md +0 -0
  283. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/CONTRIBUTOR_REWARD.md +0 -0
  284. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  285. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  286. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  287. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  288. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  289. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/README.md +0 -0
  290. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  291. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  292. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/README.md +0 -0
  293. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/deploy.sh +0 -0
  294. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/example/demo_glossary.csv +0 -0
  295. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-banner.png +0 -0
  296. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  297. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  298. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  299. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  300. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-big-logo.png +0 -0
  301. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  302. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-preview.gif +0 -0
  303. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  304. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  305. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/images/babeldoc-small-logo.png +0 -0
  306. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/index.md +0 -0
  307. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/intro-to-pdf-object.md +0 -0
  308. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/requirements.txt +0 -0
  309. {babeldoc-0.5.0 → babeldoc-0.5.1}/docs/supported_languages.md +0 -0
  310. {babeldoc-0.5.0 → babeldoc-0.5.1}/mkdocs.yml +0 -0
  311. {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@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # v6.4.3
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@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # v6.4.3
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@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # v6.4.3
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: BabelDOC
3
- Version: 0.5.0
3
+ Version: 0.5.1
4
4
  Summary: Yet Another Document Translator
5
5
  Project-URL: Homepage, https://github.com/funstory-ai/BabelDOC
6
6
  Project-URL: Issues, https://github.com/funstory-ai/BabelDOC/issues
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.5.0"
6
+ __version__ = "0.5.1"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -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
- assert page.cropbox is not None and page.cropbox.box is not None
1260
- page_crop_box = page.cropbox.box
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)
@@ -932,6 +932,7 @@ class ILCreater:
932
932
  )
933
933
  if self.translation_config.ocr_workaround:
934
934
  pdf_char.pdf_style.graphic_state = BLACK
935
+ pdf_char.render_order = None
935
936
  if pdf_style.font_size == 0.0:
936
937
  logger.warning(
937
938
  "Font size is 0.0 for character %s. Skip it.",
@@ -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(self, docs: il_version_1.Document):
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
- @staticmethod
134
- def detect_page_is_scanned(page: il_version_1.Page, pdf: pymupdf.Document) -> bool:
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
- new_xref = pdf.get_new_xref()
142
- pdf.update_object(new_xref, "<<>>")
143
- baseop = page.base_operations.value
144
- baseop = zstd_decompress(baseop)
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(
@@ -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.collect_contained_elements(page)
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(docs)
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.2,
166
- figure_table_protection_threshold: float = 0.3,
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
 
@@ -22,7 +22,7 @@ from babeldoc.translator.translator import OpenAITranslator
22
22
  from babeldoc.translator.translator import set_translate_rate_limiter
23
23
 
24
24
  logger = logging.getLogger(__name__)
25
- __version__ = "0.5.0"
25
+ __version__ = "0.5.1"
26
26
 
27
27
 
28
28
  def create_parser():
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.5.0"
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.0"
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