BabelDOC 0.3.13__tar.gz → 0.3.15__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.3.13 → babeldoc-0.3.15}/PKG-INFO +1 -1
- babeldoc-0.3.15/babeldoc/__init__.py +1 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/const.py +1 -1
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/frontend/il_creater.py +32 -1
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/main.py +3 -3
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/pdfinterp.py +2 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/pyproject.toml +2 -2
- {babeldoc-0.3.13 → babeldoc-0.3.15}/uv.lock +1 -1
- babeldoc-0.3.13/babeldoc/__init__.py +0 -1
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.cursorignore +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/dependabot.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/labels.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/release-drafter.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/workflows/docs.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/workflows/publish-to-pypi.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.github/workflows/test.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.gitignore +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/LICENSE +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/README.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/assets/assets.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/converter.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/__init__.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/backend/__init__.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/backend/pdf_creater.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/il_version_1.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/il_version_1.rng +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/__init__.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/il_translator.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/translator/__init__.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/translator/cache.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/translator/translator.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/utils/atomic_integer.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/document_il/xml_converter.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/high_level.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/result_merger.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/split_manager.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/tools/italic_assistance.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/babeldoc/translation_config.py +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/CONTRIBUTOR_REWARD.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/README.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/deploy.sh +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/index.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/docs/requirements.txt +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/mkdocs.yml +0 -0
- {babeldoc-0.3.13 → babeldoc-0.3.15}/tests/test_translation_config.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.3.15"
|
|
@@ -426,6 +426,37 @@ def get_bbox(bbox, size, c, x, y):
|
|
|
426
426
|
return pymupdf.Quad(ll, lr, ul, ur)
|
|
427
427
|
|
|
428
428
|
|
|
429
|
+
# 常见 Unicode 空格字符的代码点
|
|
430
|
+
unicode_spaces = [
|
|
431
|
+
"\u0020", # 半角空格
|
|
432
|
+
"\u00a0", # 不间断空格
|
|
433
|
+
"\u1680", # Ogham 空格标记
|
|
434
|
+
"\u2000", # En Quad
|
|
435
|
+
"\u2001", # Em Quad
|
|
436
|
+
"\u2002", # En Space
|
|
437
|
+
"\u2003", # Em Space
|
|
438
|
+
"\u2004", # 三分之一 Em 空格
|
|
439
|
+
"\u2005", # 四分之一 Em 空格
|
|
440
|
+
"\u2006", # 六分之一 Em 空格
|
|
441
|
+
"\u2007", # 数样间距
|
|
442
|
+
"\u2008", # 行首前导空格
|
|
443
|
+
"\u2009", # 瘦弱空格
|
|
444
|
+
"\u200a", # hair space
|
|
445
|
+
"\u202f", # 窄不间断空格
|
|
446
|
+
"\u205f", # 数学中等空格
|
|
447
|
+
"\u3000", # 全角空格
|
|
448
|
+
"\u200b", # 零宽度空格
|
|
449
|
+
"\u2060", # 零宽度非断空格
|
|
450
|
+
"\t", # 水平制表符
|
|
451
|
+
]
|
|
452
|
+
|
|
453
|
+
# 构建正则表达式
|
|
454
|
+
pattern = "^[" + "".join(unicode_spaces) + "]+$"
|
|
455
|
+
|
|
456
|
+
# 编译正则
|
|
457
|
+
space_regex = re.compile(pattern)
|
|
458
|
+
|
|
459
|
+
|
|
429
460
|
class ILCreater:
|
|
430
461
|
stage_name = "Parse PDF and Create Intermediate Representation"
|
|
431
462
|
|
|
@@ -805,7 +836,7 @@ class ILCreater:
|
|
|
805
836
|
char_unicode = char.get_text()
|
|
806
837
|
if "(cid:" not in char_unicode and len(char_unicode) > 1:
|
|
807
838
|
return
|
|
808
|
-
if char_unicode
|
|
839
|
+
if space_regex.match(char_unicode):
|
|
809
840
|
char_unicode = " "
|
|
810
841
|
advance = char.adv
|
|
811
842
|
bbox = il_version_1.Box(
|
|
@@ -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.
|
|
26
|
+
__version__ = "0.3.15"
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
def create_parser():
|
|
@@ -266,8 +266,8 @@ async def main():
|
|
|
266
266
|
return
|
|
267
267
|
|
|
268
268
|
# 验证翻译服务选择
|
|
269
|
-
if not
|
|
270
|
-
parser.error("必须选择一个翻译服务:--openai
|
|
269
|
+
if not args.openai:
|
|
270
|
+
parser.error("必须选择一个翻译服务:--openai")
|
|
271
271
|
|
|
272
272
|
# 验证 OpenAI 参数
|
|
273
273
|
if args.openai and not args.openai_api_key:
|
|
@@ -393,6 +393,8 @@ class PDFPageInterpreterEx(PDFPageInterpreter):
|
|
|
393
393
|
gs.passthrough_instruction = (
|
|
394
394
|
self.il_creater.passthrough_per_char_instruction.copy()
|
|
395
395
|
)
|
|
396
|
+
if isinstance(seq, int) or isinstance(seq, float):
|
|
397
|
+
seq = [seq]
|
|
396
398
|
self.device.render_string(self.textstate, cast(PDFTextSeq, seq), self.ncs, gs)
|
|
397
399
|
return
|
|
398
400
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "BabelDOC"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.15"
|
|
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.3.
|
|
151
|
+
current_version = "0.3.15"
|
|
152
152
|
version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
|
|
153
153
|
|
|
154
154
|
[bumpver.file_patterns]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.3.13"
|
|
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.3.13 → babeldoc-0.3.15}/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
|
{babeldoc-0.3.13 → babeldoc-0.3.15}/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
|
|
File without changes
|
{babeldoc-0.3.13 → babeldoc-0.3.15}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.3.13 → babeldoc-0.3.15}/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.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-big-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-big-logo-with-transparent-background.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.3.13 → babeldoc-0.3.15}/docs/images/babeldoc-small-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.3.13 → babeldoc-0.3.15}/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
|