BabelDOC 0.2.4__tar.gz → 0.2.5__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 (91) hide show
  1. {babeldoc-0.2.4 → babeldoc-0.2.5}/PKG-INFO +12 -2
  2. {babeldoc-0.2.4 → babeldoc-0.2.5}/README.md +11 -1
  3. babeldoc-0.2.5/babeldoc/__init__.py +1 -0
  4. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/const.py +1 -1
  5. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/paragraph_finder.py +2 -2
  6. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/translator/translator.py +0 -50
  7. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/main.py +1 -22
  8. {babeldoc-0.2.4 → babeldoc-0.2.5}/pyproject.toml +2 -2
  9. {babeldoc-0.2.4 → babeldoc-0.2.5}/uv.lock +1 -1
  10. babeldoc-0.2.4/babeldoc/__init__.py +0 -1
  11. {babeldoc-0.2.4 → babeldoc-0.2.5}/.cursorignore +0 -0
  12. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  13. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  14. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/dependabot.yml +0 -0
  15. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/labels.yml +0 -0
  16. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/release-drafter.yml +0 -0
  17. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/workflows/codeql.yml +0 -0
  18. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/workflows/docs.yml +0 -0
  19. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/workflows/labeler.yml +0 -0
  20. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/workflows/publish-to-pypi.yml +0 -0
  21. {babeldoc-0.2.4 → babeldoc-0.2.5}/.github/workflows/test.yml +0 -0
  22. {babeldoc-0.2.4 → babeldoc-0.2.5}/.gitignore +0 -0
  23. {babeldoc-0.2.4 → babeldoc-0.2.5}/.pre-commit-config.yaml +0 -0
  24. {babeldoc-0.2.4 → babeldoc-0.2.5}/LICENSE +0 -0
  25. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/assets/assets.py +0 -0
  26. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  27. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/asynchronize/__init__.py +0 -0
  28. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/converter.py +0 -0
  29. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/__init__.py +0 -0
  30. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
  31. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/backend/__init__.py +0 -0
  32. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/backend/pdf_creater.py +0 -0
  33. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/frontend/__init__.py +0 -0
  34. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/frontend/il_creater.py +0 -0
  35. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/il_version_1.py +0 -0
  36. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/il_version_1.rnc +0 -0
  37. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/il_version_1.rng +0 -0
  38. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/il_version_1.xsd +0 -0
  39. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/__init__.py +0 -0
  40. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/add_debug_information.py +0 -0
  41. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
  42. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/il_translator.py +0 -0
  43. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
  44. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/layout_parser.py +0 -0
  45. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/remove_descent.py +0 -0
  46. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
  47. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/midend/typesetting.py +0 -0
  48. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/translator/__init__.py +0 -0
  49. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/translator/cache.py +0 -0
  50. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/utils/fontmap.py +0 -0
  51. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/utils/layout_helper.py +0 -0
  52. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/utils/style_helper.py +0 -0
  53. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/document_il/xml_converter.py +0 -0
  54. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/docvision/README.md +0 -0
  55. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/docvision/__init__.py +0 -0
  56. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/docvision/doclayout.py +0 -0
  57. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/docvision/rpc_doclayout.py +0 -0
  58. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/high_level.py +0 -0
  59. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/pdfinterp.py +0 -0
  60. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/progress_monitor.py +0 -0
  61. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/tools/generate_font_metadata.py +0 -0
  62. {babeldoc-0.2.4 → babeldoc-0.2.5}/babeldoc/translation_config.py +0 -0
  63. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/CODE_OF_CONDUCT.md +0 -0
  64. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/CONTRIBUTING.md +0 -0
  65. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/CONTRIBUTOR_REWARD.md +0 -0
  66. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  67. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  68. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  69. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  70. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  71. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/README.md +0 -0
  72. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  73. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  74. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/README.md +0 -0
  75. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/deploy.sh +0 -0
  76. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-banner.png +0 -0
  77. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  78. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  79. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  80. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  81. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-big-logo.png +0 -0
  82. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  83. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-preview.gif +0 -0
  84. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  85. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  86. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/images/babeldoc-small-logo.png +0 -0
  87. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/index.md +0 -0
  88. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/intro-to-pdf-object.md +0 -0
  89. {babeldoc-0.2.4 → babeldoc-0.2.5}/docs/requirements.txt +0 -0
  90. {babeldoc-0.2.4 → babeldoc-0.2.5}/mkdocs.yml +0 -0
  91. {babeldoc-0.2.4 → babeldoc-0.2.5}/tests/test_translation_config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: BabelDOC
3
- Version: 0.2.4
3
+ Version: 0.2.5
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
@@ -138,6 +138,16 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
138
138
 
139
139
  ## Advanced Options
140
140
 
141
+ > [!NOTE]
142
+ > This CLI is mainly for debugging purposes. Although end users can use this CLI to translate files, we do not provide any technical support for this purpose.
143
+ >
144
+ > End users should directly use **Online Service**: Beta version launched [Immersive Translate - BabelDOC](https://app.immersivetranslate.com/babel-doc/) 1000 free pages per month.
145
+ >
146
+ > End users who need self-deployment should use [PDFMathTranslate](https://github.com/Byaidu/PDFMathTranslate)
147
+ >
148
+ > If you find that an option is not listed below, it means that this option is a debugging option for maintainers. Please do not use these options.
149
+
150
+
141
151
  ### Language Options
142
152
 
143
153
  - `--lang-in`, `-li`: Source language code (default: en)
@@ -181,7 +191,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
181
191
 
182
192
  > [!TIP]
183
193
  >
184
- > 1. You must specify one translation service among `--openai`.
194
+ > 1. Currently, only OpenAI-compatible LLM is supported. For more translator support, please use [PDFMathTranslate](https://github.com/Byaidu/PDFMathTranslate).
185
195
  > 2. It is recommended to use models with strong compatibility with OpenAI, such as: `glm-4-flash`, `deepseek-chat`, etc.
186
196
  > 3. Currently, it has not been optimized for traditional translation engines like Bing/Google, it is recommended to use LLMs.
187
197
 
@@ -100,6 +100,16 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
100
100
 
101
101
  ## Advanced Options
102
102
 
103
+ > [!NOTE]
104
+ > This CLI is mainly for debugging purposes. Although end users can use this CLI to translate files, we do not provide any technical support for this purpose.
105
+ >
106
+ > End users should directly use **Online Service**: Beta version launched [Immersive Translate - BabelDOC](https://app.immersivetranslate.com/babel-doc/) 1000 free pages per month.
107
+ >
108
+ > End users who need self-deployment should use [PDFMathTranslate](https://github.com/Byaidu/PDFMathTranslate)
109
+ >
110
+ > If you find that an option is not listed below, it means that this option is a debugging option for maintainers. Please do not use these options.
111
+
112
+
103
113
  ### Language Options
104
114
 
105
115
  - `--lang-in`, `-li`: Source language code (default: en)
@@ -143,7 +153,7 @@ uv run babeldoc --files example.pdf --files example2.pdf --openai --openai-model
143
153
 
144
154
  > [!TIP]
145
155
  >
146
- > 1. You must specify one translation service among `--openai`.
156
+ > 1. Currently, only OpenAI-compatible LLM is supported. For more translator support, please use [PDFMathTranslate](https://github.com/Byaidu/PDFMathTranslate).
147
157
  > 2. It is recommended to use models with strong compatibility with OpenAI, such as: `glm-4-flash`, `deepseek-chat`, etc.
148
158
  > 3. Currently, it has not been optimized for traditional translation engines like Bing/Google, it is recommended to use LLMs.
149
159
 
@@ -0,0 +1 @@
1
+ __version__ = "0.2.5"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.2.4"
6
+ __version__ = "0.2.5"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -417,7 +417,7 @@ class ParagraphFinder:
417
417
  ),
418
418
  unicode="",
419
419
  debug_id=generate_base58_id(),
420
- layout_label=prev_composition.layout_label,
420
+ layout_label=paragraph.layout_label,
421
421
  )
422
422
  # 更新原段落
423
423
  paragraph.pdf_paragraph_composition = (
@@ -446,7 +446,7 @@ class ParagraphFinder:
446
446
  ),
447
447
  unicode="",
448
448
  debug_id=generate_base58_id(),
449
- layout_label=prev_composition.layout_label,
449
+ layout_label=paragraph.layout_label,
450
450
  )
451
451
  # 更新原段落
452
452
  paragraph.pdf_paragraph_composition = (
@@ -6,7 +6,6 @@ import unicodedata
6
6
  from abc import ABC
7
7
  from abc import abstractmethod
8
8
 
9
- import httpx
10
9
  import openai
11
10
  from tenacity import retry
12
11
  from tenacity import retry_if_exception_type
@@ -260,52 +259,3 @@ class OpenAITranslator(BaseTranslator):
260
259
 
261
260
  def get_rich_text_right_placeholder(self, placeholder_id: int):
262
261
  return self.get_formular_placeholder(placeholder_id + 1)
263
-
264
-
265
- class TranslateTranslator(BaseTranslator):
266
- # https://github.com/openai/openai-python
267
- name = "openai"
268
-
269
- def __init__(
270
- self,
271
- lang_in,
272
- lang_out,
273
- url=None,
274
- ignore_cache=False,
275
- ):
276
- super().__init__(lang_in, lang_out, ignore_cache)
277
- self.client = httpx.Client()
278
- self.url = url
279
-
280
- def do_translate(self, text) -> str:
281
- response = self.client.post(
282
- self.url,
283
- json={
284
- "text": [text],
285
- "src": "Englih",
286
- "tgt": "Simplifed Chinese",
287
- },
288
- )
289
- return response.json()["text"][0]
290
-
291
- def prompt(self, text):
292
- return [
293
- {
294
- "role": "system",
295
- "content": "You are a professional,authentic machine translation engine.",
296
- },
297
- {
298
- "role": "user",
299
- "content": f";; Treat next line as plain text input and translate it into {self.lang_out}, output translation ONLY. If translation is unnecessary (e.g. proper nouns, codes, {'{{1}}, etc. '}), return the original text. NO explanations. NO notes. Input:\n\n{text}",
300
- },
301
- ]
302
-
303
- def get_formular_placeholder(self, placeholder_id: int):
304
- return "{{v" + str(placeholder_id) + "}}"
305
- return "{{" + str(placeholder_id) + "}}"
306
-
307
- def get_rich_text_left_placeholder(self, placeholder_id: int):
308
- return self.get_formular_placeholder(placeholder_id)
309
-
310
- def get_rich_text_right_placeholder(self, placeholder_id: int):
311
- return self.get_formular_placeholder(placeholder_id + 1)
@@ -15,7 +15,6 @@ from rich.progress import TimeRemainingColumn
15
15
  import babeldoc.assets.assets
16
16
  import babeldoc.high_level
17
17
  from babeldoc.document_il.translator.translator import OpenAITranslator
18
- from babeldoc.document_il.translator.translator import TranslateTranslator
19
18
  from babeldoc.document_il.translator.translator import set_translate_rate_limiter
20
19
  from babeldoc.docvision.doclayout import DocLayoutModel
21
20
  from babeldoc.docvision.rpc_doclayout import RpcDocLayoutModel
@@ -23,7 +22,7 @@ from babeldoc.translation_config import TranslationConfig
23
22
  from babeldoc.translation_config import WatermarkOutputMode
24
23
 
25
24
  logger = logging.getLogger(__name__)
26
- __version__ = "0.2.4"
25
+ __version__ = "0.2.5"
27
26
 
28
27
 
29
28
  def create_parser():
@@ -194,11 +193,6 @@ def create_parser():
194
193
  action="store_true",
195
194
  help="Use OpenAI translator.",
196
195
  )
197
- service_group.add_argument(
198
- "--translate",
199
- action="store_true",
200
- help="Use translate translator.",
201
- )
202
196
  service_group = parser.add_argument_group(
203
197
  "Translation - OpenAI Options",
204
198
  description="OpenAI specific options",
@@ -217,14 +211,6 @@ def create_parser():
217
211
  "-k",
218
212
  help="The API key for the OpenAI API.",
219
213
  )
220
- service_group = parser.add_argument_group(
221
- "Translation - Translate Options",
222
- description="Translate specific options",
223
- )
224
- service_group.add_argument(
225
- "--translate-url",
226
- help="The base URL for the Translation API.",
227
- )
228
214
 
229
215
  return parser
230
216
 
@@ -273,13 +259,6 @@ async def main():
273
259
  api_key=args.openai_api_key,
274
260
  ignore_cache=args.ignore_cache,
275
261
  )
276
- elif args.translate:
277
- translator = TranslateTranslator(
278
- lang_in=args.lang_in,
279
- lang_out=args.lang_out,
280
- ignore_cache=args.ignore_cache,
281
- url=args.translate_url,
282
- )
283
262
  else:
284
263
  raise ValueError("Invalid translator type")
285
264
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.2.4"
3
+ version = "0.2.5"
4
4
  description = "Yet Another Document Translator"
5
5
  license = "AGPL-3.0"
6
6
  readme = "README.md"
@@ -136,7 +136,7 @@ pythonpath = [".", "src"]
136
136
  testpaths = ["tests"]
137
137
 
138
138
  [bumpver]
139
- current_version = "0.2.4"
139
+ current_version = "0.2.5"
140
140
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
141
141
 
142
142
  [bumpver.file_patterns]
@@ -48,7 +48,7 @@ wheels = [
48
48
 
49
49
  [[package]]
50
50
  name = "babeldoc"
51
- version = "0.2.4"
51
+ version = "0.2.5"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -1 +0,0 @@
1
- __version__ = "0.2.4"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes