BabelDOC 0.3.38__tar.gz → 0.3.39__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 (106) hide show
  1. {babeldoc-0.3.38 → babeldoc-0.3.39}/PKG-INFO +3 -1
  2. {babeldoc-0.3.38 → babeldoc-0.3.39}/README.md +2 -0
  3. babeldoc-0.3.39/babeldoc/__init__.py +1 -0
  4. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/const.py +1 -1
  5. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/il_translator.py +6 -1
  6. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/il_translator_llm_only.py +6 -3
  7. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/main.py +7 -1
  8. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/translation_config.py +2 -0
  9. {babeldoc-0.3.38 → babeldoc-0.3.39}/pyproject.toml +2 -2
  10. {babeldoc-0.3.38 → babeldoc-0.3.39}/uv.lock +1 -1
  11. babeldoc-0.3.38/babeldoc/__init__.py +0 -1
  12. {babeldoc-0.3.38 → babeldoc-0.3.39}/.cursorignore +0 -0
  13. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  14. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  15. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  16. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/dependabot.yml +0 -0
  17. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/labels.yml +0 -0
  18. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/release-drafter.yml +0 -0
  19. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/workflows/codeql.yml +0 -0
  20. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/workflows/docs.yml +0 -0
  21. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/workflows/labeler.yml +0 -0
  22. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/workflows/lint.yml +0 -0
  23. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/workflows/pr-lint.yml +0 -0
  24. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/workflows/publish-to-pypi.yml +0 -0
  25. {babeldoc-0.3.38 → babeldoc-0.3.39}/.github/workflows/test.yml +0 -0
  26. {babeldoc-0.3.38 → babeldoc-0.3.39}/.gitignore +0 -0
  27. {babeldoc-0.3.38 → babeldoc-0.3.39}/.pre-commit-config.yaml +0 -0
  28. {babeldoc-0.3.38 → babeldoc-0.3.39}/LICENSE +0 -0
  29. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/assets/assets.py +0 -0
  30. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  31. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/asynchronize/__init__.py +0 -0
  32. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/converter.py +0 -0
  33. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/__init__.py +0 -0
  34. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
  35. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/backend/__init__.py +0 -0
  36. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/backend/pdf_creater.py +0 -0
  37. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/frontend/__init__.py +0 -0
  38. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/frontend/il_creater.py +0 -0
  39. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/il_version_1.py +0 -0
  40. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/il_version_1.rnc +0 -0
  41. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/il_version_1.rng +0 -0
  42. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/il_version_1.xsd +0 -0
  43. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/__init__.py +0 -0
  44. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/add_debug_information.py +0 -0
  45. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
  46. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/layout_parser.py +0 -0
  47. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
  48. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/remove_descent.py +0 -0
  49. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
  50. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/table_parser.py +0 -0
  51. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/midend/typesetting.py +0 -0
  52. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/translator/__init__.py +0 -0
  53. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/translator/cache.py +0 -0
  54. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/translator/translator.py +0 -0
  55. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/utils/atomic_integer.py +0 -0
  56. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/utils/fontmap.py +0 -0
  57. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/utils/layout_helper.py +0 -0
  58. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/utils/paragraph_helper.py +0 -0
  59. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
  60. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/utils/style_helper.py +0 -0
  61. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/utils/zstd_helper.py +0 -0
  62. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/document_il/xml_converter.py +0 -0
  63. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/docvision/README.md +0 -0
  64. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/docvision/__init__.py +0 -0
  65. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/docvision/doclayout.py +0 -0
  66. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/docvision/rpc_doclayout.py +0 -0
  67. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  68. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/format/office/__init__.py +0 -0
  69. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/high_level.py +0 -0
  70. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/pdfinterp.py +0 -0
  71. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/progress_monitor.py +0 -0
  72. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/result_merger.py +0 -0
  73. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/split_manager.py +0 -0
  74. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/tools/generate_font_metadata.py +0 -0
  75. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/tools/italic_assistance.py +0 -0
  76. {babeldoc-0.3.38 → babeldoc-0.3.39}/babeldoc/tools/italic_recognize_tool.py +0 -0
  77. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/CODE_OF_CONDUCT.md +0 -0
  78. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/CONTRIBUTING.md +0 -0
  79. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/CONTRIBUTOR_REWARD.md +0 -0
  80. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  81. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  82. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  83. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  84. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  85. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/README.md +0 -0
  86. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  87. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  88. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/README.md +0 -0
  89. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/deploy.sh +0 -0
  90. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-banner.png +0 -0
  91. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  92. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  93. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  94. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  95. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-big-logo.png +0 -0
  96. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  97. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-preview.gif +0 -0
  98. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  99. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  100. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/images/babeldoc-small-logo.png +0 -0
  101. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/index.md +0 -0
  102. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/intro-to-pdf-object.md +0 -0
  103. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/requirements.txt +0 -0
  104. {babeldoc-0.3.38 → babeldoc-0.3.39}/docs/supported_languages.md +0 -0
  105. {babeldoc-0.3.38 → babeldoc-0.3.39}/mkdocs.yml +0 -0
  106. {babeldoc-0.3.38 → babeldoc-0.3.39}/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.38
3
+ Version: 0.3.39
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
@@ -215,6 +215,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
215
215
  - `--no-mono`: Do not output monolingual PDF files
216
216
  - `--min-text-length`: Minimum text length to translate (default: 5)
217
217
  - `--openai`: Use OpenAI for translation (default: False)
218
+ - `--custom-system-prompt`: Custom system prompt for translation.
218
219
 
219
220
  > [!TIP]
220
221
  >
@@ -222,6 +223,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
222
223
  > 2. It is recommended to use models with strong compatibility with OpenAI, such as: `glm-4-flash`, `deepseek-chat`, etc.
223
224
  > 3. Currently, it has not been optimized for traditional translation engines like Bing/Google, it is recommended to use LLMs.
224
225
  > 4. You can use [litellm](https://github.com/BerriAI/litellm) to access multiple models.
226
+ > 5. `--custom-system-prompt`: It is mainly used to add the `/no_think` instruction of Qwen 3 in the prompt. For example: `--custom-system-prompt "/no_think You are a professional, authentic machine translation engine."`
225
227
 
226
228
  ### OpenAI Specific Options
227
229
 
@@ -166,6 +166,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
166
166
  - `--no-mono`: Do not output monolingual PDF files
167
167
  - `--min-text-length`: Minimum text length to translate (default: 5)
168
168
  - `--openai`: Use OpenAI for translation (default: False)
169
+ - `--custom-system-prompt`: Custom system prompt for translation.
169
170
 
170
171
  > [!TIP]
171
172
  >
@@ -173,6 +174,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
173
174
  > 2. It is recommended to use models with strong compatibility with OpenAI, such as: `glm-4-flash`, `deepseek-chat`, etc.
174
175
  > 3. Currently, it has not been optimized for traditional translation engines like Bing/Google, it is recommended to use LLMs.
175
176
  > 4. You can use [litellm](https://github.com/BerriAI/litellm) to access multiple models.
177
+ > 5. `--custom-system-prompt`: It is mainly used to add the `/no_think` instruction of Qwen 3 in the prompt. For example: `--custom-system-prompt "/no_think You are a professional, authentic machine translation engine."`
176
178
 
177
179
  ### OpenAI Specific Options
178
180
 
@@ -0,0 +1 @@
1
+ __version__ = "0.3.39"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.3.38"
6
+ __version__ = "0.3.39"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -647,7 +647,12 @@ class ILTranslator:
647
647
  title_paragraph: PdfParagraph | None = None,
648
648
  local_title_paragraph: PdfParagraph | None = None,
649
649
  ):
650
- llm_input = ["You are a professional, authentic machine translation engine."]
650
+ if self.translation_config.custom_system_prompt:
651
+ llm_input = [self.translation_config.custom_system_prompt]
652
+ else:
653
+ llm_input = [
654
+ "You are a professional, authentic machine translation engine."
655
+ ]
651
656
 
652
657
  if title_paragraph:
653
658
  llm_input.append(
@@ -244,9 +244,12 @@ class ILTranslatorLLMOnly:
244
244
  json_format_input = json.dumps(
245
245
  json_format_input, ensure_ascii=False, indent=2
246
246
  )
247
- llm_input = [
248
- "You are a professional, authentic machine translation engine."
249
- ]
247
+ if self.translation_config.custom_system_prompt:
248
+ llm_input = [self.translation_config.custom_system_prompt]
249
+ else:
250
+ llm_input = [
251
+ "You are a professional, authentic machine translation engine."
252
+ ]
250
253
 
251
254
  if title_paragraph:
252
255
  llm_input.append(
@@ -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.38"
26
+ __version__ = "0.3.39"
27
27
 
28
28
 
29
29
  def create_parser():
@@ -216,6 +216,11 @@ def create_parser():
216
216
  default=False,
217
217
  help="Add text fill background (experimental)",
218
218
  )
219
+ translation_group.add_argument(
220
+ "--custom-system-prompt",
221
+ help="Custom system prompt for translation.",
222
+ default=None,
223
+ )
219
224
  # service option argument group
220
225
  service_group = translation_group.add_mutually_exclusive_group()
221
226
  service_group.add_argument(
@@ -384,6 +389,7 @@ async def main():
384
389
  show_char_box=args.show_char_box,
385
390
  skip_scanned_detection=args.skip_scanned_detection,
386
391
  ocr_workaround=args.ocr_workaround,
392
+ custom_system_prompt=args.custom_system_prompt,
387
393
  )
388
394
 
389
395
  # Create progress handler
@@ -69,6 +69,7 @@ class TranslationConfig:
69
69
  show_char_box: bool = False,
70
70
  skip_scanned_detection: bool = False,
71
71
  ocr_workaround: bool = False,
72
+ custom_system_prompt: str | None = None,
72
73
  ):
73
74
  self.translator = translator
74
75
 
@@ -153,6 +154,7 @@ class TranslationConfig:
153
154
 
154
155
  self.table_model = table_model
155
156
  self.show_char_box = show_char_box
157
+ self.custom_system_prompt = custom_system_prompt
156
158
 
157
159
  def parse_pages(self, pages_str: str | None) -> list[tuple[int, int]] | None:
158
160
  """解析页码字符串,返回页码范围列表
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.3.38"
3
+ version = "0.3.39"
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.38"
153
+ current_version = "0.3.39"
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.38"
51
+ version = "0.3.39"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -1 +0,0 @@
1
- __version__ = "0.3.38"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes