Skip to main content

Crate docling

Crate docling 

Source
Expand description

docling.rs: a Rust port of docling.

The public surface mirrors the Python SDK, kept deliberately small:

use docling::{DocumentConverter, SourceDocument};

let converter = DocumentConverter::new();
let result = converter
    .convert(SourceDocument::from_file("input.md").unwrap())
    .unwrap();
println!("{}", result.document.export_to_markdown());

For the PDF/image ML pipeline (pdfium + layout/TableFormer/OCR ONNX), reuse a Pipeline across documents to amortize model loading, instead of the per-call DocumentConverter. Deploying as a service: examples/Dockerfile is a 3-stage build that bakes the binary, native libs, and exported models (including the KV-cached TableFormer decoder) into a slim, Python-free runtime image — see the “Deploy in a container” section of the README.

See docs/MIGRATION.md for the architecture, the Python → Rust mapping, and the phased plan. Phase 0 ships the converter plumbing plus Markdown and CSV backends; PDF/DOCX/HTML and the ML pipeline land in later phases.

Modules§

backend
Format backends.
chunker
Document chunking for RAG pipelines — the Rust port of docling-core’s docling_core.transforms.chunker.
chunks
Chunk-record JSON export shared by the CLI (--to chunks) and the HTTP server (to=chunks): the hierarchical chunker’s records always, plus the hybrid chunker’s when a tokenizer is available — DOCLING_CHUNK_TOKENIZER, or models/chunk/tokenizer.json as populated by scripts/install/download_dependencies.sh (requires the chunking build feature; DOCLING_CHUNK_MAX_TOKENS overrides the default budget of 256).
dclx
.dclx packaging: the DocLang OPC archive (doclang.pack counterpart).

Structs§

ConversionResult
The result of converting one crate::SourceDocument.
DoclingDocument
The unified, format-agnostic document produced by every backend.
DocumentConverter
Routes a SourceDocument to the backend for its format and returns a ConversionResult.
EnrichmentOptions
The opt-in enrichment passes, mirroring docling’s PdfPipelineOptions flags (do_picture_classification, do_code_enrichment, do_formula_enrichment). All off by default.
MarkdownStream
An iterator over a document’s Markdown, yielded in document order as conversion progresses. Each item is a chunk to write as-is; concatenating every Ok chunk reproduces the buffered Markdown byte-for-byte.
MarkdownStreamer
Incremental Markdown serializer: feed finalized, in-document-order batches of Nodes and receive Markdown chunks whose concatenation is byte-identical to [to_markdown_images] over the same nodes. This is the streaming counterpart of the buffered serializer — used to emit a document’s Markdown in chunks (e.g. page by page, as the parallel PDF pipeline finishes pages) instead of building the whole string up front.
PictureImage
An extracted picture’s raw encoded bytes plus its mimetype and pixel size — the docling.rs analogue of docling-core’s ImageRef.
Pipeline
A reusable PDF pipeline. The primary worker runs its models on every core, so a single-page / small / image / METS input is converted at full intra-op speed with no pool to load. A document with enough pages instead fans out across a pool of narrower workers processed concurrently. Both load lazily and are cached for reuse, so a one-shot conversion only pays for what it uses.
SourceDocument
A loaded input document: its name, detected format, and raw bytes.
Table
A simple row-major table. By default rows[0] is the header row; a TableStructure overlay overrides that and adds column spans.

Enums§

ConversionError
Anything that can go wrong while loading or converting a source document.
ConversionStatus
Outcome status of a conversion, mirroring docling.datamodel.base_models.ConversionStatus.
DocItemLabel
Semantic role of a document item, mirroring docling-core’s DocItemLabel.
ImageMode
How pictures are rendered (mirrors docling-core’s ImageRefMode).
InputFormat
A document format supported (or planned) by docling.rs backends.
Node
A single piece of document content.

Constants§

PDF_ML_COMPILED
Which PDF conversion this build compiled in: the full ML pipeline (pdf feature), the pure-Rust text-layer path (pdf-text, the wasm32 build), or neither. Compile-time facts, exported so downstream crates (whose own features can’t see this crate’s) can branch — e.g. docling-wasm’s host tests, where workspace feature unification may pull pdf in.
PDF_TEXT_COMPILED
True when the pdf-text text-layer-only PDF path is compiled in.