RAG and enterprise search

Retrieval with visual grounding

The problem

Flat text extraction destroys the two things retrieval depends on: where a passage sits in the document, and where it came from on the page. Chunks split mid-table and answers cannot be traced.

Why Docling

Every element and chunk keeps its page and bounding-box coordinates, so a retrieved passage points at the exact region on the page. You can highlight where an answer came from, not just cite a page number.

What it uses

  • Reading order
  • Structure-aware chunks
  • Tables
  • Figures
  • Provenance

Path to production

  • Batch processing
  • Concurrency
  • Managed queues
  • Private deployment
recipe.py
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

doc = DocumentConverter().convert("report.pdf").document

for chunk in HybridChunker().chunk(doc):
    embed(chunk.text, metadata={
        "headings": chunk.meta.headings,
        "page": chunk.meta.doc_items[0].prov[0].page_no,
    })
RAG examples

Agents and automation

Give an agent a document it can actually read

The problem

An agent handed raw PDF bytes or a wall of stripped text has to guess at structure on every step. Tool calls become unreliable exactly where the document is hardest.

Why Docling

Docling exposes documents to agents through MCP, so reading, converting and extracting are typed tool calls against a stable document model instead of prompt-level parsing.

What it uses

  • MCP server
  • Schema-based extraction
  • Machine-readable output

Path to production

  • API reliability
  • Job orchestration
  • Governance
recipe.json
{
  "mcpServers": {
    "docling": {
      "command": "uvx",
      "args": ["--from", "docling-mcp", "docling-mcp-server"]
    }
  }
}
Docling MCP

Research and technical documents

Equations, captions and citations stay intact

The problem

Scientific PDFs are the worst case for naive parsers: multi-column layouts, display equations, dense tables and figure captions that carry as much meaning as the body text.

Why Docling

Docling was built by a team that publishes on document conversion, against datasets they released. The hard cases are the design target, not an edge case.

What it uses

  • Formulas as LaTeX
  • Captions bound to figures
  • Multi-column reading order
  • Citations

Path to production

  • Accelerators
  • Model versioning
  • Reproducibility
recipe.bash
# Enable formula and code enrichment
docling paper.pdf \
  --to md \
  --enrich-formula \
  --enrich-code
Enrichment options

Enterprise archives

Decades of mixed formats, one document model

The problem

Real archives are not PDFs. They are Office files, scans, email, images, spreadsheets and media, accumulated over decades, and each format usually arrives with its own bespoke parser.

Why Docling

One converter covers the format spread and lands everything in the same DoclingDocument, so downstream systems are written once rather than once per source format.

What it uses

  • Office documents
  • Scans and OCR
  • Images
  • Audio
  • Tabular formats

Path to production

  • Data locality
  • Private infrastructure
  • Operational controls
recipe.py
from docling.document_converter import DocumentConverter

converter = DocumentConverter()

# Same call for PDF, DOCX, PPTX, XLSX, HTML, images, audio
for result in converter.convert_all(paths):
    store(result.document.export_to_dict())
Supported formats