BabelDOC 0.2.27__tar.gz → 0.2.29__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.
- {babeldoc-0.2.27 → babeldoc-0.2.29}/PKG-INFO +1 -1
- babeldoc-0.2.29/babeldoc/__init__.py +1 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/const.py +1 -1
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/il_translator.py +9 -4
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/il_translator_llm_only.py +4 -1
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/styles_and_formulas.py +4 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/high_level.py +3 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/main.py +1 -1
- {babeldoc-0.2.27 → babeldoc-0.2.29}/pyproject.toml +2 -2
- {babeldoc-0.2.27 → babeldoc-0.2.29}/uv.lock +1 -1
- babeldoc-0.2.27/babeldoc/__init__.py +0 -1
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.cursorignore +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/dependabot.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/labels.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/release-drafter.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/workflows/docs.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/workflows/publish-to-pypi.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.github/workflows/test.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.gitignore +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/LICENSE +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/README.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/assets/assets.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/converter.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/__init__.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/backend/__init__.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/backend/pdf_creater.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/frontend/il_creater.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/il_version_1.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/il_version_1.rng +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/__init__.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/translator/__init__.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/translator/cache.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/translator/translator.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/utils/atomic_integer.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/xml_converter.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/pdfinterp.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/result_merger.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/split_manager.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/translation_config.py +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/CONTRIBUTOR_REWARD.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/README.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/deploy.sh +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/index.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/docs/requirements.txt +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/mkdocs.yml +0 -0
- {babeldoc-0.2.27 → babeldoc-0.2.29}/tests/test_translation_config.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.29"
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import concurrent.futures
|
|
2
1
|
import json
|
|
3
2
|
import logging
|
|
4
3
|
import re
|
|
@@ -22,6 +21,9 @@ from babeldoc.document_il.utils.layout_helper import get_char_unicode_string
|
|
|
22
21
|
from babeldoc.document_il.utils.layout_helper import is_same_style
|
|
23
22
|
from babeldoc.document_il.utils.layout_helper import is_same_style_except_font
|
|
24
23
|
from babeldoc.document_il.utils.layout_helper import is_same_style_except_size
|
|
24
|
+
from babeldoc.document_il.utils.priority_thread_pool_executor import (
|
|
25
|
+
PriorityThreadPoolExecutor,
|
|
26
|
+
)
|
|
25
27
|
from babeldoc.translation_config import TranslationConfig
|
|
26
28
|
|
|
27
29
|
logger = logging.getLogger(__name__)
|
|
@@ -132,7 +134,10 @@ class ILTranslator:
|
|
|
132
134
|
self.tokenizer = tokenizer
|
|
133
135
|
|
|
134
136
|
def calc_token_count(self, text: str) -> int:
|
|
135
|
-
|
|
137
|
+
try:
|
|
138
|
+
return len(self.tokenizer.encode(text, disallowed_special=()))
|
|
139
|
+
except Exception:
|
|
140
|
+
return 0
|
|
136
141
|
|
|
137
142
|
def translate(self, docs: Document):
|
|
138
143
|
tracker = DocumentTranslateTracker()
|
|
@@ -142,7 +147,7 @@ class ILTranslator:
|
|
|
142
147
|
self.stage_name,
|
|
143
148
|
total,
|
|
144
149
|
) as pbar:
|
|
145
|
-
with
|
|
150
|
+
with PriorityThreadPoolExecutor(
|
|
146
151
|
max_workers=min(
|
|
147
152
|
self.translation_config.qps * 2,
|
|
148
153
|
self.translation_config.qps + 5,
|
|
@@ -161,7 +166,7 @@ class ILTranslator:
|
|
|
161
166
|
def process_page(
|
|
162
167
|
self,
|
|
163
168
|
page: Page,
|
|
164
|
-
executor:
|
|
169
|
+
executor: PriorityThreadPoolExecutor,
|
|
165
170
|
pbar: tqdm | None = None,
|
|
166
171
|
tracker: PageTranslateTracker = None,
|
|
167
172
|
):
|
|
@@ -65,7 +65,10 @@ class ILTranslatorLLMOnly:
|
|
|
65
65
|
raise ValueError("LLM translator not supported") from e
|
|
66
66
|
|
|
67
67
|
def calc_token_count(self, text: str) -> int:
|
|
68
|
-
|
|
68
|
+
try:
|
|
69
|
+
return len(self.tokenizer.encode(text, disallowed_special=()))
|
|
70
|
+
except Exception:
|
|
71
|
+
return 0
|
|
69
72
|
|
|
70
73
|
def find_title_paragraph(self, docs: Document) -> PdfParagraph | None:
|
|
71
74
|
"""Find the first paragraph with layout_label 'title' in the document.
|
|
@@ -366,6 +366,9 @@ def fix_null_xref(doc: Document) -> None:
|
|
|
366
366
|
obj = doc.xref_object(i)
|
|
367
367
|
if obj == "null":
|
|
368
368
|
doc.update_object(i, "[]")
|
|
369
|
+
elif obj and "/ASCII85Decode" in obj: # make pdfminer happy
|
|
370
|
+
data = doc.xref_stream(i)
|
|
371
|
+
doc.update_stream(i, data)
|
|
369
372
|
except Exception:
|
|
370
373
|
doc.update_object(i, "[]")
|
|
371
374
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "BabelDOC"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.29"
|
|
4
4
|
description = "Yet Another Document Translator"
|
|
5
5
|
license = "AGPL-3.0"
|
|
6
6
|
readme = "README.md"
|
|
@@ -148,7 +148,7 @@ pythonpath = [".", "src"]
|
|
|
148
148
|
testpaths = ["tests"]
|
|
149
149
|
|
|
150
150
|
[bumpver]
|
|
151
|
-
current_version = "0.2.
|
|
151
|
+
current_version = "0.2.29"
|
|
152
152
|
version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
|
|
153
153
|
|
|
154
154
|
[bumpver.file_patterns]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.2.27"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py
RENAMED
|
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
|
|
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
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/babeldoc/document_il/utils/priority_thread_pool_executor.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md
RENAMED
|
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
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-big-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-big-logo-with-transparent-background.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-small-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.2.27 → babeldoc-0.2.29}/docs/images/babeldoc-small-logo-with-transparent-background.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|