BabelDOC 0.3.63__tar.gz → 0.3.65__tar.gz

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