BabelDOC 0.3.69__tar.gz → 0.3.70__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.69 → babeldoc-0.3.70}/PKG-INFO +3 -1
  2. {babeldoc-0.3.69 → babeldoc-0.3.70}/README.md +2 -0
  3. babeldoc-0.3.70/babeldoc/__init__.py +1 -0
  4. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/const.py +1 -1
  5. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/backend/pdf_creater.py +21 -0
  6. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/detect_scanned_file.py +6 -3
  7. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/main.py +8 -1
  8. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/translation_config.py +6 -0
  9. {babeldoc-0.3.69 → babeldoc-0.3.70}/pyproject.toml +2 -2
  10. {babeldoc-0.3.69 → babeldoc-0.3.70}/uv.lock +1 -1
  11. babeldoc-0.3.69/babeldoc/__init__.py +0 -1
  12. {babeldoc-0.3.69 → babeldoc-0.3.70}/.cursorignore +0 -0
  13. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  14. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  15. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  16. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/dependabot.yml +0 -0
  18. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/labels.yml +0 -0
  19. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/release-drafter.yml +0 -0
  20. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/workflows/codeql.yml +0 -0
  21. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/workflows/docs.yml +0 -0
  22. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/workflows/labeler.yml +0 -0
  23. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/workflows/lint.yml +0 -0
  24. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/workflows/pr-lint.yml +0 -0
  25. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/workflows/publish-to-pypi.yml +0 -0
  26. {babeldoc-0.3.69 → babeldoc-0.3.70}/.github/workflows/test.yml +0 -0
  27. {babeldoc-0.3.69 → babeldoc-0.3.70}/.gitignore +0 -0
  28. {babeldoc-0.3.69 → babeldoc-0.3.70}/.pre-commit-config.yaml +0 -0
  29. {babeldoc-0.3.69 → babeldoc-0.3.70}/LICENSE +0 -0
  30. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/assets/assets.py +0 -0
  31. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  32. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/asynchronize/__init__.py +0 -0
  33. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/converter.py +0 -0
  34. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/__init__.py +0 -0
  35. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
  36. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/backend/__init__.py +0 -0
  37. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/frontend/__init__.py +0 -0
  38. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/frontend/il_creater.py +0 -0
  39. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/il_version_1.py +0 -0
  40. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/il_version_1.rnc +0 -0
  41. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/il_version_1.rng +0 -0
  42. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/il_version_1.xsd +0 -0
  43. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/__init__.py +0 -0
  44. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/add_debug_information.py +0 -0
  45. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/automatic_term_extractor.py +0 -0
  46. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/il_translator.py +0 -0
  47. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
  48. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/layout_parser.py +0 -0
  49. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
  50. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/remove_descent.py +0 -0
  51. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
  52. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/table_parser.py +0 -0
  53. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/midend/typesetting.py +0 -0
  54. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/translator/__init__.py +0 -0
  55. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/translator/cache.py +0 -0
  56. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/translator/translator.py +0 -0
  57. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/atomic_integer.py +0 -0
  58. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/fontmap.py +0 -0
  59. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/layout_helper.py +0 -0
  60. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/mupdf_helper.py +0 -0
  61. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/paragraph_helper.py +0 -0
  62. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
  63. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/style_helper.py +0 -0
  64. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/utils/zstd_helper.py +0 -0
  65. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/document_il/xml_converter.py +0 -0
  66. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/docvision/README.md +0 -0
  67. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/docvision/__init__.py +0 -0
  68. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/docvision/base_doclayout.py +0 -0
  69. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/docvision/doclayout.py +0 -0
  70. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/docvision/rpc_doclayout.py +0 -0
  71. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  72. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/format/office/__init__.py +0 -0
  73. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/glossary.py +0 -0
  74. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/high_level.py +0 -0
  75. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfinterp.py +0 -0
  76. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/LICENSE +0 -0
  77. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/__init__.py +0 -0
  78. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/_saslprep.py +0 -0
  79. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/arcfour.py +0 -0
  80. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/ascii85.py +0 -0
  81. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/casting.py +0 -0
  82. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/ccitt.py +0 -0
  83. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78-EUC-H.pickle.gz +0 -0
  84. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78-EUC-V.pickle.gz +0 -0
  85. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78-H.pickle.gz +0 -0
  86. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78-RKSJ-H.pickle.gz +0 -0
  87. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78-RKSJ-V.pickle.gz +0 -0
  88. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78-V.pickle.gz +0 -0
  89. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78ms-RKSJ-H.pickle.gz +0 -0
  90. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/78ms-RKSJ-V.pickle.gz +0 -0
  91. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/83pv-RKSJ-H.pickle.gz +0 -0
  92. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/83pv-RKSJ-V.pickle.gz +0 -0
  93. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/90ms-RKSJ-H.pickle.gz +0 -0
  94. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/90ms-RKSJ-V.pickle.gz +0 -0
  95. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/90msp-RKSJ-H.pickle.gz +0 -0
  96. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/90msp-RKSJ-V.pickle.gz +0 -0
  97. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/90pv-RKSJ-H.pickle.gz +0 -0
  98. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/90pv-RKSJ-V.pickle.gz +0 -0
  99. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Add-H.pickle.gz +0 -0
  100. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Add-RKSJ-H.pickle.gz +0 -0
  101. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Add-RKSJ-V.pickle.gz +0 -0
  102. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Add-V.pickle.gz +0 -0
  103. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/B5-H.pickle.gz +0 -0
  104. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/B5-V.pickle.gz +0 -0
  105. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/B5pc-H.pickle.gz +0 -0
  106. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/B5pc-V.pickle.gz +0 -0
  107. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/CNS-EUC-H.pickle.gz +0 -0
  108. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/CNS-EUC-V.pickle.gz +0 -0
  109. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/CNS1-H.pickle.gz +0 -0
  110. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/CNS1-V.pickle.gz +0 -0
  111. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/CNS2-H.pickle.gz +0 -0
  112. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/CNS2-V.pickle.gz +0 -0
  113. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/ETHK-B5-H.pickle.gz +0 -0
  114. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/ETHK-B5-V.pickle.gz +0 -0
  115. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/ETen-B5-H.pickle.gz +0 -0
  116. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/ETen-B5-V.pickle.gz +0 -0
  117. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/ETenms-B5-H.pickle.gz +0 -0
  118. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/ETenms-B5-V.pickle.gz +0 -0
  119. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/EUC-H.pickle.gz +0 -0
  120. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/EUC-V.pickle.gz +0 -0
  121. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Ext-H.pickle.gz +0 -0
  122. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Ext-RKSJ-H.pickle.gz +0 -0
  123. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Ext-RKSJ-V.pickle.gz +0 -0
  124. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Ext-V.pickle.gz +0 -0
  125. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GB-EUC-H.pickle.gz +0 -0
  126. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GB-EUC-V.pickle.gz +0 -0
  127. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GB-H.pickle.gz +0 -0
  128. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GB-V.pickle.gz +0 -0
  129. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBK-EUC-H.pickle.gz +0 -0
  130. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBK-EUC-V.pickle.gz +0 -0
  131. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBK2K-H.pickle.gz +0 -0
  132. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBK2K-V.pickle.gz +0 -0
  133. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBKp-EUC-H.pickle.gz +0 -0
  134. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBKp-EUC-V.pickle.gz +0 -0
  135. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBT-EUC-H.pickle.gz +0 -0
  136. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBT-EUC-V.pickle.gz +0 -0
  137. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBT-H.pickle.gz +0 -0
  138. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBT-V.pickle.gz +0 -0
  139. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBTpc-EUC-H.pickle.gz +0 -0
  140. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBTpc-EUC-V.pickle.gz +0 -0
  141. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBpc-EUC-H.pickle.gz +0 -0
  142. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/GBpc-EUC-V.pickle.gz +0 -0
  143. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/H.pickle.gz +0 -0
  144. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKdla-B5-H.pickle.gz +0 -0
  145. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKdla-B5-V.pickle.gz +0 -0
  146. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKdlb-B5-H.pickle.gz +0 -0
  147. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKdlb-B5-V.pickle.gz +0 -0
  148. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKgccs-B5-H.pickle.gz +0 -0
  149. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKgccs-B5-V.pickle.gz +0 -0
  150. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKm314-B5-H.pickle.gz +0 -0
  151. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKm314-B5-V.pickle.gz +0 -0
  152. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKm471-B5-H.pickle.gz +0 -0
  153. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKm471-B5-V.pickle.gz +0 -0
  154. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKscs-B5-H.pickle.gz +0 -0
  155. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/HKscs-B5-V.pickle.gz +0 -0
  156. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Hankaku-H.pickle.gz +0 -0
  157. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Hankaku-V.pickle.gz +0 -0
  158. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Hiragana-H.pickle.gz +0 -0
  159. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Hiragana-V.pickle.gz +0 -0
  160. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSC-EUC-H.pickle.gz +0 -0
  161. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSC-EUC-V.pickle.gz +0 -0
  162. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSC-H.pickle.gz +0 -0
  163. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSC-Johab-H.pickle.gz +0 -0
  164. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSC-Johab-V.pickle.gz +0 -0
  165. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSC-V.pickle.gz +0 -0
  166. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSCms-UHC-H.pickle.gz +0 -0
  167. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
  168. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
  169. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSCms-UHC-V.pickle.gz +0 -0
  170. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSCpc-EUC-H.pickle.gz +0 -0
  171. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/KSCpc-EUC-V.pickle.gz +0 -0
  172. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Katakana-H.pickle.gz +0 -0
  173. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Katakana-V.pickle.gz +0 -0
  174. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/NWP-H.pickle.gz +0 -0
  175. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/NWP-V.pickle.gz +0 -0
  176. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/README.txt +0 -0
  177. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/RKSJ-H.pickle.gz +0 -0
  178. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/RKSJ-V.pickle.gz +0 -0
  179. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Roman-H.pickle.gz +0 -0
  180. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/Roman-V.pickle.gz +0 -0
  181. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
  182. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
  183. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
  184. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
  185. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
  186. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
  187. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
  188. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
  189. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UCS2-H.pickle.gz +0 -0
  190. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UCS2-V.pickle.gz +0 -0
  191. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UTF16-H.pickle.gz +0 -0
  192. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UTF16-V.pickle.gz +0 -0
  193. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UTF32-H.pickle.gz +0 -0
  194. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UTF32-V.pickle.gz +0 -0
  195. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UTF8-H.pickle.gz +0 -0
  196. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniGB-UTF8-V.pickle.gz +0 -0
  197. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
  198. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
  199. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
  200. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
  201. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
  202. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
  203. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
  204. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
  205. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
  206. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
  207. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
  208. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
  209. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
  210. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
  211. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
  212. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
  213. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
  214. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
  215. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
  216. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
  217. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UCS2-H.pickle.gz +0 -0
  218. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UCS2-V.pickle.gz +0 -0
  219. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UTF16-H.pickle.gz +0 -0
  220. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UTF16-V.pickle.gz +0 -0
  221. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UTF32-H.pickle.gz +0 -0
  222. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UTF32-V.pickle.gz +0 -0
  223. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UTF8-H.pickle.gz +0 -0
  224. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/UniKS-UTF8-V.pickle.gz +0 -0
  225. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/V.pickle.gz +0 -0
  226. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/WP-Symbol-H.pickle.gz +0 -0
  227. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/WP-Symbol-V.pickle.gz +0 -0
  228. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
  229. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
  230. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
  231. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
  232. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/cmapdb.py +0 -0
  233. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/converter.py +0 -0
  234. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/data_structures.py +0 -0
  235. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/encodingdb.py +0 -0
  236. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/fontmetrics.py +0 -0
  237. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/glyphlist.py +0 -0
  238. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/high_level.py +0 -0
  239. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/image.py +0 -0
  240. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/jbig2.py +0 -0
  241. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/latin_enc.py +0 -0
  242. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/layout.py +0 -0
  243. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/lzw.py +0 -0
  244. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdfcolor.py +0 -0
  245. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdfdevice.py +0 -0
  246. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdfdocument.py +0 -0
  247. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdfexceptions.py +0 -0
  248. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdffont.py +0 -0
  249. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdfinterp.py +0 -0
  250. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdfpage.py +0 -0
  251. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdfparser.py +0 -0
  252. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/pdftypes.py +0 -0
  253. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/psexceptions.py +0 -0
  254. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/psparser.py +0 -0
  255. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/py.typed +0 -0
  256. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/runlength.py +0 -0
  257. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/settings.py +0 -0
  258. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/pdfminer/utils.py +0 -0
  259. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/progress_monitor.py +0 -0
  260. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/result_merger.py +0 -0
  261. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/split_manager.py +0 -0
  262. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/tools/generate_font_metadata.py +0 -0
  263. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/tools/italic_assistance.py +0 -0
  264. {babeldoc-0.3.69 → babeldoc-0.3.70}/babeldoc/tools/italic_recognize_tool.py +0 -0
  265. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/CODE_OF_CONDUCT.md +0 -0
  266. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/CONTRIBUTING.md +0 -0
  267. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/CONTRIBUTOR_REWARD.md +0 -0
  268. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  269. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  270. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  271. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  272. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  273. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/README.md +0 -0
  274. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  275. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  276. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/README.md +0 -0
  277. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/deploy.sh +0 -0
  278. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/example/demo_glossary.csv +0 -0
  279. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-banner.png +0 -0
  280. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  281. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  282. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  283. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  284. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-big-logo.png +0 -0
  285. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  286. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-preview.gif +0 -0
  287. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  288. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  289. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/images/babeldoc-small-logo.png +0 -0
  290. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/index.md +0 -0
  291. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/intro-to-pdf-object.md +0 -0
  292. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/requirements.txt +0 -0
  293. {babeldoc-0.3.69 → babeldoc-0.3.70}/docs/supported_languages.md +0 -0
  294. {babeldoc-0.3.69 → babeldoc-0.3.70}/mkdocs.yml +0 -0
  295. {babeldoc-0.3.69 → babeldoc-0.3.70}/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.69
3
+ Version: 0.3.70
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
@@ -212,6 +212,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
212
212
  - `--ocr-workaround`: Use OCR workaround (default: False). Only suitable for documents with black text on white background. When enabled, white rectangular blocks will be added below the translation to cover the original text content, and all text will be forced to black color.
213
213
  - `--auto-enable-ocr-workaround`: Enable automatic OCR workaround (default: False). If a document is detected as heavily scanned, this will attempt to enable OCR processing and skip further scan detection. See "Important Interaction Note" below for crucial details on how this interacts with `--ocr-workaround` and `--skip-scanned-detection`.
214
214
  - `--primary-font-family`: Override primary font family for translated text. Choices: 'serif' for serif fonts, 'sans-serif' for sans-serif fonts, 'script' for script/italic fonts. If not specified, uses automatic font selection based on original text properties.
215
+ - `--only-include-translated-page`: Only include translated pages in the output PDF. This option is only effective when `--pages` is used. (default: False)
215
216
 
216
217
  - `--rpc-doclayout`: RPC service host address for document layout analysis (default: None)
217
218
  - `--working-dir`: Working directory for translation. If not set, use temp directory.
@@ -320,6 +321,7 @@ disable-rich-text-translate = false
320
321
  use-alternating-pages-dual = false
321
322
  watermark-output-mode = "watermarked" # Choices: "watermarked", "no_watermark", "both"
322
323
  max-pages-per-part = 50 # Automatically split the document for translation and merge it back.
324
+ only_include_translated_page = false # Only include translated pages in the output PDF. Effective only when `pages` is used.
323
325
  # no-watermark = false # DEPRECATED: Use watermark-output-mode instead
324
326
  skip-scanned-detection = false # Skip scanned document detection for faster processing
325
327
  auto_extract_glossary = true # Set to false to disable automatic term extraction
@@ -161,6 +161,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
161
161
  - `--ocr-workaround`: Use OCR workaround (default: False). Only suitable for documents with black text on white background. When enabled, white rectangular blocks will be added below the translation to cover the original text content, and all text will be forced to black color.
162
162
  - `--auto-enable-ocr-workaround`: Enable automatic OCR workaround (default: False). If a document is detected as heavily scanned, this will attempt to enable OCR processing and skip further scan detection. See "Important Interaction Note" below for crucial details on how this interacts with `--ocr-workaround` and `--skip-scanned-detection`.
163
163
  - `--primary-font-family`: Override primary font family for translated text. Choices: 'serif' for serif fonts, 'sans-serif' for sans-serif fonts, 'script' for script/italic fonts. If not specified, uses automatic font selection based on original text properties.
164
+ - `--only-include-translated-page`: Only include translated pages in the output PDF. This option is only effective when `--pages` is used. (default: False)
164
165
 
165
166
  - `--rpc-doclayout`: RPC service host address for document layout analysis (default: None)
166
167
  - `--working-dir`: Working directory for translation. If not set, use temp directory.
@@ -269,6 +270,7 @@ disable-rich-text-translate = false
269
270
  use-alternating-pages-dual = false
270
271
  watermark-output-mode = "watermarked" # Choices: "watermarked", "no_watermark", "both"
271
272
  max-pages-per-part = 50 # Automatically split the document for translation and merge it back.
273
+ only_include_translated_page = false # Only include translated pages in the output PDF. Effective only when `pages` is used.
272
274
  # no-watermark = false # DEPRECATED: Use watermark-output-mode instead
273
275
  skip-scanned-detection = false # Skip scanned document detection for faster processing
274
276
  auto_extract_glossary = true # Set to false to disable automatic term extraction
@@ -0,0 +1 @@
1
+ __version__ = "0.3.70"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.3.69"
6
+ __version__ = "0.3.70"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -966,6 +966,22 @@ class PDFCreater:
966
966
  self.restore_media_box(pdf, self.mediabox_data)
967
967
  except Exception:
968
968
  logger.exception("restore media box failed")
969
+
970
+ if translation_config.only_include_translated_page:
971
+ total_page = set(range(0, len(pdf)))
972
+
973
+ pages_to_translate = {
974
+ page.page_number
975
+ for page in self.docs.page
976
+ if self.translation_config.should_translate_page(
977
+ page.page_number + 1
978
+ )
979
+ }
980
+
981
+ should_removed_page = list(total_page - pages_to_translate)
982
+
983
+ pdf.delete_pages(should_removed_page)
984
+
969
985
  with self.translation_config.progress_monitor.stage_start(
970
986
  SAVE_PDF_STAGE_NAME,
971
987
  2,
@@ -998,6 +1014,11 @@ class PDFCreater:
998
1014
  )
999
1015
  translation_config.raise_if_cancelled()
1000
1016
  original_pdf = pymupdf.open(self.original_pdf_path)
1017
+ if (
1018
+ self.translation_config.only_include_translated_page
1019
+ and should_removed_page
1020
+ ):
1021
+ original_pdf.delete_pages(should_removed_page)
1001
1022
  translated_pdf = pdf
1002
1023
 
1003
1024
  # Choose between alternating pages and side-by-side format
@@ -71,7 +71,9 @@ class DetectScannedFile:
71
71
  contents_list = page.get_contents()
72
72
  for index in contents_list:
73
73
  contents = doc.xref_stream(index)
74
- if regex.search(rb"/Artifact(\s*\<\<\s*/MCID\s+|\s+BDC)", contents):
74
+ if regex.search(
75
+ rb"(/Artifact|/P)(\s*\<\<\s*/MCID\s+|\s+BDC)", contents
76
+ ):
75
77
  hit_list[page.number] += 1
76
78
  if regex.search(rb"\s3\s+Tr\s", contents):
77
79
  hit_list[page.number] += 1
@@ -112,7 +114,7 @@ class DetectScannedFile:
112
114
  non_scanned += 1
113
115
  progress.advance(1)
114
116
 
115
- if scanned > threshold:
117
+ if scanned >= threshold:
116
118
  if self.translation_config.auto_enable_ocr_workaround:
117
119
  logger.warning(
118
120
  f"Detected {scanned} scanned pages, which is more than 80% of the total pages. "
@@ -156,4 +158,5 @@ class DetectScannedFile:
156
158
  )[:, :, ::-1]
157
159
  before_page_image = cv2.cvtColor(before_page_image, cv2.COLOR_RGB2GRAY)
158
160
  after_page_image = cv2.cvtColor(after_page_image, cv2.COLOR_RGB2GRAY)
159
- return structural_similarity(before_page_image, after_page_image) > 0.97
161
+ similarity = structural_similarity(before_page_image, after_page_image)
162
+ return similarity > 0.95
@@ -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.69"
24
+ __version__ = "0.3.70"
25
25
 
26
26
 
27
27
  def create_parser():
@@ -261,6 +261,12 @@ def create_parser():
261
261
  default=None,
262
262
  help="Override primary font family for translated text. Choices: 'serif' for serif fonts, 'sans-serif' for sans-serif fonts, 'script' for script/italic fonts. If not specified, uses automatic font selection based on original text properties.",
263
263
  )
264
+ translation_group.add_argument(
265
+ "--only-include-translated-page",
266
+ action="store_true",
267
+ default=False,
268
+ help="Only include translated pages in the output PDF. Effective only when --pages is used.",
269
+ )
264
270
  # service option argument group
265
271
  service_group = translation_group.add_mutually_exclusive_group()
266
272
  service_group.add_argument(
@@ -483,6 +489,7 @@ async def main():
483
489
  auto_extract_glossary=args.auto_extract_glossary,
484
490
  auto_enable_ocr_workaround=args.auto_enable_ocr_workaround,
485
491
  primary_font_family=args.primary_font_family,
492
+ only_include_translated_page=args.only_include_translated_page,
486
493
  )
487
494
 
488
495
  # Create progress handler
@@ -153,6 +153,7 @@ class TranslationConfig:
153
153
  auto_extract_glossary: bool = True,
154
154
  auto_enable_ocr_workaround: bool = False,
155
155
  primary_font_family: str | None = None,
156
+ only_include_translated_page: bool | None = False,
156
157
  ):
157
158
  self.translator = translator
158
159
  initial_user_glossaries = list(glossaries) if glossaries else []
@@ -268,6 +269,11 @@ class TranslationConfig:
268
269
  ]
269
270
  self.primary_font_family = primary_font_family
270
271
 
272
+ if only_include_translated_page is None:
273
+ only_include_translated_page = False
274
+
275
+ self.only_include_translated_page = only_include_translated_page
276
+
271
277
  def parse_pages(self, pages_str: str | None) -> list[tuple[int, int]] | None:
272
278
  """解析页码字符串,返回页码范围列表
273
279
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.3.69"
3
+ version = "0.3.70"
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.69"
157
+ current_version = "0.3.70"
158
158
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
159
159
 
160
160
  [bumpver.file_patterns]
@@ -48,7 +48,7 @@ wheels = [
48
48
 
49
49
  [[package]]
50
50
  name = "babeldoc"
51
- version = "0.3.69"
51
+ version = "0.3.70"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -1 +0,0 @@
1
- __version__ = "0.3.69"
File without changes
File without changes
File without changes
File without changes