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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
[]
= "docling"
= "DocumentConverter and format backends for docling.rs (a Rust port of docling)."
= true
= true
= true
= true
= true
= true
= true
= true
= true
# The 25 MB output-regression corpus under tests/ is dev-only — keep it out of
# the published crate (and under crates.io's size limit). benches/ reference that
# corpus by path, so they're dev-only too.
= ["tests", "benches"]
[]
# HEIC/HEIF image input (#211): forwards to docling-pdf's libheif decode.
= ["pdf", "docling-pdf/heif"]
# The default build is the full converter. The ML pipelines and the HTTP
# client are feature-sliced so `--no-default-features` leaves the pure-Rust
# declarative converters (DOCX/HTML/MD/XLSX/PPTX/… → md/json) — a set that
# compiles for wasm32-unknown-unknown (issue #79, see crates/docling-wasm).
= ["pdf", "asr", "fetch-images", "vlm"]
# PDF/image/METS-GBS ML pipeline (pdfium + ONNX Runtime via docling-pdf).
# resvg rides along so SVG input (#212) can rasterize into the same image
# pipeline; the non-ML SVG path (direct <text> extraction) needs no deps.
= ["dep:docling-pdf", "docling-pdf/ml", "dep:resvg"]
# Text-layer-only PDF conversion (docling-pdf's pure-Rust parser, no pdfium/
# ONNX) — the wasm32 PDF path. Subsumed by `pdf`, which converts everything.
= ["dep:docling-pdf"]
# Audio → Whisper ASR (symphonia + ONNX Runtime via docling-asr).
= ["dep:docling-asr"]
# Blocking HTTP fetch of remote <img src> images (DocumentConverter::fetch_images).
= ["dep:ureq", "dep:url"]
# Remote VLM pipeline (#77): render PDF pages via pdfium and convert them
# through an OpenAI-compatible vision endpoint (LM Studio / Ollama / vLLM /
# hosted), parsing the returned DocLang with the existing reader. Rides on the
# crate's existing blocking HTTP client; no model code compiled in.
= ["pdf", "dep:ureq"]
# Optional headless-browser HTML pre-render (the `--use-web-browser` flag /
# `DocumentConverter::use_web_browser`). Off by default so the standard build
# stays pure-Rust with no browser/runtime dependency; enable with
# `--features web-browser`. Drives the system Chromium over the DevTools
# protocol purely from Rust (no Node/Playwright) via `headless_chrome`.
= ["dep:headless_chrome", "dep:tempfile"]
# Tokenization-aware chunking (docling-core's HybridChunker + HF tokenizer).
= ["docling-core/chunking"]
# GPU execution providers for the ML pipelines (#74 PDF; #288 ASR) —
# pass-through to docling-pdf and docling-asr; select at runtime with
# DOCLING_RS_EP (default: cpu).
= ["pdf", "docling-pdf/cuda", "docling-asr?/cuda"]
= ["pdf", "docling-pdf/tensorrt", "docling-asr?/tensorrt"]
= ["pdf", "docling-pdf/directml", "docling-asr?/directml"]
= ["pdf", "docling-pdf/coreml", "docling-asr?/coreml"]
= ["pdf", "docling-pdf/xnnpack", "docling-asr?/xnnpack"]
[]
= { = "0.26", = ["dates"] }
= "1.4.0"
= { = "1.0", = true }
# O_EXCL temp file with an unpredictable name for the browser pre-render page
# (avoids a predictable /tmp path a local attacker could pre-plant a symlink at).
= { = "3", = true }
= { = "../docling-asr", = "1.48.2", = true }
= { = "../docling-core", = "1.48.2" }
= { = "../docling-pdf", = "1.48.2", = true, = false }
= { = "0.25", = false, = ["png", "jpeg", "gif", "bmp", "tiff", "webp"] }
= "0.11"
= { = "0.13.4", = false }
= "0.41"
# Data-parallel fan-out over independent OOXML parts (XLSX sheets, PPTX
# slides) — see the profile in the module docs of `backend/xlsx.rs`.
= "1.10"
= "1.11"
# SVG → PNG rasterization for the image ML pipeline (#212). Pure Rust
# (usvg + tiny-skia); gated behind `pdf` since without ML the raster has
# no consumer — the wasm/pdf-text SVG path extracts <text> directly.
# Pinned to 0.47: 0.48's font stack (font-types 0.12.2+) requires rustc
# 1.89, above this workspace's 1.88 MSRV.
= { = "0.47", = true }
= "0.20"
= "0.27.0"
# WHATWG charset decoding for non-UTF-8 HTML (#371): BOM / declared
# `<meta charset>` / windows-1252 fallback, the way BeautifulSoup's
# UnicodeDammit reads bytes for docling. Already in the tree via calamine.
= "0.8"
# EBCDIC copybook layouts (#252) deserialize with derive.
= { = "1", = ["derive"] }
= "1"
# Blocking HTTP client for fetching remote <img src> images when image fetching
# is enabled (DocumentConverter::fetch_images). 3.x matches the version `ort`
# already pulls in (so the graph keeps a single ureq); it needs Rust 1.85, which
# this crate already requires transitively via docling-pdf → ort.
= { = "3", = true }
# Resolve relative / protocol-relative <img src> against the page's base URL
# when the HTML was fetched from the web (fetch_images). Gated with ureq.
= { = "2", = true }
= { = "2.2", = false, = ["deflate"] }
# AbiWord .zabw / gzip-compressed .abw (#216); already in the tree via zip.
= "1"
# Raw-block Snappy decode for Apple iWork's IWA members (#213); pure Rust, so
# the backend rides along in every build including wasm.
= "1"
[[]]
= "convert"
= "examples/convert.rs"
[[]]
= "stream"
= "examples/stream.rs"
[]
= "0.5"
[[]]
= "parse"
= false