extract-python 0.10.4__tar.gz → 0.11.1__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 (21) hide show
  1. {extract_python-0.10.4 → extract_python-0.11.1}/PKG-INFO +4 -2
  2. {extract_python-0.10.4 → extract_python-0.11.1}/extract_python/__init__.py +3 -3
  3. extract_python-0.11.1/extract_python/__main__.py +9 -0
  4. extract_python-0.11.1/extract_python/cli/__init__.py +50 -0
  5. extract_python-0.11.1/extract_python/cli/doc.py +78 -0
  6. extract_python-0.11.1/extract_python/cli/utils.py +25 -0
  7. {extract_python-0.10.4 → extract_python-0.11.1}/extract_python/docling_.py +1 -2
  8. {extract_python-0.10.4 → extract_python-0.11.1}/pyproject.toml +8 -1
  9. {extract_python-0.10.4 → extract_python-0.11.1}/uv.lock +27 -23
  10. {extract_python-0.10.4 → extract_python-0.11.1}/.gitignore +0 -0
  11. {extract_python-0.10.4 → extract_python-0.11.1}/.python-version +0 -0
  12. {extract_python-0.10.4 → extract_python-0.11.1}/README.md +0 -0
  13. {extract_python-0.10.4 → extract_python-0.11.1}/benches/__init__.py +0 -0
  14. {extract_python-0.10.4 → extract_python-0.11.1}/benches/compare.ipynb +0 -0
  15. {extract_python-0.10.4 → extract_python-0.11.1}/benches/compare.py +0 -0
  16. {extract_python-0.10.4 → extract_python-0.11.1}/benches/constants.py +0 -0
  17. {extract_python-0.10.4 → extract_python-0.11.1}/data/.gitignore +0 -0
  18. {extract_python-0.10.4 → extract_python-0.11.1}/extract_python/constants.py +0 -0
  19. {extract_python-0.10.4 → extract_python-0.11.1}/extract_python/marker_.py +0 -0
  20. {extract_python-0.10.4 → extract_python-0.11.1}/extract_python/miner_u.py +0 -0
  21. {extract_python-0.10.4 → extract_python-0.11.1}/extract_python/utils.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: extract-python
3
- Version: 0.10.4
3
+ Version: 0.11.1
4
4
  Summary: Structured content extraction
5
5
  Project-URL: Homepage, https://github.com/ICIJ/extract-python
6
6
  Project-URL: Repository, https://github.com/ICIJ/extract-python
7
7
  Project-URL: Issues, https://github.com/ICIJ/extract-python/issues
8
8
  Author-email: Clément Doumouro <cdoumouro@icij.org>
9
9
  Requires-Python: <3.15,>=3.13
10
- Requires-Dist: extract-core~=0.10.4
10
+ Requires-Dist: extract-core~=0.11.0
11
11
  Requires-Dist: icij-common~=0.8.2
12
12
  Requires-Dist: pympler~=1.1
13
13
  Provides-Extra: benches
@@ -15,6 +15,8 @@ Requires-Dist: html2image~=2.0.7; extra == 'benches'
15
15
  Requires-Dist: markdown2>=2.5.4; extra == 'benches'
16
16
  Requires-Dist: notebook>=7.4.5; extra == 'benches'
17
17
  Requires-Dist: pypdfium2>=4.30.0; extra == 'benches'
18
+ Provides-Extra: cli
19
+ Requires-Dist: typer~=0.21.2; extra == 'cli'
18
20
  Provides-Extra: docling
19
21
  Requires-Dist: docling-slim[feat-ocr-easyocr,feat-ocr-mac,feat-ocr-rapidocr,feat-ocr-tesserocr,standard]~=2.127; extra == 'docling'
20
22
  Provides-Extra: docling-gpu
@@ -5,20 +5,20 @@ logger = logging.getLogger(__name__)
5
5
  try:
6
6
  from .docling_ import DOCLING_DEFAULT_ARTIFACTS_PATH, DoclingPipeline
7
7
  except ModuleNotFoundError:
8
- logger.exception("docling is not available, might be optional...")
8
+ logger.warning("docling is not available, might be optional...")
9
9
  DOCKING_DEFAULT_ARTIFACTS_PATH, DoclingPipeline = None, None
10
10
 
11
11
  try:
12
12
  from .marker_ import MarkerPipeline
13
13
  except ModuleNotFoundError:
14
- logger.exception("marker is not available, might be optional...")
14
+ logger.warning("marker is not available, might be optional...")
15
15
  MarkerPipeline = None
16
16
 
17
17
 
18
18
  try:
19
19
  from .miner_u import MinerUPipeline
20
20
  except ModuleNotFoundError:
21
- logger.exception("mineru is not available, might be optional...")
21
+ logger.warning("mineru is not available, might be optional...")
22
22
  MinerUPipeline = None
23
23
 
24
24
 
@@ -0,0 +1,9 @@
1
+ from .cli import cli_app
2
+
3
+
4
+ def main() -> None:
5
+ cli_app()
6
+
7
+
8
+ if __name__ == "__main__":
9
+ main()
@@ -0,0 +1,50 @@
1
+ import importlib
2
+ import logging
3
+ import os
4
+ from typing import Annotated
5
+
6
+ import typer
7
+ from icij_common.logging_utils import setup_loggers
8
+
9
+ import extract_python
10
+
11
+ from .doc import configs_app
12
+ from .utils import AsyncTyper
13
+
14
+ cli_app = AsyncTyper(
15
+ context_settings={"help_option_names": ["-h", "--help"]},
16
+ pretty_exceptions_enable=False,
17
+ )
18
+ cli_app.add_typer(configs_app)
19
+
20
+
21
+ def version_callback(value: bool) -> None: # noqa: FBT001
22
+ if value:
23
+ package_version = importlib.metadata.version(extract_python.__name__)
24
+ print(package_version)
25
+ raise typer.Exit()
26
+
27
+
28
+ def pretty_exc_callback(value: bool) -> None: # noqa: FBT001
29
+ if not value:
30
+ os.environ["TYPER_STANDARD_TRACEBACK"] = "1"
31
+
32
+
33
+ @cli_app.callback()
34
+ def main(
35
+ version: Annotated[ # noqa: ARG001
36
+ bool | None,
37
+ typer.Option("--version", callback=version_callback, is_eager=True),
38
+ ] = None,
39
+ *,
40
+ pretty_exceptions: Annotated[ # noqa: ARG001
41
+ bool,
42
+ typer.Option(
43
+ "--pretty-exceptions", callback=pretty_exc_callback, is_eager=True
44
+ ),
45
+ ] = False,
46
+ ) -> None:
47
+ setup_loggers(
48
+ ["__main__", extract_python.__name__, "docling", "mineru", "marker"],
49
+ level=logging.DEBUG,
50
+ )
@@ -0,0 +1,78 @@
1
+ import logging
2
+ import os
3
+ from pathlib import Path
4
+ from typing import Annotated, Never
5
+
6
+ import typer
7
+ from extract_core import (
8
+ Device,
9
+ InputDoc,
10
+ OutputFormat,
11
+ Pipeline,
12
+ PipelineConfig,
13
+ PipelineSize,
14
+ PipelineType,
15
+ )
16
+ from extract_core.default_config import default_config
17
+ from pydantic import TypeAdapter
18
+
19
+ from .utils import AsyncTyper
20
+
21
+ logger = logging.getLogger(__name__)
22
+
23
+ _DOC = "doc"
24
+
25
+ _DOC_CONVERT_HELP = "Converts documents to the provided output format"
26
+ _DOC_CONVERT_DOCS_HELP = "input documents (can be file or directories)"
27
+ _DOC_CONVERT_OUTPUT_PATH_HELP = "directory where the converted documents will be saved"
28
+ _DOC_CONVERT_DEVICE_HELP = "device used to run inference"
29
+ _DOC_CONVERT_OUTPUT_FMT_HELP = "output format"
30
+ _DOC_CONVERT_PIPELINE_CONFIG = "path to a JSON pipeline configuration"
31
+
32
+
33
+ configs_app = AsyncTyper(name=_DOC)
34
+
35
+
36
+ @configs_app.async_command(help=_DOC_CONVERT_HELP)
37
+ async def convert(
38
+ docs: Annotated[list[Path], typer.Argument(help=_DOC_CONVERT_DOCS_HELP)],
39
+ output_path: Annotated[Path, typer.Argument(help=_DOC_CONVERT_OUTPUT_PATH_HELP)],
40
+ output_format: Annotated[
41
+ OutputFormat, typer.Option(help=_DOC_CONVERT_OUTPUT_FMT_HELP)
42
+ ] = OutputFormat.MARKDOWN,
43
+ config: Annotated[
44
+ Path | None,
45
+ typer.Option("-c", "--config", help=_DOC_CONVERT_PIPELINE_CONFIG),
46
+ ] = None,
47
+ ) -> None:
48
+ if config is not None:
49
+ config = TypeAdapter(PipelineConfig).validate_json(config.read_text())
50
+ else:
51
+ config = default_config(
52
+ pipeline_type=PipelineType.DOCLING,
53
+ device=Device.CPU,
54
+ size=PipelineSize.SMALL,
55
+ )
56
+ config = config.to_device()
57
+ docs = [InputDoc.from_path(d, n_pages=1) for p in docs for d in _walkdir(p)]
58
+ pipeline = Pipeline.from_config(config)
59
+ output_paths = []
60
+ async for res in pipeline.extract_content(docs, output_format, output_path):
61
+ output_path = res.output.path
62
+ logger.info("converted %s to %s", res.input.path, output_path / output_path)
63
+ output_paths.append(output_path / output_path)
64
+ print("\n".join(output_paths))
65
+
66
+
67
+ def _raise(exc: OSError) -> Never:
68
+ raise exc
69
+
70
+
71
+ def _walkdir(path: Path) -> list[Path]:
72
+ if path.is_file():
73
+ return [path]
74
+ paths = []
75
+ for root, _, files in os.walk(path, onerror=_raise):
76
+ root = Path(root) # noqa: PLW2901
77
+ paths.extend(root / f for f in files)
78
+ return paths
@@ -0,0 +1,25 @@
1
+ import asyncio
2
+ import sys
3
+ from collections.abc import Callable
4
+ from functools import wraps
5
+ from typing import Any
6
+
7
+ import typer
8
+
9
+
10
+ class AsyncTyper(typer.Typer):
11
+ def async_command(self, *args, **kwargs) -> Callable[[Callable], Callable]:
12
+ def decorator(async_func: Callable) -> Callable:
13
+ @wraps(async_func)
14
+ def sync_func(*_args, **_kwargs) -> Any:
15
+ res = asyncio.run(async_func(*_args, **_kwargs))
16
+ return res
17
+
18
+ self.command(*args, **kwargs)(sync_func)
19
+ return async_func
20
+
21
+ return decorator
22
+
23
+
24
+ def eprint(*args, **kwargs) -> None:
25
+ print(*args, file=sys.stderr, **kwargs)
@@ -59,8 +59,7 @@ class DoclingPipeline(Pipeline):
59
59
  def __init__(self, config: DoclingPipelineConfig):
60
60
  super().__init__(config)
61
61
  format_options = {
62
- k: v.to_docling(self._device)
63
- for k, v in self._config.format_options.items()
62
+ k: v.to_docling() for k, v in self._config.format_options.items()
64
63
  }
65
64
  logger.info(
66
65
  "resolved format options to: %s",
@@ -8,12 +8,16 @@ authors = [
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.13,<3.15"
10
10
  dependencies = [
11
- "extract-core~=0.10.4",
11
+ "extract-core~=0.11.0",
12
12
  "icij-common~=0.8.2",
13
13
  "pympler~=1.1",
14
14
  ]
15
15
 
16
16
  [project.optional-dependencies]
17
+ cli = [
18
+ "typer~=0.21.2",
19
+ ]
20
+
17
21
  benches = [
18
22
  "html2image~=2.0.7",
19
23
  "markdown2>=2.5.4",
@@ -58,6 +62,9 @@ override-dependencies = [
58
62
  "pillow==11.3.0",
59
63
  ]
60
64
 
65
+ [project.scripts]
66
+ extract_python = "extract_python.__main__:main"
67
+
61
68
  [[tool.uv.index]]
62
69
  name = "pytorch-cpu"
63
70
  url = "https://download.pytorch.org/whl/cpu"
@@ -691,7 +691,7 @@ wheels = [
691
691
 
692
692
  [[package]]
693
693
  name = "docling-core"
694
- version = "2.98.0"
694
+ version = "2.100.0"
695
695
  source = { registry = "https://pypi.org/simple" }
696
696
  dependencies = [
697
697
  { name = "defusedxml" },
@@ -709,9 +709,9 @@ dependencies = [
709
709
  { name = "typer" },
710
710
  { name = "typing-extensions" },
711
711
  ]
712
- sdist = { url = "https://files.pythonhosted.org/packages/6f/1f/03528148da2a97c35fcf0a0a9bc7614b7585cf1f63f624fce85aafaa60c9/docling_core-2.98.0.tar.gz", hash = "sha256:a5dd76d747d23b6e1c83b434e29285798a2547d6e23a0ddfc487ed09ff5663ea", size = 383348, upload-time = "2026-09-22T09:42:51.273Z" }
712
+ sdist = { url = "https://files.pythonhosted.org/packages/4d/f7/5fe0635e3a3251d08eb4a30dffd02414b6614986431a671c5a4352fcf90f/docling_core-2.100.0.tar.gz", hash = "sha256:87a4f7318d774194364a3ac6c1e6b1df0517f28c7ac395d92aa3535eb3e5c446", size = 404111, upload-time = "2026-10-06T12:14:49.988Z" }
713
713
  wheels = [
714
- { url = "https://files.pythonhosted.org/packages/23/c6/479371d25ad9fd0137c3036bb21d0b1f96075b85958a81ce868aae4bc515/docling_core-2.98.0-py3-none-any.whl", hash = "sha256:655903b45f4c66c759842df8172237bda3ef35055197bf371fa5c855d3df0bd3", size = 305641, upload-time = "2026-09-22T09:42:49.591Z" },
714
+ { url = "https://files.pythonhosted.org/packages/19/4c/9d319f71922af600271cb6e36b15bae0969444182d55361c39b566e29ab7/docling_core-2.100.0-py3-none-any.whl", hash = "sha256:4cb57c4ccb5740e83e5e63d2215201711125e3603115bc720b099bcc49d09029", size = 316004, upload-time = "2026-10-06T12:14:48.161Z" },
715
715
  ]
716
716
 
717
717
  [package.optional-dependencies]
@@ -752,7 +752,7 @@ wheels = [
752
752
 
753
753
  [[package]]
754
754
  name = "docling-parse"
755
- version = "7.21.0"
755
+ version = "7.22.2"
756
756
  source = { registry = "https://pypi.org/simple" }
757
757
  dependencies = [
758
758
  { name = "docling-core" },
@@ -760,23 +760,23 @@ dependencies = [
760
760
  { name = "pydantic" },
761
761
  { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-14-extract-python-marker' and extra == 'extra-14-extract-python-mineru')" },
762
762
  ]
763
- sdist = { url = "https://files.pythonhosted.org/packages/dc/d3/c0b03384b7735261662a5298837f5da49727ba0bf0d63baaeedc97236955/docling_parse-7.21.0.tar.gz", hash = "sha256:babbd8b43deb69706963ebc9b54283b458395a53519f68fd4bd0e7c5f793943b", size = 7035738, upload-time = "2026-09-22T09:53:15.861Z" }
763
+ sdist = { url = "https://files.pythonhosted.org/packages/bc/19/4036a3e844a6385b720b40f9c44d6ab4b6733707dd698dcfec3beda0a48d/docling_parse-7.22.2.tar.gz", hash = "sha256:368d076d2b887fcb44a90c37c219a190b975f01b257b61bd83ba75dc06861536", size = 7045499, upload-time = "2026-10-05T07:23:55.9Z" }
764
764
  wheels = [
765
- { url = "https://files.pythonhosted.org/packages/53/94/836d8fe9d079bc1d1d92498386e9ab7000bc7d1ae5154134e9677d8ec27a/docling_parse-7.21.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:da68374d71ad50fde66318db0034e56159fb74bf2f73602084b986471f2faee6", size = 9878142, upload-time = "2026-09-22T09:52:54.478Z" },
766
- { url = "https://files.pythonhosted.org/packages/94/9e/dcd2704f99ac831bc736c0c2bf30cedeb168cba908536f825946bec9f729/docling_parse-7.21.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d554d9f12b5d8d3d3b239afdcfad53996b4912d6d8e61dfd7635ecb4b15663a", size = 10437326, upload-time = "2026-09-22T09:52:57.327Z" },
767
- { url = "https://files.pythonhosted.org/packages/1d/39/51f01a03c39e40939f0e8761bb399462ddc2cb9d95920f59f84615468d9e/docling_parse-7.21.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:40201d5ffbdae0d21d52ecfd5c5045167caec27330a66706c35abc128fd33f40", size = 10845161, upload-time = "2026-09-22T09:52:59.175Z" },
768
- { url = "https://files.pythonhosted.org/packages/91/f4/9b900d863146dcd42c9eb984aaa41b5bcaeffe51f8743ca13f9ae3f0ee1d/docling_parse-7.21.0-cp313-cp313-win_amd64.whl", hash = "sha256:10b612c08c537221d5e1ab927a2226602479801e4132d6ebeea131fee9a09c72", size = 11886411, upload-time = "2026-09-22T09:53:01.888Z" },
769
- { url = "https://files.pythonhosted.org/packages/bc/ff/9ed39e6bdc256df9a4f69b3e0c33dcd7b7cdc9a491ee5da6be9645fe4a47/docling_parse-7.21.0-cp313-cp313-win_arm64.whl", hash = "sha256:e3f8740bad16bbc1d264708153751787529a06777a0cb51e29242e5ad7f4fd30", size = 9160130, upload-time = "2026-09-22T09:53:04.334Z" },
770
- { url = "https://files.pythonhosted.org/packages/97/87/fa8ac21dddf36ee89531e0c8de316e50003885551a99ec0e6eccd76efb12/docling_parse-7.21.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:fe2a63c0b92ec73fcc0db674ee57ed9972ea2661c08eaf40c099976acd58e708", size = 9878785, upload-time = "2026-09-22T09:53:06.226Z" },
771
- { url = "https://files.pythonhosted.org/packages/7b/f7/a29021e0953b4f562c673bb8adf9737a35fc34500680553a05cbfaf6c085/docling_parse-7.21.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40bfdf4e7ede1557b58c1680aea1fba1c22bf512e786d2889973fe330178d8df", size = 10437964, upload-time = "2026-09-22T09:53:08.473Z" },
772
- { url = "https://files.pythonhosted.org/packages/43/1b/8058f7a4a96ea97ee4a6fe53525c3505b5ca8e95361dce82223c40595c58/docling_parse-7.21.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f79205a3ae29104720b6136ed581b0574b3f365984eea5239d9e89ba4196032", size = 10845654, upload-time = "2026-09-22T09:53:10.309Z" },
773
- { url = "https://files.pythonhosted.org/packages/48/f1/82049b4c466df0c87864481b80d874cf4c1880a4b7a70c587f608400aced/docling_parse-7.21.0-cp314-cp314-win_amd64.whl", hash = "sha256:d3c57efa2ab1759373c440a2d869d08ff1079a9a3244231c7167b1e85440de51", size = 12322863, upload-time = "2026-09-22T09:53:12.31Z" },
774
- { url = "https://files.pythonhosted.org/packages/f4/3f/a5d44d7f51a5f3e2e96620c59770de7a98f3299d98959c1ec9b289937f61/docling_parse-7.21.0-cp314-cp314-win_arm64.whl", hash = "sha256:8cda2b5a6e8e9933ef68a114f283dfa83f6a2876ae70468ed055dbb0cdc8914b", size = 9528726, upload-time = "2026-09-22T09:53:14.311Z" },
765
+ { url = "https://files.pythonhosted.org/packages/d2/61/05b5d2fbc5dcb3023aa980daaebfaa03dd2447e21271668cd6b3058552c2/docling_parse-7.22.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:53156ac7c1e389857f23b118f8cd59331d3a215be94f9f9ce9ae3145e4125759", size = 9878343, upload-time = "2026-10-05T07:23:28.238Z" },
766
+ { url = "https://files.pythonhosted.org/packages/b9/d1/538efc18c43a0c6e678e6dea7c14d0599a14a0d6c8fc3b192bd6d6a92f6d/docling_parse-7.22.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f8eb209efd837d7ba055bc582ae0aa978e32b6fa9851fb39632a1c303f2b0693", size = 10437835, upload-time = "2026-10-05T07:23:30.77Z" },
767
+ { url = "https://files.pythonhosted.org/packages/5a/3f/c004e1eef07e24059130e9fe97ac5870c11a187162f1f7eb93e9c20c3a75/docling_parse-7.22.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73265a552c3f28bee591a8ca1e0dc38b51ee17f5051a626aef2fb625ee81f305", size = 10842974, upload-time = "2026-10-05T07:23:33.225Z" },
768
+ { url = "https://files.pythonhosted.org/packages/65/a0/8943af36a45726fe5b59c0ed213ef260ed0111309547d5b01b9820dcd5bf/docling_parse-7.22.2-cp313-cp313-win_amd64.whl", hash = "sha256:5a1433aceca0b1be834a79b6a7bddd89681426b8c1b06725aebe7740583d38a3", size = 11886875, upload-time = "2026-10-05T07:23:35.722Z" },
769
+ { url = "https://files.pythonhosted.org/packages/08/44/5d44f7ca3801fbcc5e0f6e51d92cb85a6952873203ecf56227503fb53f6a/docling_parse-7.22.2-cp313-cp313-win_arm64.whl", hash = "sha256:e23c55d856d0124634b42d8b63a879ecb1056769a3b38cb6ea186e03d20c0421", size = 9274980, upload-time = "2026-10-05T07:23:38.454Z" },
770
+ { url = "https://files.pythonhosted.org/packages/1f/71/75b2492ea7de1dea7b23405d8afbbf6be44e194857fad328c400dbcc9ef4/docling_parse-7.22.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:9a003356d71578a56718abd343baf5c6d745ea7d7e988ca524b3af5bbd35760d", size = 9878449, upload-time = "2026-10-05T07:23:41.387Z" },
771
+ { url = "https://files.pythonhosted.org/packages/65/e4/82e930b4f534f77dc70871d3b5f7cc4672fa6b89320d14bcad95a6ae3a72/docling_parse-7.22.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7699b216003ef5759ee4fa61bc7a403a6ce63afcbbf316cd17e4562d5b306e8b", size = 10439277, upload-time = "2026-10-05T07:23:44.53Z" },
772
+ { url = "https://files.pythonhosted.org/packages/f1/b2/6161ee6ab8e519177451620976abd1a002dbe1bdc98d4f8cddd7c49f68f4/docling_parse-7.22.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6a5aa4e0c0f62c4e0032c24117410d5773dbc303da5b4a282ff5abf9f491391", size = 10843921, upload-time = "2026-10-05T07:23:47.72Z" },
773
+ { url = "https://files.pythonhosted.org/packages/28/52/3593b031a4319379f9850dd3e8bc76adbcc62d7533f0741e6e3257d77d9c/docling_parse-7.22.2-cp314-cp314-win_amd64.whl", hash = "sha256:4bca9aeefa92896a12eb96e8858adc6b3adbd34c457095e5be68db84c6bb8c56", size = 12324184, upload-time = "2026-10-05T07:23:50.939Z" },
774
+ { url = "https://files.pythonhosted.org/packages/79/ec/c439cced7ed74407b0fd70d48e4de19b7a8e0da88f786b95bfb0af10c77f/docling_parse-7.22.2-cp314-cp314-win_arm64.whl", hash = "sha256:6bfff00d2577f288e037069bbf5087bcf01305f6b78b9432d599c6ffe03557a2", size = 9652594, upload-time = "2026-10-05T07:23:53.627Z" },
775
775
  ]
776
776
 
777
777
  [[package]]
778
778
  name = "docling-slim"
779
- version = "2.130.0"
779
+ version = "2.134.0"
780
780
  source = { registry = "https://pypi.org/simple" }
781
781
  dependencies = [
782
782
  { name = "certifi" },
@@ -789,9 +789,9 @@ dependencies = [
789
789
  { name = "requests" },
790
790
  { name = "tqdm" },
791
791
  ]
792
- sdist = { url = "https://files.pythonhosted.org/packages/0e/d5/4db4fd7e756d40db15b07ad072294548b0f508fb35fdd3496fa191223822/docling_slim-2.130.0.tar.gz", hash = "sha256:d45b467d322cd15f03fcc1e792bd4a52aa2dc075dfee229b13ae43a8603f82a6", size = 708768, upload-time = "2026-09-22T15:36:53.243Z" }
792
+ sdist = { url = "https://files.pythonhosted.org/packages/7b/75/ee898b4b7a310c187d0d7ad89002b000efeead0af177f9e50f71554b194b/docling_slim-2.134.0.tar.gz", hash = "sha256:63f12c79bdd0bbe205f244f97f0a8640c590ea46de4d913d23e963ec57e531dd", size = 795345, upload-time = "2026-10-06T04:57:33.257Z" }
793
793
  wheels = [
794
- { url = "https://files.pythonhosted.org/packages/db/57/9e21add9ec842b314d4d193db8c4186354b872529ef3a17f8aeedbd0c515/docling_slim-2.130.0-py3-none-any.whl", hash = "sha256:913043ee069eb4f107d47ebfca8bdbfbfd7ec84160a7193b7260777e3adbea19", size = 876695, upload-time = "2026-09-22T15:36:51.06Z" },
794
+ { url = "https://files.pythonhosted.org/packages/cd/58/526bc8f7c7f46dc22afa6f548c67e0bd685cf5f97faf7ee3d96c26355732/docling_slim-2.134.0-py3-none-any.whl", hash = "sha256:818b350e1e9878c0d54bd4ff972bd1918cc9827f193257162cc6f3a797175c29", size = 974718, upload-time = "2026-10-06T04:57:31.022Z" },
795
795
  ]
796
796
 
797
797
  [package.optional-dependencies]
@@ -964,7 +964,7 @@ dependencies = [
964
964
 
965
965
  [package.metadata]
966
966
  requires-dist = [
967
- { name = "docling-slim", specifier = "~=2.127" },
967
+ { name = "docling-slim", specifier = "~=2.134" },
968
968
  { name = "icij-common", specifier = "~=0.8.2" },
969
969
  { name = "pydantic", specifier = "~=2.13" },
970
970
  { name = "pydantic-extra-types", extras = ["pycountry"], specifier = "~=2.11.1" },
@@ -1003,6 +1003,9 @@ benches = [
1003
1003
  { name = "pypdfium2", version = "4.30.0", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-extract-python-marker'" },
1004
1004
  { name = "pypdfium2", version = "5.13.0", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-extract-python-mineru' or extra != 'extra-14-extract-python-marker'" },
1005
1005
  ]
1006
+ cli = [
1007
+ { name = "typer" },
1008
+ ]
1006
1009
  docling = [
1007
1010
  { name = "docling-slim", extra = ["feat-ocr-easyocr", "feat-ocr-mac", "feat-ocr-rapidocr", "feat-ocr-tesserocr", "standard"] },
1008
1011
  ]
@@ -1046,8 +1049,9 @@ requires-dist = [
1046
1049
  { name = "pypdfium2", marker = "extra == 'benches'", specifier = ">=4.30.0" },
1047
1050
  { name = "python-pptx", marker = "extra == 'mineru'", specifier = "~=1.0" },
1048
1051
  { name = "six", marker = "extra == 'mineru'", specifier = "~=1.17" },
1052
+ { name = "typer", marker = "extra == 'cli'", specifier = "~=0.21.2" },
1049
1053
  ]
1050
- provides-extras = ["benches", "docling", "docling-gpu", "marker", "mineru"]
1054
+ provides-extras = ["benches", "cli", "docling", "docling-gpu", "marker", "mineru"]
1051
1055
 
1052
1056
  [package.metadata.requires-dev]
1053
1057
  dev = [
@@ -5186,7 +5190,7 @@ wheels = [
5186
5190
 
5187
5191
  [[package]]
5188
5192
  name = "typer"
5189
- version = "0.24.2"
5193
+ version = "0.21.2"
5190
5194
  source = { registry = "https://pypi.org/simple" }
5191
5195
  dependencies = [
5192
5196
  { name = "annotated-doc" },
@@ -5194,9 +5198,9 @@ dependencies = [
5194
5198
  { name = "rich" },
5195
5199
  { name = "shellingham" },
5196
5200
  ]
5197
- sdist = { url = "https://files.pythonhosted.org/packages/83/b8/9ebb531b6c2d377af08ac6746a5df3425b21853a5d2260876919b58a2a4a/typer-0.24.2.tar.gz", hash = "sha256:ec070dcfca1408e85ee203c6365001e818c3b7fffe686fd07ff2d68095ca0480", size = 119849, upload-time = "2026-04-22T17:45:34.413Z" }
5201
+ sdist = { url = "https://files.pythonhosted.org/packages/f2/1e/a27cc02a0cd715118c71fa2aef2c687fdefc3c28d90fd0dd789c5118154c/typer-0.21.2.tar.gz", hash = "sha256:1abd95a3b675e17ff61b0838ac637fe9478d446d62ad17fa4bb81ea57cc54028", size = 120426, upload-time = "2026-02-10T19:33:46.182Z" }
5198
5202
  wheels = [
5199
- { url = "https://files.pythonhosted.org/packages/39/d1/9484b497e0a0410b901c12b8251c3e746e1e863f7d28419ffe06f7892fda/typer-0.24.2-py3-none-any.whl", hash = "sha256:b618bc3d721f9a8d30f3e05565be26416d06e9bcc29d49bc491dc26aba674fa8", size = 55977, upload-time = "2026-04-22T17:45:33.055Z" },
5203
+ { url = "https://files.pythonhosted.org/packages/b8/cc/d59f893fbdfb5f58770c05febfc4086a46875f1084453621c35605cec946/typer-0.21.2-py3-none-any.whl", hash = "sha256:c3d8de54d00347ef90b82131ca946274f017cffb46683ae3883c360fa958f55c", size = 56728, upload-time = "2026-02-10T19:33:48.01Z" },
5200
5204
  ]
5201
5205
 
5202
5206
  [[package]]