1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
[]
= "docling-cli"
= "Command-line interface for docling.rs (the `docling-rs` binary; a Rust port of docling)."
= true
= true
= true
= true
= true
= "README.md"
= true
= ["command-line-utilities", "text-processing"]
= true
[[]]
= "docling-rs"
= "src/main.rs"
[]
# Tokenization-aware chunking is on by default so `--to chunks` emits the
# hybrid records out of the box once download_dependencies.sh has fetched
# .models/chunk/tokenizer.json (the hierarchical records need no tokenizer and
# are always available). `--no-default-features` drops the tokenizer dep.
= ["chunking", "mcp"]
# HEIC/HEIF image input (#211) — links the system libheif.
= ["docling/heif"]
# pdfium as an opt-in PDF renderer (`DOCLING_RS_RENDERER=pdfium`) — off by
# default, the pipeline renders in pure Rust; pass-through to docling-pdf.
= ["docling/pdfium"]
# ONNX Runtime loaded at run time instead of linked (#504) — the s390x build
# and self-built runtimes; pass-through to docling.
= ["docling/ort-load-dynamic"]
# Pass through to the library's optional headless-browser HTML pre-render, so
# `cargo run -p docling-cli --features web-browser -- --use-web-browser …`
# activates it. Off by default (keeps the default binary browser-dependency-free).
= ["docling/web-browser"]
# Tokenization-aware chunking: enables the hybrid chunk records in `--to chunks`
# (the hierarchical ones need no tokenizer and are always available).
= ["docling/chunking"]
# `docling-rs serve` subcommand: the HTTP conversion API (pulls the async
# stack — tokio/axum — so it is off by default; the standalone `docling-serve`
# binary is always available from its own crate).
= ["dep:docling-serve", "dep:tokio"]
# `docling-rs mcp` subcommand (#669): a Model Context Protocol server — stdio
# for Claude Desktop / IDE agents, Streamable HTTP with `--http` — exposing
# `convert_to_markdown(uri)` (MarkItDown's MCP tool, same name and contract),
# `convert` and `list_input_formats`. On by default, so the release binaries
# and the container image carry it: rmcp, tokio and axum's HTTP/1 server add
# ~5 MB to the stripped binary (measured 39.2 → 44.2 MB before ONNX Runtime),
# and an MCP server is exactly where one static binary without Python pays
# off. `--no-default-features` drops it.
= ["dep:rmcp", "dep:schemars", "dep:serde", "dep:axum", "dep:tokio", "dep:docling-core"]
# GPU execution providers for the PDF/image ML pipeline (#74) — pass-through
# to docling → docling-pdf. Build e.g. `--features cuda`; such a build defaults
# to `DOCLING_RS_EP=auto` (use the GPU when one is usable, fall back to CPU),
# and the env var pins a specific provider — `DOCLING_RS_EP=cpu` opts back out.
# `docling-rs --version` reports which of these the binary carries.
= ["docling/cuda"]
= ["docling/tensorrt"]
= ["docling/directml"]
= ["docling/coreml"]
# CPU-class accelerator for machines without a usable GPU provider (#324).
# Requires linking a self-built ONNX Runtime (`ORT_LIB_LOCATION`, built with
# `--use_xnnpack`) — pyke ships no prebuilt runtime with this EP.
= ["docling/xnnpack"]
[]
= { = "../docling", = "2.21.0" }
= "0.3"
= { = "../docling-serve", = "2.21.0", = true, = false }
= "1"
= { = "1", = ["rt-multi-thread", "net", "signal", "sync", "time"], = true }
= { = "3.5", = true, = false, = ["server", "macros", "transport-io", "transport-streamable-http-server"] }
= { = "1", = true }
= { = "0.8", = true, = false, = ["http1", "tokio"] }
= { = "1", = ["derive"], = true }
= { = "../docling-core", = "2.21.0", = true }