BabelDOC 0.4.9__tar.gz → 0.4.11__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.9 → babeldoc-0.4.11}/PKG-INFO +2 -1
  2. {babeldoc-0.4.9 → babeldoc-0.4.11}/README.md +1 -0
  3. babeldoc-0.4.11/babeldoc/__init__.py +1 -0
  4. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/const.py +1 -1
  5. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +19 -1
  6. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +1 -1
  7. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/result_merger.py +17 -0
  8. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/translation_config.py +24 -5
  9. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/main.py +8 -1
  10. {babeldoc-0.4.9 → babeldoc-0.4.11}/pyproject.toml +2 -2
  11. {babeldoc-0.4.9 → babeldoc-0.4.11}/uv.lock +1 -1
  12. babeldoc-0.4.9/babeldoc/__init__.py +0 -1
  13. {babeldoc-0.4.9 → babeldoc-0.4.11}/.cursorignore +0 -0
  14. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  15. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  16. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  17. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  18. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/dependabot.yml +0 -0
  19. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/labels.yml +0 -0
  20. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/release-drafter.yml +0 -0
  21. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/workflows/codeql.yml +0 -0
  22. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/workflows/docs.yml +0 -0
  23. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/workflows/labeler.yml +0 -0
  24. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/workflows/lint.yml +0 -0
  25. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/workflows/pr-lint.yml +0 -0
  26. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/workflows/publish-to-pypi.yml +0 -0
  27. {babeldoc-0.4.9 → babeldoc-0.4.11}/.github/workflows/test.yml +0 -0
  28. {babeldoc-0.4.9 → babeldoc-0.4.11}/.gitignore +0 -0
  29. {babeldoc-0.4.9 → babeldoc-0.4.11}/.pre-commit-config.yaml +0 -0
  30. {babeldoc-0.4.9 → babeldoc-0.4.11}/LICENSE +0 -0
  31. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/assets/assets.py +0 -0
  32. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  33. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/asynchronize/__init__.py +0 -0
  34. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
  35. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/babeldoc_exception/__init__.py +0 -0
  36. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/docvision/README.md +0 -0
  37. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/docvision/__init__.py +0 -0
  38. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/docvision/base_doclayout.py +0 -0
  39. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/docvision/doclayout.py +0 -0
  40. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/docvision/rpc_doclayout.py +0 -0
  41. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/docvision/rpc_doclayout2.py +0 -0
  42. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  43. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/__init__.py +0 -0
  44. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/__init__.py +0 -0
  45. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/converter.py +0 -0
  46. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/__init__.py +0 -0
  47. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
  48. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
  49. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/frontend/il_creater.py +0 -0
  50. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/il_version_1.py +0 -0
  51. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/il_version_1.rnc +0 -0
  52. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/il_version_1.rng +0 -0
  53. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/il_version_1.xsd +0 -0
  54. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
  55. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
  56. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
  57. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +0 -0
  58. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
  59. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
  60. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
  61. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
  62. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +0 -0
  63. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
  64. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/midend/typesetting.py +0 -0
  65. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
  66. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
  67. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
  68. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/layout_helper.py +0 -0
  69. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
  70. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
  71. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
  72. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
  73. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
  74. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/high_level.py +0 -0
  75. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/pdfinterp.py +0 -0
  76. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/format/pdf/split_manager.py +0 -0
  77. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/glossary.py +0 -0
  78. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/LICENSE +0 -0
  79. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/__init__.py +0 -0
  80. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/_saslprep.py +0 -0
  81. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/arcfour.py +0 -0
  82. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/ascii85.py +0 -0
  83. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/casting.py +0 -0
  84. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/ccitt.py +0 -0
  85. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
  86. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
  87. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
  88. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
  89. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
  90. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
  91. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
  92. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
  93. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
  94. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
  95. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
  96. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
  97. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
  98. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
  99. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
  100. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
  101. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
  102. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
  103. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
  104. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
  105. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
  106. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
  107. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
  108. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
  109. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
  110. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
  111. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
  112. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
  113. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
  114. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
  115. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
  116. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
  117. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
  118. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
  119. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
  120. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
  121. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
  122. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
  123. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
  124. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
  125. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
  126. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
  127. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
  128. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
  129. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
  130. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
  131. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
  132. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
  133. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
  134. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
  135. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
  136. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
  137. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
  138. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
  139. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
  140. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
  141. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
  142. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
  143. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
  144. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
  145. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
  146. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
  147. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
  148. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
  149. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
  150. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
  151. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
  152. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
  153. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
  154. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
  155. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
  156. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
  157. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
  158. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
  159. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
  160. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
  161. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
  162. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
  163. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
  164. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
  165. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
  166. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
  167. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
  168. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
  169. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
  170. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
  171. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
  172. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
  173. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
  174. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
  175. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
  176. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
  177. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
  178. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/README.txt +0 -0
  179. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
  180. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
  181. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
  182. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
  183. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
  184. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
  185. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
  186. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
  187. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
  188. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
  189. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
  190. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
  191. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
  192. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
  193. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
  194. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
  195. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
  196. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
  197. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
  198. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
  199. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
  200. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
  201. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
  202. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
  203. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
  204. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
  205. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
  206. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
  207. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
  208. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
  209. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
  210. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
  211. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
  212. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
  213. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
  214. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
  215. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
  216. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
  217. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
  218. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
  219. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
  220. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
  221. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
  222. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
  223. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
  224. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
  225. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
  226. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
  227. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
  228. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
  229. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
  230. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
  231. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
  232. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
  233. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
  234. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/cmapdb.py +0 -0
  235. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/converter.py +0 -0
  236. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/data_structures.py +0 -0
  237. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/encodingdb.py +0 -0
  238. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/fontmetrics.py +0 -0
  239. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/glyphlist.py +0 -0
  240. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/high_level.py +0 -0
  241. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/image.py +0 -0
  242. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/jbig2.py +0 -0
  243. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/latin_enc.py +0 -0
  244. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/layout.py +0 -0
  245. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/lzw.py +0 -0
  246. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdfcolor.py +0 -0
  247. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdfdevice.py +0 -0
  248. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdfdocument.py +0 -0
  249. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdfexceptions.py +0 -0
  250. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdffont.py +0 -0
  251. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdfinterp.py +0 -0
  252. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdfpage.py +0 -0
  253. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdfparser.py +0 -0
  254. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/pdftypes.py +0 -0
  255. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/psexceptions.py +0 -0
  256. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/psparser.py +0 -0
  257. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/py.typed +0 -0
  258. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/runlength.py +0 -0
  259. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/settings.py +0 -0
  260. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/pdfminer/utils.py +0 -0
  261. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/progress_monitor.py +0 -0
  262. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/tools/generate_font_metadata.py +0 -0
  263. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/tools/italic_assistance.py +0 -0
  264. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/tools/italic_recognize_tool.py +0 -0
  265. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/translator/__init__.py +0 -0
  266. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/translator/cache.py +0 -0
  267. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/translator/translator.py +0 -0
  268. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/utils/__init__.py +0 -0
  269. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/utils/atomic_integer.py +0 -0
  270. {babeldoc-0.4.9 → babeldoc-0.4.11}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
  271. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/CODE_OF_CONDUCT.md +0 -0
  272. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/CONTRIBUTING.md +0 -0
  273. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/CONTRIBUTOR_REWARD.md +0 -0
  274. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  275. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  276. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  277. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  278. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  279. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/README.md +0 -0
  280. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  281. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  282. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/README.md +0 -0
  283. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/deploy.sh +0 -0
  284. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/example/demo_glossary.csv +0 -0
  285. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-banner.png +0 -0
  286. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  287. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  288. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  289. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  290. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-big-logo.png +0 -0
  291. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  292. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-preview.gif +0 -0
  293. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  294. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  295. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/images/babeldoc-small-logo.png +0 -0
  296. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/index.md +0 -0
  297. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/intro-to-pdf-object.md +0 -0
  298. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/requirements.txt +0 -0
  299. {babeldoc-0.4.9 → babeldoc-0.4.11}/docs/supported_languages.md +0 -0
  300. {babeldoc-0.4.9 → babeldoc-0.4.11}/mkdocs.yml +0 -0
  301. {babeldoc-0.4.9 → babeldoc-0.4.11}/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.9
3
+ Version: 0.4.11
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
@@ -219,6 +219,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
219
219
  - `--rpc-doclayout`: RPC service host address for document layout analysis (default: None)
220
220
  - `--working-dir`: Working directory for translation. If not set, use temp directory.
221
221
  - `--no-auto-extract-glossary`: Disable automatic term extraction. If this flag is present, the step is skipped. Defaults to enabled.
222
+ - `--save-auto-extracted-glossary`: Save automatically extracted glossary to the specified file. If not set, the glossary will not be saved.
222
223
 
223
224
  > [!TIP]
224
225
  > - Both `--skip-clean` and `--dual-translate-first` may help improve compatibility with some PDF readers
@@ -166,6 +166,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
166
166
  - `--rpc-doclayout`: RPC service host address for document layout analysis (default: None)
167
167
  - `--working-dir`: Working directory for translation. If not set, use temp directory.
168
168
  - `--no-auto-extract-glossary`: Disable automatic term extraction. If this flag is present, the step is skipped. Defaults to enabled.
169
+ - `--save-auto-extracted-glossary`: Save automatically extracted glossary to the specified file. If not set, the glossary will not be saved.
169
170
 
170
171
  > [!TIP]
171
172
  > - Both `--skip-clean` and `--dual-translate-first` may help improve compatibility with some PDF readers
@@ -0,0 +1 @@
1
+ __version__ = "0.4.11"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.4.9"
6
+ __version__ = "0.4.11"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -1081,7 +1081,25 @@ class PDFCreater:
1081
1081
  mono_out_path = None
1082
1082
  if self.translation_config.no_dual:
1083
1083
  dual_out_path = None
1084
- return TranslateResult(mono_out_path, dual_out_path)
1084
+ auto_extracted_glossary_path = None
1085
+ if (
1086
+ self.translation_config.save_auto_extracted_glossary
1087
+ and self.translation_config.shared_context_cross_split_part.auto_extracted_glossary
1088
+ ):
1089
+ auto_extracted_glossary_path = self.translation_config.get_output_file_path(
1090
+ f"{basename}{debug_suffix}.{translation_config.lang_out}.glossary.csv"
1091
+ )
1092
+ with auto_extracted_glossary_path.open("w", encoding="utf-8") as f:
1093
+ logger.info(
1094
+ f"save auto extracted glossary to {auto_extracted_glossary_path}"
1095
+ )
1096
+ f.write(
1097
+ self.translation_config.shared_context_cross_split_part.auto_extracted_glossary.to_csv()
1098
+ )
1099
+
1100
+ return TranslateResult(
1101
+ mono_out_path, dual_out_path, auto_extracted_glossary_path
1102
+ )
1085
1103
  except Exception:
1086
1104
  logger.exception(
1087
1105
  "Failed to create PDF: %s",
@@ -479,7 +479,7 @@ class ILTranslatorLLMOnly:
479
479
  input_unicode = inputs[id_][2].unicode
480
480
  output_unicode = translated_text
481
481
 
482
- trimed_input = re.sub(r"[. 。…,]{20,}", ".", output)
482
+ trimed_input = re.sub(r"[. 。…,]{20,}", ".", input_unicode)
483
483
 
484
484
  input_token_count = self.calc_token_count(input_unicode)
485
485
  output_token_count = self.calc_token_count(output_unicode)
@@ -127,10 +127,27 @@ class ResultMerger:
127
127
  logger.error(f"Error merging no-watermark PDFs: {e}")
128
128
  merged_no_watermark_dual_path = None
129
129
 
130
+ auto_extracted_glossary_path = None
131
+ if (
132
+ self.config.save_auto_extracted_glossary
133
+ and self.config.shared_context_cross_split_part.auto_extracted_glossary
134
+ ):
135
+ auto_extracted_glossary_path = self.config.get_output_file_path(
136
+ f"{basename}{debug_suffix}.{self.config.lang_out}.glossary.csv"
137
+ )
138
+ with auto_extracted_glossary_path.open("w", encoding="utf-8") as f:
139
+ logger.info(
140
+ f"save auto extracted glossary to {auto_extracted_glossary_path}"
141
+ )
142
+ f.write(
143
+ self.config.shared_context_cross_split_part.auto_extracted_glossary.to_csv()
144
+ )
145
+
130
146
  # Create merged result
131
147
  merged_result = TranslateResult(
132
148
  mono_pdf_path=merged_mono_path,
133
149
  dual_pdf_path=merged_dual_path,
150
+ auto_extracted_glossary_path=auto_extracted_glossary_path,
134
151
  )
135
152
  merged_result.no_watermark_mono_pdf_path = merged_no_watermark_mono_path
136
153
  merged_result.no_watermark_dual_pdf_path = merged_no_watermark_dual_path
@@ -154,6 +154,7 @@ class TranslationConfig:
154
154
  auto_enable_ocr_workaround: bool = False,
155
155
  primary_font_family: str | None = None,
156
156
  only_include_translated_page: bool | None = False,
157
+ save_auto_extracted_glossary: bool = True,
157
158
  ):
158
159
  self.translator = translator
159
160
  initial_user_glossaries = list(glossaries) if glossaries else []
@@ -274,6 +275,8 @@ class TranslationConfig:
274
275
 
275
276
  self.only_include_translated_page = only_include_translated_page
276
277
 
278
+ self.save_auto_extracted_glossary = save_auto_extracted_glossary
279
+
277
280
  def parse_pages(self, pages_str: str | None) -> list[tuple[int, int]] | None:
278
281
  """解析页码字符串,返回页码范围列表
279
282
 
@@ -380,13 +383,19 @@ class TranslationConfig:
380
383
  class TranslateResult:
381
384
  original_pdf_path: str
382
385
  total_seconds: float
383
- mono_pdf_path: str | None
384
- dual_pdf_path: str | None
385
- no_watermark_mono_pdf_path: str | None
386
- no_watermark_dual_pdf_path: str | None
386
+ mono_pdf_path: Path | None
387
+ dual_pdf_path: Path | None
388
+ no_watermark_mono_pdf_path: Path | None
389
+ no_watermark_dual_pdf_path: Path | None
387
390
  peak_memory_usage: int | None
391
+ auto_extracted_glossary_path: Path | None
388
392
 
389
- def __init__(self, mono_pdf_path: str | None, dual_pdf_path: str | None):
393
+ def __init__(
394
+ self,
395
+ mono_pdf_path: Path | None,
396
+ dual_pdf_path: Path | None,
397
+ auto_extracted_glossary_path: Path | None = None,
398
+ ):
390
399
  self.mono_pdf_path = mono_pdf_path
391
400
  self.dual_pdf_path = dual_pdf_path
392
401
 
@@ -395,6 +404,8 @@ class TranslateResult:
395
404
  self.no_watermark_mono_pdf_path = mono_pdf_path
396
405
  self.no_watermark_dual_pdf_path = dual_pdf_path
397
406
 
407
+ self.auto_extracted_glossary_path = auto_extracted_glossary_path
408
+
398
409
  def __str__(self):
399
410
  """Return a human-readable string representation of the translation result."""
400
411
  result = []
@@ -428,6 +439,14 @@ class TranslateResult:
428
439
  f"\tNo-watermark Dual-language PDF: {self.no_watermark_dual_pdf_path}"
429
440
  )
430
441
 
442
+ if (
443
+ hasattr(self, "auto_extracted_glossary_path")
444
+ and self.auto_extracted_glossary_path
445
+ ):
446
+ result.append(
447
+ f"\tAuto-extracted glossary: {self.auto_extracted_glossary_path}"
448
+ )
449
+
431
450
  if hasattr(self, "peak_memory_usage") and self.peak_memory_usage:
432
451
  result.append(f"\tPeak memory usage: {self.peak_memory_usage} MB")
433
452
 
@@ -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.9"
24
+ __version__ = "0.4.11"
25
25
 
26
26
 
27
27
  def create_parser():
@@ -271,6 +271,12 @@ def create_parser():
271
271
  default=False,
272
272
  help="Only include translated pages in the output PDF. Effective only when --pages is used.",
273
273
  )
274
+ translation_group.add_argument(
275
+ "--save-auto-extracted-glossary",
276
+ action="store_true",
277
+ default=False,
278
+ help="Save automatically extracted glossary terms to a CSV file in the output directory.",
279
+ )
274
280
  # service option argument group
275
281
  service_group = translation_group.add_mutually_exclusive_group()
276
282
  service_group.add_argument(
@@ -498,6 +504,7 @@ async def main():
498
504
  auto_enable_ocr_workaround=args.auto_enable_ocr_workaround,
499
505
  primary_font_family=args.primary_font_family,
500
506
  only_include_translated_page=args.only_include_translated_page,
507
+ save_auto_extracted_glossary=args.save_auto_extracted_glossary,
501
508
  )
502
509
 
503
510
  # Create progress handler
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.4.9"
3
+ version = "0.4.11"
4
4
  description = "Yet Another Document Translator"
5
5
  license = "AGPL-3.0"
6
6
  readme = "README.md"
@@ -158,7 +158,7 @@ pythonpath = [".", "src"]
158
158
  testpaths = ["tests"]
159
159
 
160
160
  [bumpver]
161
- current_version = "0.4.9"
161
+ current_version = "0.4.11"
162
162
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
163
163
 
164
164
  [bumpver.file_patterns]
@@ -48,7 +48,7 @@ wheels = [
48
48
 
49
49
  [[package]]
50
50
  name = "babeldoc"
51
- version = "0.4.9"
51
+ version = "0.4.11"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -1 +0,0 @@
1
- __version__ = "0.4.9"
File without changes
File without changes
File without changes
File without changes
File without changes