BabelDOC 0.4.2__tar.gz → 0.4.3__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 (301) hide show
  1. {babeldoc-0.4.2 → babeldoc-0.4.3}/PKG-INFO +1 -1
  2. babeldoc-0.4.3/babeldoc/__init__.py +1 -0
  3. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/const.py +1 -1
  4. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/docvision/rpc_doclayout2.py +1 -1
  5. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/frontend/il_creater.py +1 -1
  6. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +87 -41
  7. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/typesetting.py +8 -7
  8. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/layout_helper.py +2 -0
  9. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/main.py +1 -1
  10. {babeldoc-0.4.2 → babeldoc-0.4.3}/pyproject.toml +2 -2
  11. {babeldoc-0.4.2 → babeldoc-0.4.3}/uv.lock +1 -1
  12. babeldoc-0.4.2/babeldoc/__init__.py +0 -1
  13. {babeldoc-0.4.2 → babeldoc-0.4.3}/.cursorignore +0 -0
  14. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  15. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  16. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  17. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  18. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/dependabot.yml +0 -0
  19. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/labels.yml +0 -0
  20. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/release-drafter.yml +0 -0
  21. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/workflows/codeql.yml +0 -0
  22. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/workflows/docs.yml +0 -0
  23. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/workflows/labeler.yml +0 -0
  24. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/workflows/lint.yml +0 -0
  25. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/workflows/pr-lint.yml +0 -0
  26. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/workflows/publish-to-pypi.yml +0 -0
  27. {babeldoc-0.4.2 → babeldoc-0.4.3}/.github/workflows/test.yml +0 -0
  28. {babeldoc-0.4.2 → babeldoc-0.4.3}/.gitignore +0 -0
  29. {babeldoc-0.4.2 → babeldoc-0.4.3}/.pre-commit-config.yaml +0 -0
  30. {babeldoc-0.4.2 → babeldoc-0.4.3}/LICENSE +0 -0
  31. {babeldoc-0.4.2 → babeldoc-0.4.3}/README.md +0 -0
  32. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/assets/assets.py +0 -0
  33. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  34. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/asynchronize/__init__.py +0 -0
  35. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
  36. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/babeldoc_exception/__init__.py +0 -0
  37. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/docvision/README.md +0 -0
  38. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/docvision/__init__.py +0 -0
  39. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/docvision/base_doclayout.py +0 -0
  40. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/docvision/doclayout.py +0 -0
  41. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/docvision/rpc_doclayout.py +0 -0
  42. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  43. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/__init__.py +0 -0
  44. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/__init__.py +0 -0
  45. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/converter.py +0 -0
  46. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/__init__.py +0 -0
  47. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
  48. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +0 -0
  49. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
  50. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/il_version_1.py +0 -0
  51. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/il_version_1.rnc +0 -0
  52. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/il_version_1.rng +0 -0
  53. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/il_version_1.xsd +0 -0
  54. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
  55. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
  56. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
  57. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +0 -0
  58. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
  59. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +0 -0
  60. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
  61. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
  62. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
  63. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
  64. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
  65. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
  66. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
  67. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
  68. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
  69. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
  70. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
  71. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
  72. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/high_level.py +0 -0
  73. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/pdfinterp.py +0 -0
  74. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/result_merger.py +0 -0
  75. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/split_manager.py +0 -0
  76. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/format/pdf/translation_config.py +0 -0
  77. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/glossary.py +0 -0
  78. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/LICENSE +0 -0
  79. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/__init__.py +0 -0
  80. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/_saslprep.py +0 -0
  81. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/arcfour.py +0 -0
  82. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/ascii85.py +0 -0
  83. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/casting.py +0 -0
  84. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/ccitt.py +0 -0
  85. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
  86. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
  87. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
  88. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
  89. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
  90. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
  91. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
  92. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
  93. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
  94. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
  95. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
  96. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
  97. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
  98. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
  99. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
  100. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
  101. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
  102. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
  103. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
  104. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
  105. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
  106. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
  107. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
  108. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
  109. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
  110. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
  111. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
  112. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
  113. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
  114. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
  115. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
  116. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
  117. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
  118. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
  119. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
  120. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
  121. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
  122. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
  123. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
  124. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
  125. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
  126. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
  127. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
  128. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
  129. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
  130. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
  131. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
  132. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
  133. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
  134. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
  135. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
  136. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
  137. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
  138. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
  139. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
  140. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
  141. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
  142. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
  143. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
  144. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
  145. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
  146. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
  147. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
  148. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
  149. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
  150. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
  151. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
  152. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
  153. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
  154. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
  155. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
  156. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
  157. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
  158. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
  159. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
  160. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
  161. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
  162. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
  163. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
  164. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
  165. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
  166. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
  167. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
  168. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
  169. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
  170. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
  171. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
  172. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
  173. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
  174. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
  175. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
  176. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
  177. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
  178. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/README.txt +0 -0
  179. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
  180. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
  181. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
  182. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
  183. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
  184. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
  185. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
  186. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
  187. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
  188. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
  189. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
  190. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
  191. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
  192. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
  193. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
  194. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
  195. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
  196. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
  197. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
  198. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
  199. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
  200. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
  201. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
  202. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
  203. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
  204. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
  205. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
  206. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
  207. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
  208. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
  209. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
  210. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
  211. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
  212. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
  213. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
  214. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
  215. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
  216. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
  217. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
  218. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
  219. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
  220. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
  221. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
  222. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
  223. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
  224. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
  225. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
  226. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
  227. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
  228. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
  229. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
  230. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
  231. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
  232. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
  233. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
  234. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/cmapdb.py +0 -0
  235. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/converter.py +0 -0
  236. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/data_structures.py +0 -0
  237. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/encodingdb.py +0 -0
  238. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/fontmetrics.py +0 -0
  239. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/glyphlist.py +0 -0
  240. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/high_level.py +0 -0
  241. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/image.py +0 -0
  242. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/jbig2.py +0 -0
  243. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/latin_enc.py +0 -0
  244. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/layout.py +0 -0
  245. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/lzw.py +0 -0
  246. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdfcolor.py +0 -0
  247. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdfdevice.py +0 -0
  248. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdfdocument.py +0 -0
  249. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdfexceptions.py +0 -0
  250. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdffont.py +0 -0
  251. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdfinterp.py +0 -0
  252. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdfpage.py +0 -0
  253. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdfparser.py +0 -0
  254. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/pdftypes.py +0 -0
  255. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/psexceptions.py +0 -0
  256. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/psparser.py +0 -0
  257. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/py.typed +0 -0
  258. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/runlength.py +0 -0
  259. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/settings.py +0 -0
  260. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/pdfminer/utils.py +0 -0
  261. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/progress_monitor.py +0 -0
  262. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/tools/generate_font_metadata.py +0 -0
  263. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/tools/italic_assistance.py +0 -0
  264. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/tools/italic_recognize_tool.py +0 -0
  265. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/translator/__init__.py +0 -0
  266. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/translator/cache.py +0 -0
  267. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/translator/translator.py +0 -0
  268. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/utils/__init__.py +0 -0
  269. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/utils/atomic_integer.py +0 -0
  270. {babeldoc-0.4.2 → babeldoc-0.4.3}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
  271. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/CODE_OF_CONDUCT.md +0 -0
  272. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/CONTRIBUTING.md +0 -0
  273. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/CONTRIBUTOR_REWARD.md +0 -0
  274. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  275. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  276. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  277. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  278. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  279. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/README.md +0 -0
  280. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  281. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  282. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/README.md +0 -0
  283. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/deploy.sh +0 -0
  284. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/example/demo_glossary.csv +0 -0
  285. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-banner.png +0 -0
  286. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  287. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  288. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  289. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  290. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-big-logo.png +0 -0
  291. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  292. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-preview.gif +0 -0
  293. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  294. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  295. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/images/babeldoc-small-logo.png +0 -0
  296. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/index.md +0 -0
  297. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/intro-to-pdf-object.md +0 -0
  298. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/requirements.txt +0 -0
  299. {babeldoc-0.4.2 → babeldoc-0.4.3}/docs/supported_languages.md +0 -0
  300. {babeldoc-0.4.2 → babeldoc-0.4.3}/mkdocs.yml +0 -0
  301. {babeldoc-0.4.2 → babeldoc-0.4.3}/tests/test_translation_config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: BabelDOC
3
- Version: 0.4.2
3
+ Version: 0.4.3
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.4.3"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.4.2"
6
+ __version__ = "0.4.3"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -286,7 +286,7 @@ class RpcDocLayoutModel(DocLayoutModel):
286
286
  translate_config,
287
287
  save_debug_image,
288
288
  ):
289
- with ThreadPoolExecutor(max_workers=64) as executor:
289
+ with ThreadPoolExecutor(max_workers=128) as executor:
290
290
  yield from executor.map(
291
291
  self.predict_page,
292
292
  pages,
@@ -656,7 +656,7 @@ class ILCreater:
656
656
  _, encoding = self.mupdf.xref_get_key(xref_id, "Encoding")
657
657
  if encoding == "/Identity-H" or encoding == "/Identity-V":
658
658
  encoding_length = 2
659
- if encoding == "/WinAnsiEncoding":
659
+ elif encoding == "/WinAnsiEncoding":
660
660
  encoding_length = 1
661
661
  else:
662
662
  _, to_unicode_id = self.mupdf.xref_get_key(xref_id, "ToUnicode")
@@ -23,6 +23,7 @@ from babeldoc.format.pdf.document_il.utils.formular_helper import update_formula
23
23
  from babeldoc.format.pdf.document_il.utils.layout_helper import LEFT_BRACKET
24
24
  from babeldoc.format.pdf.document_il.utils.layout_helper import RIGHT_BRACKET
25
25
  from babeldoc.format.pdf.document_il.utils.layout_helper import build_layout_index
26
+ from babeldoc.format.pdf.document_il.utils.layout_helper import calculate_iou_for_boxes
26
27
  from babeldoc.format.pdf.document_il.utils.layout_helper import (
27
28
  calculate_y_iou_for_boxes,
28
29
  )
@@ -66,6 +67,7 @@ class StylesAndFormulas:
66
67
  self.merge_overlapping_formulas(page)
67
68
  # self.process_page_offsets(page)
68
69
  self.process_translatable_formulas(page)
70
+ self.update_all_formula_data(page)
69
71
  self.process_page_offsets(page)
70
72
  self.update_all_formula_data(page)
71
73
  self.process_page_styles(page)
@@ -476,6 +478,8 @@ class StylesAndFormulas:
476
478
  return
477
479
 
478
480
  for paragraph in page.pdf_paragraph:
481
+ if paragraph.debug_id is None:
482
+ continue
479
483
  if not paragraph.pdf_paragraph_composition:
480
484
  continue
481
485
 
@@ -499,22 +503,28 @@ class StylesAndFormulas:
499
503
  comp = paragraph.pdf_paragraph_composition[j]
500
504
  if comp.pdf_line:
501
505
  for char in reversed(comp.pdf_line.pdf_character):
506
+ if not char.pdf_character_id:
507
+ continue
502
508
  # 检查 y 坐标是否接近,判断是否在同一行
503
509
  left_iou = calculate_y_iou_for_boxes(char.box, formula.box)
504
510
  if left_iou > 0.6:
505
511
  left_char = char
506
512
  break
513
+ break
507
514
 
508
515
  # 查找右边最近的同一行的文本
509
516
  for j in range(i + 1, len(paragraph.pdf_paragraph_composition)):
510
517
  comp = paragraph.pdf_paragraph_composition[j]
511
518
  if comp.pdf_line:
512
519
  for char in comp.pdf_line.pdf_character:
520
+ if not char.pdf_character_id:
521
+ continue
513
522
  # 检查 y 坐标是否接近,判断是否在同一行
514
523
  right_iou = calculate_y_iou_for_boxes(char.box, formula.box)
515
524
  if right_iou > 0.6:
516
525
  right_char = char
517
526
  break
527
+ break
518
528
 
519
529
  # If both text segments exist, keep the one with higher IOU
520
530
  if left_char and right_char:
@@ -600,6 +610,9 @@ class StylesAndFormulas:
600
610
 
601
611
  def is_translatable_formula(self, formula: PdfFormula) -> bool:
602
612
  """判断公式是否只包含需要正常翻译的字符(数字、空格和英文逗号)"""
613
+ if all(char.formula_layout_id for char in formula.pdf_character):
614
+ return False
615
+
603
616
  text = "".join(char.char_unicode for char in formula.pdf_character)
604
617
  if formula.y_offset > 0.1:
605
618
  return False
@@ -710,8 +723,11 @@ class StylesAndFormulas:
710
723
 
711
724
  def merge_overlapping_formulas(self, page: Page):
712
725
  """
713
- 合并 x 轴重叠且 y 轴有交集的相邻公式,或者 x 轴相邻且 y 轴 IOU > 0.5 的公式,
714
- 或者所有字符的 layout id 都相同的公式
726
+ 合并符合以下条件的公式:
727
+ 1. x 轴重叠且 y 轴有交集的相邻公式,或者
728
+ 2. x 轴相邻且 y 轴 IOU > 0.5 的相邻公式,或者
729
+ 3. 所有字符的 layout id 都相同的相邻公式,或者
730
+ 4. 任意两个公式的 IOU > 0.8
715
731
  角标可能会被识别成单独的公式,需要合并
716
732
  """
717
733
  if not page.pdf_paragraph:
@@ -721,46 +737,76 @@ class StylesAndFormulas:
721
737
  if not paragraph.pdf_paragraph_composition:
722
738
  continue
723
739
 
724
- i = 0
725
- while i < len(paragraph.pdf_paragraph_composition) - 1:
726
- comp1 = paragraph.pdf_paragraph_composition[i]
727
- comp2 = paragraph.pdf_paragraph_composition[i + 1]
728
-
729
- # 检查是否都是公式
730
- if comp1.pdf_formula is None or comp2.pdf_formula is None:
731
- i += 1
732
- continue
733
-
734
- formula1 = comp1.pdf_formula
735
- formula2 = comp2.pdf_formula
736
-
737
- # 检查合并条件:
738
- # 1. x 轴重叠且 y 轴有交集,或者
739
- # 2. x 轴相邻且 y 轴 IOU > 0.5,或者
740
- # 3. 所有字符的 layout id 都相同
741
- should_merge = (
742
- (
743
- self.is_x_axis_contained(formula1.box, formula2.box)
744
- and self.has_y_intersection(formula1.box, formula2.box)
745
- )
746
- or (
747
- self.is_x_axis_adjacent(formula1.box, formula2.box)
748
- and self.calculate_y_iou(formula1.box, formula2.box) > 0.5
749
- )
750
- or (self._have_same_layout_ids(formula1, formula2, page))
751
- )
740
+ # 重复执行合并过程,直到没有更多可以合并的公式
741
+ merged = True
742
+ while merged:
743
+ merged = False
744
+ for i in range(len(paragraph.pdf_paragraph_composition)):
745
+ if merged:
746
+ break
747
+ comp1 = paragraph.pdf_paragraph_composition[i]
748
+ if comp1.pdf_formula is None:
749
+ continue
750
+
751
+ for j in range(i + 1, len(paragraph.pdf_paragraph_composition)):
752
+ comp2 = paragraph.pdf_paragraph_composition[j]
753
+ if comp2.pdf_formula is None:
754
+ continue
755
+
756
+ formula1 = comp1.pdf_formula
757
+ formula2 = comp2.pdf_formula
758
+
759
+ # 检查合并条件:
760
+ # 1. x 轴重叠且 y 轴有交集,或者
761
+ # 2. x 轴相邻且 y 轴 IOU > 0.5,或者
762
+ # 3. 所有字符的 layout id 都相同,或者
763
+ # 4. 任意两个公式的 IOU > 0.8
764
+ should_merge = (
765
+ (
766
+ j == i + 1
767
+ and (
768
+ (
769
+ self.is_x_axis_contained(
770
+ formula1.box, formula2.box
771
+ )
772
+ and self.has_y_intersection(
773
+ formula1.box, formula2.box
774
+ )
775
+ )
776
+ or (
777
+ self.is_x_axis_adjacent(
778
+ formula1.box, formula2.box
779
+ )
780
+ and self.calculate_y_iou(
781
+ formula1.box, formula2.box
782
+ )
783
+ > 0.5
784
+ )
785
+ )
786
+ )
787
+ or (self._have_same_layout_ids(formula1, formula2, page))
788
+ or (
789
+ calculate_iou_for_boxes(formula1.box, formula2.box)
790
+ > 0.8
791
+ )
792
+ or (
793
+ calculate_iou_for_boxes(formula2.box, formula1.box)
794
+ > 0.8
795
+ )
796
+ )
752
797
 
753
- if should_merge:
754
- # 合并公式
755
- merged_formula = self.merge_formulas(formula1, formula2)
756
- paragraph.pdf_paragraph_composition[i] = PdfParagraphComposition(
757
- pdf_formula=merged_formula,
758
- )
759
- # 删除第二个公式
760
- del paragraph.pdf_paragraph_composition[i + 1]
761
- # 不增加 i,因为合并后的公式可能还需要和下一个公式合并
762
- else:
763
- i += 1
798
+ if should_merge:
799
+ # 合并公式
800
+ merged_formula = self.merge_formulas(formula1, formula2)
801
+ paragraph.pdf_paragraph_composition[i] = (
802
+ PdfParagraphComposition(
803
+ pdf_formula=merged_formula,
804
+ )
805
+ )
806
+ # 删除第二个公式
807
+ del paragraph.pdf_paragraph_composition[j]
808
+ merged = True
809
+ break
764
810
 
765
811
  def _have_same_layout_ids(
766
812
  self, formula1: PdfFormula, formula2: PdfFormula, page: Page
@@ -350,11 +350,12 @@ class TypesettingUnit:
350
350
 
351
351
  return box
352
352
  elif self.formular:
353
- if self.formular.x_offset <= 0.5:
354
- return self.formular.box
355
- formular_box = copy.copy(self.formular.box)
356
- formular_box.x2 += self.formular.x_advance
357
- return formular_box
353
+ return self.formular.box
354
+ # if self.formular.x_offset <= 0.5:
355
+ # return self.formular.box
356
+ # formular_box = copy.copy(self.formular.box)
357
+ # formular_box.x2 += self.formular.x_advance
358
+ # return formular_box
358
359
  elif self.unicode:
359
360
  char_width = self.font.char_lengths(self.unicode, self.font_size)[0]
360
361
  if self.x is None or self.y is None or self.scale is None:
@@ -407,8 +408,8 @@ class TypesettingUnit:
407
408
  elif self.formular:
408
409
  # 创建新的公式对象,保持内部字符的相对位置
409
410
  new_chars = []
410
- min_x = min(char.visual_bbox.box.x for char in self.formular.pdf_character)
411
- min_y = min(char.visual_bbox.box.y for char in self.formular.pdf_character)
411
+ min_x = self.formular.box.x
412
+ min_y = self.formular.box.y
412
413
 
413
414
  for char in self.formular.pdf_character:
414
415
  # 计算相对位置
@@ -634,6 +634,7 @@ def get_character_layout(
634
634
  "abstract",
635
635
  "content",
636
636
  "figure_title",
637
+ "chart_title",
637
638
  "table_title",
638
639
  "doc_title",
639
640
  "footnote",
@@ -722,6 +723,7 @@ def is_text_layout(layout: Layout):
722
723
  "footer",
723
724
  "seal",
724
725
  "text",
726
+ "chart_title",
725
727
  ]
726
728
 
727
729
 
@@ -21,7 +21,7 @@ from babeldoc.translator.translator import OpenAITranslator
21
21
  from babeldoc.translator.translator import set_translate_rate_limiter
22
22
 
23
23
  logger = logging.getLogger(__name__)
24
- __version__ = "0.4.2"
24
+ __version__ = "0.4.3"
25
25
 
26
26
 
27
27
  def create_parser():
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.4.2"
3
+ version = "0.4.3"
4
4
  description = "Yet Another Document Translator"
5
5
  license = "AGPL-3.0"
6
6
  readme = "README.md"
@@ -157,7 +157,7 @@ pythonpath = [".", "src"]
157
157
  testpaths = ["tests"]
158
158
 
159
159
  [bumpver]
160
- current_version = "0.4.2"
160
+ current_version = "0.4.3"
161
161
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
162
162
 
163
163
  [bumpver.file_patterns]
@@ -48,7 +48,7 @@ wheels = [
48
48
 
49
49
  [[package]]
50
50
  name = "babeldoc"
51
- version = "0.4.2"
51
+ version = "0.4.3"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -1 +0,0 @@
1
- __version__ = "0.4.2"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes