BabelDOC 0.3.45__tar.gz → 0.3.47__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 (108) hide show
  1. {babeldoc-0.3.45 → babeldoc-0.3.47}/PKG-INFO +2 -1
  2. {babeldoc-0.3.45 → babeldoc-0.3.47}/README.md +1 -0
  3. babeldoc-0.3.47/babeldoc/__init__.py +1 -0
  4. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/const.py +1 -1
  5. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/il_translator.py +1 -1
  6. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/styles_and_formulas.py +3 -1
  7. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/main.py +23 -2
  8. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/translation_config.py +4 -0
  9. {babeldoc-0.3.45 → babeldoc-0.3.47}/pyproject.toml +2 -2
  10. {babeldoc-0.3.45 → babeldoc-0.3.47}/uv.lock +1 -1
  11. babeldoc-0.3.45/babeldoc/__init__.py +0 -1
  12. {babeldoc-0.3.45 → babeldoc-0.3.47}/.cursorignore +0 -0
  13. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  14. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  15. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  16. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/dependabot.yml +0 -0
  18. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/labels.yml +0 -0
  19. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/release-drafter.yml +0 -0
  20. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/workflows/codeql.yml +0 -0
  21. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/workflows/docs.yml +0 -0
  22. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/workflows/labeler.yml +0 -0
  23. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/workflows/lint.yml +0 -0
  24. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/workflows/pr-lint.yml +0 -0
  25. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/workflows/publish-to-pypi.yml +0 -0
  26. {babeldoc-0.3.45 → babeldoc-0.3.47}/.github/workflows/test.yml +0 -0
  27. {babeldoc-0.3.45 → babeldoc-0.3.47}/.gitignore +0 -0
  28. {babeldoc-0.3.45 → babeldoc-0.3.47}/.pre-commit-config.yaml +0 -0
  29. {babeldoc-0.3.45 → babeldoc-0.3.47}/LICENSE +0 -0
  30. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/assets/assets.py +0 -0
  31. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  32. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/asynchronize/__init__.py +0 -0
  33. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/converter.py +0 -0
  34. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/__init__.py +0 -0
  35. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
  36. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/backend/__init__.py +0 -0
  37. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/backend/pdf_creater.py +0 -0
  38. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/frontend/__init__.py +0 -0
  39. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/frontend/il_creater.py +0 -0
  40. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/il_version_1.py +0 -0
  41. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/il_version_1.rnc +0 -0
  42. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/il_version_1.rng +0 -0
  43. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/il_version_1.xsd +0 -0
  44. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/__init__.py +0 -0
  45. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/add_debug_information.py +0 -0
  46. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
  47. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
  48. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/layout_parser.py +0 -0
  49. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
  50. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/remove_descent.py +0 -0
  51. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/table_parser.py +0 -0
  52. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/midend/typesetting.py +0 -0
  53. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/translator/__init__.py +0 -0
  54. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/translator/cache.py +0 -0
  55. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/translator/translator.py +0 -0
  56. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/atomic_integer.py +0 -0
  57. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/fontmap.py +0 -0
  58. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/layout_helper.py +0 -0
  59. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/mupdf_helper.py +0 -0
  60. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/paragraph_helper.py +0 -0
  61. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
  62. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/style_helper.py +0 -0
  63. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/utils/zstd_helper.py +0 -0
  64. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/document_il/xml_converter.py +0 -0
  65. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/docvision/README.md +0 -0
  66. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/docvision/__init__.py +0 -0
  67. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/docvision/doclayout.py +0 -0
  68. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/docvision/rpc_doclayout.py +0 -0
  69. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  70. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/format/office/__init__.py +0 -0
  71. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/high_level.py +0 -0
  72. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/pdfinterp.py +0 -0
  73. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/progress_monitor.py +0 -0
  74. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/result_merger.py +0 -0
  75. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/split_manager.py +0 -0
  76. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/tools/generate_font_metadata.py +0 -0
  77. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/tools/italic_assistance.py +0 -0
  78. {babeldoc-0.3.45 → babeldoc-0.3.47}/babeldoc/tools/italic_recognize_tool.py +0 -0
  79. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/CODE_OF_CONDUCT.md +0 -0
  80. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/CONTRIBUTING.md +0 -0
  81. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/CONTRIBUTOR_REWARD.md +0 -0
  82. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  83. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  84. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  85. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  86. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  87. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/README.md +0 -0
  88. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  89. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  90. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/README.md +0 -0
  91. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/deploy.sh +0 -0
  92. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-banner.png +0 -0
  93. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  94. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  95. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  96. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  97. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-big-logo.png +0 -0
  98. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  99. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-preview.gif +0 -0
  100. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  101. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  102. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/images/babeldoc-small-logo.png +0 -0
  103. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/index.md +0 -0
  104. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/intro-to-pdf-object.md +0 -0
  105. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/requirements.txt +0 -0
  106. {babeldoc-0.3.45 → babeldoc-0.3.47}/docs/supported_languages.md +0 -0
  107. {babeldoc-0.3.45 → babeldoc-0.3.47}/mkdocs.yml +0 -0
  108. {babeldoc-0.3.45 → babeldoc-0.3.47}/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.45
3
+ Version: 0.3.47
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
@@ -205,6 +205,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
205
205
  - `--translate-table-text`: Translate table text (experimental, default: False)
206
206
  - `--skip-scanned-detection`: Skip scanned document detection (default: False). When using split translation, only the first part performs detection if not skipped.
207
207
  - `--ocr-workaround`: Use OCR workaround (default: False). When enabled, the tool will use OCR to detect text and fill background for scanned PDF.
208
+ - `--working-dir`: Working directory for translation. If not set, use temp directory.
208
209
 
209
210
  > [!TIP]
210
211
  > - Both `--skip-clean` and `--dual-translate-first` may help improve compatibility with some PDF readers
@@ -156,6 +156,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
156
156
  - `--translate-table-text`: Translate table text (experimental, default: False)
157
157
  - `--skip-scanned-detection`: Skip scanned document detection (default: False). When using split translation, only the first part performs detection if not skipped.
158
158
  - `--ocr-workaround`: Use OCR workaround (default: False). When enabled, the tool will use OCR to detect text and fill background for scanned PDF.
159
+ - `--working-dir`: Working directory for translation. If not set, use temp directory.
159
160
 
160
161
  > [!TIP]
161
162
  > - Both `--skip-clean` and `--dual-translate-first` may help improve compatibility with some PDF readers
@@ -0,0 +1 @@
1
+ __version__ = "0.3.47"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.3.45"
6
+ __version__ = "0.3.47"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -649,7 +649,7 @@ class ILTranslator:
649
649
  and re.match(f"^{p.left_regex_pattern}", matched_text)
650
650
  )
651
651
  text = re.match(
652
- f"^{placeholder.left_regex_pattern}(.+){placeholder.right_regex_pattern}$",
652
+ f"^{placeholder.left_regex_pattern}(.*){placeholder.right_regex_pattern}$",
653
653
  matched_text,
654
654
  ).group(1)
655
655
 
@@ -608,6 +608,8 @@ class StylesAndFormulas:
608
608
  r"|.*Amerigo.*"
609
609
  r"|.*MSGloriolaIIStd.*"
610
610
  r"|.*CMU.+"
611
+ r"|.*LinLibertine.*"
612
+ r"|.*txsys.*"
611
613
  r")$"
612
614
  )
613
615
  precise_formula_font_pattern = (
@@ -645,7 +647,7 @@ class StylesAndFormulas:
645
647
  r"|.*KpMath.*"
646
648
  r"|.*Lete Sans Math.*"
647
649
  r"|.*LeteSansMath.*"
648
- r"|.*LinLibertineO.*"
650
+ # r"|.*LinLibertineO.*"
649
651
  r"|.*Linux Libertine O.*"
650
652
  r"|.*LibertinusMath-Regular.*"
651
653
  r"|.*Libertinus Math.*"
@@ -23,7 +23,7 @@ from babeldoc.translation_config import TranslationConfig
23
23
  from babeldoc.translation_config import WatermarkOutputMode
24
24
 
25
25
  logger = logging.getLogger(__name__)
26
- __version__ = "0.3.45"
26
+ __version__ = "0.3.47"
27
27
 
28
28
 
29
29
  def create_parser():
@@ -70,6 +70,11 @@ def create_parser():
70
70
  default=None,
71
71
  help="Restore offline assets package from the specified file",
72
72
  )
73
+ parser.add_argument(
74
+ "--working-dir",
75
+ default=None,
76
+ help="Working directory for translation. If not set, use temp directory.",
77
+ )
73
78
  # translation option argument group
74
79
  translation_group = parser.add_argument_group(
75
80
  "Translation",
@@ -320,7 +325,7 @@ async def main():
320
325
  if not Path(file).exists():
321
326
  logger.error(f"文件不存在:{file}")
322
327
  exit(1)
323
- if not file.endswith(".pdf"):
328
+ if not file.lower().endswith(".pdf"):
324
329
  logger.error(f"文件不是 PDF 文件:{file}")
325
330
  exit(1)
326
331
  pending_files.append(file)
@@ -339,6 +344,21 @@ async def main():
339
344
  else:
340
345
  args.output = None
341
346
 
347
+ if args.working_dir:
348
+ working_dir = Path(args.working_dir)
349
+ if not working_dir.exists():
350
+ logger.info(f"工作目录不存在,创建:{working_dir}")
351
+ try:
352
+ working_dir.mkdir(parents=True, exist_ok=True)
353
+ except OSError:
354
+ logger.critical(
355
+ f"Failed to create working directory at {working_dir}",
356
+ exc_info=True,
357
+ )
358
+ exit(1)
359
+ else:
360
+ working_dir = None
361
+
342
362
  watermark_output_mode = WatermarkOutputMode.Watermarked
343
363
  if args.no_watermark:
344
364
  watermark_output_mode = WatermarkOutputMode.NoWatermark
@@ -390,6 +410,7 @@ async def main():
390
410
  skip_scanned_detection=args.skip_scanned_detection,
391
411
  ocr_workaround=args.ocr_workaround,
392
412
  custom_system_prompt=args.custom_system_prompt,
413
+ working_dir=working_dir,
393
414
  )
394
415
 
395
416
  # Create progress handler
@@ -130,6 +130,10 @@ class TranslationConfig:
130
130
  else:
131
131
  working_dir = tempfile.mkdtemp()
132
132
  self._is_temp_dir = True
133
+ else:
134
+ working_dir = Path(working_dir) / Path(input_file).stem
135
+ self._is_temp_dir = False
136
+
133
137
  self.working_dir = working_dir
134
138
 
135
139
  Path(working_dir).mkdir(parents=True, exist_ok=True)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.3.45"
3
+ version = "0.3.47"
4
4
  description = "Yet Another Document Translator"
5
5
  license = "AGPL-3.0"
6
6
  readme = "README.md"
@@ -150,7 +150,7 @@ pythonpath = [".", "src"]
150
150
  testpaths = ["tests"]
151
151
 
152
152
  [bumpver]
153
- current_version = "0.3.45"
153
+ current_version = "0.3.47"
154
154
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
155
155
 
156
156
  [bumpver.file_patterns]
@@ -48,7 +48,7 @@ wheels = [
48
48
 
49
49
  [[package]]
50
50
  name = "babeldoc"
51
- version = "0.3.45"
51
+ version = "0.3.47"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -1 +0,0 @@
1
- __version__ = "0.3.45"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes