BabelDOC 0.2.17__tar.gz → 0.2.19__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.17 → babeldoc-0.2.19}/PKG-INFO +1 -1
- babeldoc-0.2.19/babeldoc/__init__.py +1 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/assets/assets.py +6 -1
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/const.py +1 -1
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/frontend/il_creater.py +10 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/styles_and_formulas.py +2 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/high_level.py +22 -14
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/main.py +8 -1
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/translation_config.py +2 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/pyproject.toml +2 -2
- {babeldoc-0.2.17 → babeldoc-0.2.19}/uv.lock +1 -1
- babeldoc-0.2.17/babeldoc/__init__.py +0 -1
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.cursorignore +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/dependabot.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/labels.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/release-drafter.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/workflows/docs.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/workflows/publish-to-pypi.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.github/workflows/test.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.gitignore +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/LICENSE +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/README.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/converter.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/__init__.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/backend/__init__.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/backend/pdf_creater.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/il_version_1.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/il_version_1.rng +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/__init__.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/il_translator.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/translator/__init__.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/translator/cache.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/translator/translator.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/document_il/xml_converter.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/pdfinterp.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/result_merger.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/split_manager.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/CONTRIBUTOR_REWARD.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/README.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/deploy.sh +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/index.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/docs/requirements.txt +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/mkdocs.yml +0 -0
- {babeldoc-0.2.17 → babeldoc-0.2.19}/tests/test_translation_config.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.19"
|
|
@@ -328,8 +328,11 @@ async def async_warmup():
|
|
|
328
328
|
_ = encoding_for_model("gpt-4o")
|
|
329
329
|
async with httpx.AsyncClient() as client:
|
|
330
330
|
onnx_task = asyncio.create_task(get_doclayout_onnx_model_path_async(client))
|
|
331
|
+
onnx_task2 = asyncio.create_task(
|
|
332
|
+
get_table_detection_rapidocr_model_path_async(client)
|
|
333
|
+
)
|
|
331
334
|
font_tasks = asyncio.create_task(download_all_fonts_async(client))
|
|
332
|
-
await asyncio.gather(onnx_task, font_tasks)
|
|
335
|
+
await asyncio.gather(onnx_task, onnx_task2, font_tasks)
|
|
333
336
|
|
|
334
337
|
|
|
335
338
|
def warmup():
|
|
@@ -360,6 +363,8 @@ def generate_all_assets_file_list():
|
|
|
360
363
|
"name": "doclayout_yolo_docstructbench_imgsz1024.onnx",
|
|
361
364
|
"sha3_256": DOCLAYOUT_YOLO_DOCSTRUCTBENCH_IMGSZ1024ONNX_SHA3_256,
|
|
362
365
|
},
|
|
366
|
+
)
|
|
367
|
+
result["models"].append(
|
|
363
368
|
{
|
|
364
369
|
"name": "ch_PP-OCRv4_det_infer.onnx",
|
|
365
370
|
"sha3_256": TABLE_DETECTION_RAPIDOCR_MODEL_SHA3_256,
|
|
@@ -18,6 +18,7 @@ from pdfminer.pdftypes import resolve1 as pdftypes_resolve1
|
|
|
18
18
|
from pdfminer.psparser import PSLiteral
|
|
19
19
|
|
|
20
20
|
from babeldoc.document_il import il_version_1
|
|
21
|
+
from babeldoc.document_il.utils.style_helper import YELLOW
|
|
21
22
|
from babeldoc.translation_config import TranslationConfig
|
|
22
23
|
|
|
23
24
|
|
|
@@ -568,6 +569,15 @@ class ILCreater:
|
|
|
568
569
|
|
|
569
570
|
self.current_page.pdf_character.append(pdf_char)
|
|
570
571
|
|
|
572
|
+
if self.translation_config.show_char_box:
|
|
573
|
+
self.current_page.pdf_rectangle.append(
|
|
574
|
+
il_version_1.PdfRectangle(
|
|
575
|
+
box=pdf_char.visual_bbox.box,
|
|
576
|
+
graphic_state=YELLOW,
|
|
577
|
+
debug_info=True,
|
|
578
|
+
)
|
|
579
|
+
)
|
|
580
|
+
|
|
571
581
|
def create_il(self):
|
|
572
582
|
pages = [
|
|
573
583
|
page
|
|
@@ -504,6 +504,7 @@ def do_translate(
|
|
|
504
504
|
logger.info(
|
|
505
505
|
f"finish translate: {original_pdf_path}, cost: {finish_time - start_time} s",
|
|
506
506
|
)
|
|
507
|
+
result.original_pdf_path = translation_config.input_file
|
|
507
508
|
pm.translate_done(result)
|
|
508
509
|
return result
|
|
509
510
|
|
|
@@ -661,21 +662,28 @@ def _do_translate_single(
|
|
|
661
662
|
|
|
662
663
|
pdf_creater = PDFCreater(temp_pdf_path, docs, translation_config)
|
|
663
664
|
result = pdf_creater.write(translation_config)
|
|
665
|
+
try:
|
|
666
|
+
if mono_watermark_first_page_doc_bytes:
|
|
667
|
+
mono_watermark_pdf = merge_watermark_doc(
|
|
668
|
+
result.mono_pdf_path,
|
|
669
|
+
mono_watermark_first_page_doc_bytes,
|
|
670
|
+
translation_config,
|
|
671
|
+
)
|
|
672
|
+
result.mono_pdf_path = mono_watermark_pdf
|
|
673
|
+
except Exception:
|
|
674
|
+
result.mono_pdf_path = result.no_watermark_mono_pdf_path
|
|
675
|
+
try:
|
|
676
|
+
if dual_watermark_first_page_doc_bytes:
|
|
677
|
+
dual_watermark_pdf = merge_watermark_doc(
|
|
678
|
+
result.dual_pdf_path,
|
|
679
|
+
dual_watermark_first_page_doc_bytes,
|
|
680
|
+
translation_config,
|
|
681
|
+
)
|
|
682
|
+
result.dual_pdf_path = dual_watermark_pdf
|
|
683
|
+
except Exception:
|
|
684
|
+
result.dual_pdf_path = result.no_watermark_dual_pdf_path
|
|
664
685
|
|
|
665
|
-
|
|
666
|
-
mono_watermark_pdf = merge_watermark_doc(
|
|
667
|
-
result.mono_pdf_path,
|
|
668
|
-
mono_watermark_first_page_doc_bytes,
|
|
669
|
-
translation_config,
|
|
670
|
-
)
|
|
671
|
-
result.mono_pdf_path = mono_watermark_pdf
|
|
672
|
-
if dual_watermark_first_page_doc_bytes:
|
|
673
|
-
dual_watermark_pdf = merge_watermark_doc(
|
|
674
|
-
result.dual_pdf_path,
|
|
675
|
-
dual_watermark_first_page_doc_bytes,
|
|
676
|
-
translation_config,
|
|
677
|
-
)
|
|
678
|
-
result.dual_pdf_path = dual_watermark_pdf
|
|
686
|
+
result.original_pdf_path = translation_config.input_file
|
|
679
687
|
|
|
680
688
|
return result
|
|
681
689
|
|
|
@@ -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.2.
|
|
26
|
+
__version__ = "0.2.19"
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
def create_parser():
|
|
@@ -198,6 +198,12 @@ def create_parser():
|
|
|
198
198
|
default=False,
|
|
199
199
|
help="Translate table text (experimental)",
|
|
200
200
|
)
|
|
201
|
+
translation_group.add_argument(
|
|
202
|
+
"--show-char-box",
|
|
203
|
+
action="store_true",
|
|
204
|
+
default=False,
|
|
205
|
+
help="Show character box (debug only)",
|
|
206
|
+
)
|
|
201
207
|
# service option argument group
|
|
202
208
|
service_group = translation_group.add_mutually_exclusive_group()
|
|
203
209
|
service_group.add_argument(
|
|
@@ -363,6 +369,7 @@ async def main():
|
|
|
363
369
|
watermark_output_mode=watermark_output_mode,
|
|
364
370
|
split_strategy=split_strategy,
|
|
365
371
|
table_model=table_model,
|
|
372
|
+
show_char_box=args.show_char_box,
|
|
366
373
|
)
|
|
367
374
|
|
|
368
375
|
# Create progress handler
|
|
@@ -66,6 +66,7 @@ class TranslationConfig:
|
|
|
66
66
|
# Add split-related parameters
|
|
67
67
|
split_strategy: BaseSplitStrategy | None = None,
|
|
68
68
|
table_model=None,
|
|
69
|
+
show_char_box: bool = False,
|
|
69
70
|
):
|
|
70
71
|
self.translator = translator
|
|
71
72
|
|
|
@@ -144,6 +145,7 @@ class TranslationConfig:
|
|
|
144
145
|
self._part_output_dirs: dict[int, Path] = {}
|
|
145
146
|
|
|
146
147
|
self.table_model = table_model
|
|
148
|
+
self.show_char_box = show_char_box
|
|
147
149
|
|
|
148
150
|
def parse_pages(self, pages_str: str | None) -> list[tuple[int, int]] | None:
|
|
149
151
|
"""解析页码字符串,返回页码范围列表
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "BabelDOC"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.19"
|
|
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.19"
|
|
152
152
|
version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
|
|
153
153
|
|
|
154
154
|
[bumpver.file_patterns]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.2.17"
|
|
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.17 → babeldoc-0.2.19}/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
|
|
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.17 → babeldoc-0.2.19}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.2.17 → babeldoc-0.2.19}/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.17 → babeldoc-0.2.19}/docs/images/babeldoc-big-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.2.17 → babeldoc-0.2.19}/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.17 → babeldoc-0.2.19}/docs/images/babeldoc-small-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.2.17 → babeldoc-0.2.19}/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
|