BabelDOC 0.3.56__tar.gz → 0.3.57__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 (111) hide show
  1. {babeldoc-0.3.56 → babeldoc-0.3.57}/PKG-INFO +1 -1
  2. babeldoc-0.3.57/babeldoc/__init__.py +1 -0
  3. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/const.py +1 -1
  4. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/backend/pdf_creater.py +2 -2
  5. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/automatic_term_extractor.py +2 -1
  6. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/high_level.py +18 -22
  7. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/main.py +1 -1
  8. {babeldoc-0.3.56 → babeldoc-0.3.57}/pyproject.toml +2 -2
  9. {babeldoc-0.3.56 → babeldoc-0.3.57}/uv.lock +398 -333
  10. babeldoc-0.3.56/babeldoc/__init__.py +0 -1
  11. {babeldoc-0.3.56 → babeldoc-0.3.57}/.cursorignore +0 -0
  12. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  13. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  14. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  15. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  16. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/dependabot.yml +0 -0
  17. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/labels.yml +0 -0
  18. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/release-drafter.yml +0 -0
  19. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/workflows/codeql.yml +0 -0
  20. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/workflows/docs.yml +0 -0
  21. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/workflows/labeler.yml +0 -0
  22. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/workflows/lint.yml +0 -0
  23. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/workflows/pr-lint.yml +0 -0
  24. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/workflows/publish-to-pypi.yml +0 -0
  25. {babeldoc-0.3.56 → babeldoc-0.3.57}/.github/workflows/test.yml +0 -0
  26. {babeldoc-0.3.56 → babeldoc-0.3.57}/.gitignore +0 -0
  27. {babeldoc-0.3.56 → babeldoc-0.3.57}/.pre-commit-config.yaml +0 -0
  28. {babeldoc-0.3.56 → babeldoc-0.3.57}/LICENSE +0 -0
  29. {babeldoc-0.3.56 → babeldoc-0.3.57}/README.md +0 -0
  30. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/assets/assets.py +0 -0
  31. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  32. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/asynchronize/__init__.py +0 -0
  33. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/converter.py +0 -0
  34. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/__init__.py +0 -0
  35. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
  36. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/backend/__init__.py +0 -0
  37. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/frontend/__init__.py +0 -0
  38. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/frontend/il_creater.py +0 -0
  39. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/il_version_1.py +0 -0
  40. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/il_version_1.rnc +0 -0
  41. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/il_version_1.rng +0 -0
  42. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/il_version_1.xsd +0 -0
  43. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/__init__.py +0 -0
  44. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/add_debug_information.py +0 -0
  45. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
  46. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/il_translator.py +0 -0
  47. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/il_translator_llm_only.py +0 -0
  48. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/layout_parser.py +0 -0
  49. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
  50. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/remove_descent.py +0 -0
  51. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
  52. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/table_parser.py +0 -0
  53. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/midend/typesetting.py +0 -0
  54. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/translator/__init__.py +0 -0
  55. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/translator/cache.py +0 -0
  56. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/translator/translator.py +0 -0
  57. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/atomic_integer.py +0 -0
  58. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/fontmap.py +0 -0
  59. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/layout_helper.py +0 -0
  60. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/mupdf_helper.py +0 -0
  61. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/paragraph_helper.py +0 -0
  62. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
  63. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/style_helper.py +0 -0
  64. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/utils/zstd_helper.py +0 -0
  65. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/document_il/xml_converter.py +0 -0
  66. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/docvision/README.md +0 -0
  67. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/docvision/__init__.py +0 -0
  68. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/docvision/doclayout.py +0 -0
  69. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/docvision/rpc_doclayout.py +0 -0
  70. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  71. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/format/office/__init__.py +0 -0
  72. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/glossary.py +0 -0
  73. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/pdfinterp.py +0 -0
  74. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/progress_monitor.py +0 -0
  75. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/result_merger.py +0 -0
  76. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/split_manager.py +0 -0
  77. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/tools/generate_font_metadata.py +0 -0
  78. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/tools/italic_assistance.py +0 -0
  79. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/tools/italic_recognize_tool.py +0 -0
  80. {babeldoc-0.3.56 → babeldoc-0.3.57}/babeldoc/translation_config.py +0 -0
  81. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/CODE_OF_CONDUCT.md +0 -0
  82. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/CONTRIBUTING.md +0 -0
  83. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/CONTRIBUTOR_REWARD.md +0 -0
  84. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  85. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  86. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  87. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  88. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  89. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/README.md +0 -0
  90. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  91. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  92. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/README.md +0 -0
  93. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/deploy.sh +0 -0
  94. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/example/demo_glossary.csv +0 -0
  95. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-banner.png +0 -0
  96. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  97. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  98. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  99. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  100. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-big-logo.png +0 -0
  101. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  102. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-preview.gif +0 -0
  103. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  104. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  105. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/images/babeldoc-small-logo.png +0 -0
  106. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/index.md +0 -0
  107. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/intro-to-pdf-object.md +0 -0
  108. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/requirements.txt +0 -0
  109. {babeldoc-0.3.56 → babeldoc-0.3.57}/docs/supported_languages.md +0 -0
  110. {babeldoc-0.3.56 → babeldoc-0.3.57}/mkdocs.yml +0 -0
  111. {babeldoc-0.3.56 → babeldoc-0.3.57}/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.56
3
+ Version: 0.3.57
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
@@ -0,0 +1 @@
1
+ __version__ = "0.3.57"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.3.56"
6
+ __version__ = "0.3.57"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -781,10 +781,10 @@ class PDFCreater:
781
781
  return False
782
782
 
783
783
  def restore_media_box(self, doc: pymupdf.Document, mediabox_data: dict) -> None:
784
- for pageno, page_box_data in mediabox_data.items():
784
+ for xref, page_box_data in mediabox_data.items():
785
785
  for name, box in page_box_data.items():
786
786
  try:
787
- doc.xref_set_key(doc[pageno].xref, name, box)
787
+ doc.xref_set_key(xref, name, box)
788
788
  except Exception:
789
789
  logger.debug(f"Error restoring media box {name} from PDF")
790
790
 
@@ -185,6 +185,7 @@ class AutomaticTermExtractor:
185
185
  total_token_count = 0
186
186
  for paragraph in page.pdf_paragraph:
187
187
  if paragraph.debug_id is None or paragraph.unicode is None:
188
+ pbar.advance(1)
188
189
  continue
189
190
  if is_cid_paragraph(paragraph):
190
191
  pbar.advance(1)
@@ -253,7 +254,7 @@ class AutomaticTermExtractor:
253
254
  )
254
255
 
255
256
  except Exception as e:
256
- logger.error(f"Error preparing LLM prompt for automatic terms extract: {e}")
257
+ logger.error(f"Error during automatic terms extract: {e}")
257
258
  return
258
259
  finally:
259
260
  pbar.advance(len(paragraphs.paragraphs))
@@ -425,6 +425,8 @@ def fix_null_xref(doc: Document) -> None:
425
425
  elif obj and "/LZWDecode" in obj:
426
426
  data = doc.xref_stream(i)
427
427
  doc.update_stream(i, data)
428
+ elif obj and "/Annots" in obj:
429
+ doc.xref_set_key(i, "Annots", "null")
428
430
  except Exception:
429
431
  doc.update_object(i, "[]")
430
432
 
@@ -625,28 +627,22 @@ def do_translate(
625
627
 
626
628
  def fix_media_box(doc: Document) -> None:
627
629
  mediabox_data = {}
628
- for page in doc:
629
- page_box_data = {}
630
- mediabox = doc.xref_get_key(page.xref, "MediaBox")
631
- if mediabox[0] == "null":
632
- mediabox = ("array", "[0 0 612 792]")
633
- doc.xref_set_key(page.xref, "MediaBox", mediabox[1])
634
- if page.mediabox.x0 != 0 or page.mediabox.y0 != 0:
635
- x0 = page.mediabox.x0
636
- y0 = page.mediabox.y0
637
- x1 = page.mediabox.x1
638
- y1 = page.mediabox.y1
639
- page_box_data["MediaBox"] = doc.xref_get_key(page.xref, "MediaBox")[1]
640
- doc.xref_set_key(page.xref, "MediaBox", f"[0 0 {x1 - x0} {y1 - y0}]")
641
- if page.cropbox.x0 != 0 or page.cropbox.y0 != 0:
642
- x0 = page.cropbox.x0
643
- y0 = page.cropbox.y0
644
- x1 = page.cropbox.x1
645
- y1 = page.cropbox.y1
646
- page_box_data["CropBox"] = doc.xref_get_key(page.xref, "CropBox")[1]
647
- doc.xref_set_key(page.xref, "CropBox", f"[0 0 {x1 - x0} {y1 - x0}]")
648
- if page_box_data:
649
- mediabox_data[page.number] = page_box_data
630
+ for x in range(1, doc.xref_length()):
631
+ t = doc.xref_get_key(x, "Type")
632
+ box_set = {}
633
+ if t[1] in ["/Pages", "/Page"]:
634
+ mediabox = doc.xref_get_key(x, "MediaBox")
635
+ if mediabox[0] != "null":
636
+ _, _, x1, y1 = mediabox[1].replace("[", "").replace("]", "").split(" ")
637
+ doc.xref_set_key(x, "MediaBox", f"[0 0 {x1} {y1}]")
638
+ box_set["MediaBox"] = mediabox[1]
639
+ for k in ["CropBox", "BleedBox", "TrimBox", "ArtBox"]:
640
+ box = doc.xref_get_key(x, k)
641
+ if box[0] != "null":
642
+ box_set[k] = box[1]
643
+ doc.xref_set_key(x, k, "null")
644
+ if box_set:
645
+ mediabox_data[x] = box_set
650
646
  return mediabox_data
651
647
 
652
648
 
@@ -24,7 +24,7 @@ from babeldoc.translation_config import TranslationConfig
24
24
  from babeldoc.translation_config import WatermarkOutputMode
25
25
 
26
26
  logger = logging.getLogger(__name__)
27
- __version__ = "0.3.56"
27
+ __version__ = "0.3.57"
28
28
 
29
29
 
30
30
  def create_parser():
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.3.56"
3
+ version = "0.3.57"
4
4
  description = "Yet Another Document Translator"
5
5
  license = "AGPL-3.0"
6
6
  readme = "README.md"
@@ -151,7 +151,7 @@ pythonpath = [".", "src"]
151
151
  testpaths = ["tests"]
152
152
 
153
153
  [bumpver]
154
- current_version = "0.3.56"
154
+ current_version = "0.3.57"
155
155
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
156
156
 
157
157
  [bumpver.file_patterns]