Docling: parse diverse documents into structured content for generative AI
A Python tool that turns PDF and DOCX into generative-AI-ready structure, combining layout understanding, local execution, and framework integrations.
GitHub docling-project/docling Updated 2026-09-20 Branch main Stars 67.1K Forks 4.8K
Python Document parsing DoclingDocument GraniteDocling Local and air-gapped environments

🧭 Decision Guide

Try it if you

  • You need to convert PDF, DOCX, PPTX, or XLSX into Markdown, HTML, or lossless JSON.
    The README Features section lists multi-format parsing and Markdown, HTML, and lossless JSON export.
  • Your generative AI application uses LangChain, LlamaIndex, Crew AI, or Haystack.
    The README Features section lists these agentic AI integrations.
  • Documents contain scanned PDFs, tables, formulas, or complex layouts requiring OCR and advanced PDF understanding.
    The README Features section lists OCR for scanned PDFs and images, plus layout, reading order, table structure, and formula understanding.
  • Sensitive data must remain inside your environment, and the deployment target includes local or air-gapped environments.
    The README Features section explicitly states local execution capabilities for sensitive data and air-gapped environments.

Skip it if you

  • Your runtime is limited to Python 3.9 or an older version.
    The README Quickstart says Python 3.9 support was dropped in docling 2.70.0 and Python 3.10 or higher is required.
  • Your core requirement is metadata extraction for titles, authors, references, or language.
    The README Coming soon section lists metadata extraction as not yet available.
  • Your core requirement is complex chemistry understanding such as molecular structures.
    The README Coming soon section lists complex chemistry understanding as not yet available.
  • Your selection requires published accuracy, latency, or memory figures.
    The provided README and release information do not give these figures for PDF, OCR, or VLM processing.

Requirements

  • Python 3.10 or higher; the README states that Python 3.9 support was dropped in docling 2.70.0.
  • Runs on macOS, Linux, and Windows for both x86_64 and arm64 architectures.
  • Installation uses the README Quickstart command pip install docling.
  • For VLMs such as GraniteDocling, use the CLI pattern with --pipeline vlm and --vlm-model granite_docling.

First step (verbatim from README)

pip install docling

Watch out

  • When using models such as GraniteDocling, the code's MIT license does not cover the model; the README requires checking licenses in the original packages.
    README License section: the codebase uses the MIT license, while individual model usage requires checking model licenses in the original packages.
  • The VLM CLI example uses --pipeline vlm and --vlm-model granite_docling and should not be treated as a standard conversion command.
    The README Quickstart VLM command explicitly includes both parameters.
  • The README What's new section lists video, ODF, XBRL, email, and EPUB parsing but provides no per-format limitation or compatibility matrix.
    The README What's new section lists added formats and capabilities without limitations or compatibility figures.

Not stated in the README

  • The README does not state accuracy for PDF, OCR, tables, or VLMs on real-world data.
  • The README does not state CPU, GPU, memory, disk, or per-document latency requirements.
  • The README does not state size limits, failure behavior, or batch-processing capability for each format.
  • The README does not state the exact hardware requirements or model download process for GraniteDocling and other VLMs.

💡 Deep Analysis

6
No I maintain a Python archiving system for patents and technical reports. PDFs contain formulas, code, tables, and multi-column layouts, and later audits need to trace the original structure as closely as possible. Should Markdown be the only archival format?
For: A Python information-management engineer archiving patents and technical reports who must preserve layout, formulas, code, and original structure for audit

No. Markdown should not be the only archival format because the README provides both lossless JSON and the unified DoclingDocument, while Markdown is primarily convenient for downstream consumption.

  • Advanced PDF understanding covers layout, reading order, tables, code, and formulas, meaning the parsed result contains more than linear text.
  • The export options include Markdown, HTML, DocTags, DocLang, and lossless JSON. Lossless JSON is the closer match for audit-oriented structural retention.
  • Project insights state that Markdown may not express all original layout information without loss; complex reading order, floating images, cross-page tables, and footnotes may be reordered or structurally degraded.
  • Markdown can therefore serve as a search, preview, or delivery copy, but it should not replace the structured intermediate result based on the README evidence.

The README does not say whether lossless JSON preserves original page coordinates, fonts, rendering information, or binary attachments, nor does it promise exact page reconstruction. The final fidelity boundary remains unknown.

  • Features: Advanced PDF understanding incl. page layout, reading order, table structure, code, formulas
  • Features: Various export formats ... including Markdown ... and lossless JSON
  • Project insights: Markdown is convenient for downstream consumption but may not express all original layout information losslessly
  • Project insights: Multi-column PDFs, cross-page tables, footnotes, floating images, and complex reading order may be reordered or lose structure
  • Features: A unified, expressive DoclingDocument representation format
docling https://arxiv.org/pdf/2206.01062
Not stated in the README:The README does not state whether lossless JSON includes page coordinates, fonts, rendering information, or original attachments.;It does not promise exact reconstruction of original PDF pages from any export format.;It does not specify support for special symbols, chemical structures, or handwriting in patent PDFs.
It depends I maintain a Python digitization pipeline for scanned PDFs, PNGs, and TIFFs containing multi-column layouts, complex tables, and formulas. Should I use Docling's standard parsing pipeline directly, or rely on its OCR/VLM capabilities?
For: A data engineer maintaining a Python digitization pipeline containing scanned PDFs, PNGs, and TIFFs with complex tables and multi-column layouts

It depends. Docling provides the OCR and visual-understanding capabilities needed for scanned documents, but the README does not guarantee stable correctness for every complex layout.

  • The Features section states “Extensive OCR support for scanned PDFs and images,” covering image-based PDFs, PNG, and TIFF inputs.
  • Advanced PDF understanding includes layout, reading order, table structure, and formulas. Docling also supports Visual Language Models such as GraniteDocling for more complex visual-document understanding.
  • The CLI exposes a separate VLM path, for example docling --pipeline vlm --vlm-model granite_docling ..., showing that standard and VLM pipelines are distinct choices.
  • Project insights identify scan quality, noise, multi-column PDFs, cross-page tables, and complex reading order as possible failure sources. VLMs also require more compute, memory, and model dependencies.

A practical fit is therefore standard parsing for ordinary digital PDFs and OCR or VLM processing for scanned or difficult pages. The README does not define an automatic routing rule or accuracy threshold.

  • Features: Extensive OCR support for scanned PDFs and images
  • Features: Advanced PDF understanding incl. page layout, reading order, table structure, code, formulas
  • Features: Support for several Visual Language Models, such as GraniteDocling
  • Quickstart: docling --pipeline vlm --vlm-model granite_docling https://arxiv.org/pdf/2206.01062
  • Project insights: Scan quality, fonts, skew, noise, and complex backgrounds can significantly affect OCR results
docling https://arxiv.org/pdf/2206.01062
Not stated in the README:The README provides no quantitative accuracy for OCR, table recognition, formula recognition, or reading order.;The README does not state minimum CPU, GPU, memory, or speed requirements for GraniteDocling.;The README does not describe automatic fallback between the standard and VLM pipelines.
Yes I am building a RAG knowledge base in Python with LangChain, and my inputs include PDF, DOCX, PPTX, and XLSX. I need to preserve tables, reading order, and document structure instead of extracting plain text only. Is Docling suitable as a unified preprocessing layer?
For: A Python AI application developer building an enterprise RAG knowledge base with LangChain and needing to ingest PDF, DOCX, PPTX, and XLSX files

Yes. Docling is suitable because its unified DoclingDocument representation can place multiple input formats behind one downstream processing pipeline.

  • The README explicitly lists PDF, DOCX, PPTX, and XLSX support, along with integrations for LangChain, LlamaIndex, Crew AI, and Haystack.
  • PDF understanding includes page layout, reading order, table structure, code, formulas, and image classification, which is more useful for RAG chunking than plain-text extraction.
  • Outputs include Markdown, HTML, DocTags, and lossless JSON. Markdown is convenient for retrieval pipelines, while lossless JSON is the better candidate when structural details must be retained.

The README does not promise a specific table-accuracy rate, reliable cross-page table reconstruction, or compatibility with a particular LangChain loader version. Those integration details remain to be validated.

  • Features: Parsing of multiple document formats including PDF, DOCX, PPTX, XLSX
  • Features: Advanced PDF understanding incl. page layout, reading order, table structure, code, formulas
  • Features: Plug-and-play integrations incl. LangChain, LlamaIndex, Crew AI & Haystack
  • Features: A unified, expressive DoclingDocument representation format
  • Features: Various export formats ... including Markdown ... and lossless JSON
pip install docling
Not stated in the README:The README does not specify accuracy for tables, formulas, or cross-page structures across formats.;The README does not specify the supported LangChain versions or the exact metadata mapping.
Yes I am developing an internal document service in Python. Multiple clients should call parsing through an API Server, while an agent should access the same capability through MCP. Can Docling serve directly as the service-layer foundation?
For: A Python service developer who needs to expose document parsing to multiple internal clients through an API Server or MCP-enabled agent

Yes. Docling already provides API Server and MCP Server entry points, covering both ordinary client calls and agent-tool access.

  • The Features section explicitly says “Connect to any agent using the MCP server,” allowing an MCP-capable agent to invoke document processing.
  • It also says “Run Docling as a service with the API server (docling-serve),” so the project is not limited to local-library usage.
  • CLI and Python API interfaces are available as well, making it possible to reuse the same conversion engine outside the service layer. Inputs can be local files or URLs, and outputs include Markdown, HTML, and lossless JSON.
  • Project insights state that real-time, high-concurrency, strict-SLA deployments require custom queues, caching, rate limiting, and failure recovery. Docling is not itself a complete enterprise service platform.

It is therefore suitable as the parsing engine and interface foundation, but production authentication, tenant isolation, autoscaling, and observability should not be assumed to be included.

  • Features: Connect to any agent using the MCP server
  • Features: Run Docling as a service with the API server (docling-serve)
  • Quickstart: Python usage (recommended)
  • Project insights: Provides CLI, Python API, API Server, and MCP Server
  • Project insights: High-concurrency or strict-SLA deployments require custom service, queue, cache, rate-limit, and recovery design
pip install docling
Not stated in the README:The README does not describe authentication, authorization, tenant isolation, or rate limiting for the API Server and MCP Server.;It provides no concurrency, latency, maximum-file-size, or deployment-topology measurements.;It does not state whether the API Server and MCP Server support exactly the same formats and configuration options.
Yes In a Python content-migration project, I process EML, MSG, MP4, WAV, and MP3 files and want to feed them into one search index. Can Docling cover these inputs without requiring separate parsers for email, audio, and video?
For: A Python content-migration engineer who needs to process EML, MSG, MP4, WAV, and MP3 files and expose email and multimedia content through one search entry point

Yes, as a unified entry point. The README lists email, audio, and video parsing capabilities and provides several outputs suitable for downstream content processing.

  • Features include EML and MSG email formats, plus WAV, MP3, and WebVTT. The “What’s new” section additionally lists MP4, AVI, MOV, MKV, and WebM video parsing.
  • Audio support uses ASR models, while video parsing can produce an ASR transcript and representative keyframes, so the scope goes beyond merely opening the files.
  • Outputs include plain text, Markdown, HTML, WebVTT, and lossless JSON, which can help route heterogeneous inputs into one index or archive.
  • The unified DoclingDocument representation can reduce the need to maintain separate upstream conversion logic for every format.

However, the README does not explain whether speaker identity, timestamps, keyframe quality, email attachments, or thread relationships are fully preserved. If search depends on those metadata, format support alone is not enough to confirm suitability.

  • Features: Parsing of multiple document formats including WAV, MP3, WebVTT, email formats (EML, MSG)
  • What's new: Parsing of video files (MP4, AVI, MOV, MKV, and WebM) with an ASR transcript and representative keyframes
  • Features: Audio support with Automatic Speech Recognition (ASR) models
  • Features: Various export formats ... including Markdown, HTML, WebVTT ... and lossless JSON
  • Features: A unified, expressive DoclingDocument representation format
pip install docling
Not stated in the README:The README does not say whether audio transcription provides speaker diarization, word-level timestamps, or language identification.;It does not specify video keyframe extraction strategy, intervals, or image-captioning capability.;It does not define how much of EML/MSG attachments, threads, HTML bodies, and metadata is preserved.
It depends I process XBRL financial reports in Python inside an air-gapped network. Sensitive files cannot be uploaded to third-party cloud services, and I need to pass the results to downstream archiving or search workflows. Is Docling suitable?
For: A Python data engineer processing financial reports who needs to parse XBRL files locally inside an isolated network

It depends. Docling matches the format and deployment requirements, but offline model, dependency, and resource preparation will determine whether it is practical.

  • The “What’s new” section explicitly lists parsing for XBRL financial reports, so the target format is within the stated scope.
  • The Features section states “Local execution capabilities for sensitive data and air-gapped environments,” which fits the no-cloud-transfer constraint.
  • HTML, Markdown, DocTags, and lossless JSON outputs can feed archiving, search, or downstream processing. The codebase itself is licensed under MIT.
  • However, the README says that individual model usage must follow the original model licenses, and initialization may require models and dependencies. An isolated deployment therefore needs pre-staged packages, model caches, and runtime resources.

The README does not specify supported XBRL versions, complex-report accuracy, a complete offline installation procedure, or batch throughput. Production-level financial-field completeness cannot be inferred from the project description alone.

  • What's new: Parsing of XBRL (eXtensible Business Reporting Language) documents for financial reports
  • Features: Local execution capabilities for sensitive data and air-gapped environments
  • Features: Various export formats ... including ... lossless JSON
  • License: For individual model usage, please refer to the model licenses found in the original packages
  • Quickstart: Please use Python 3.10 or higher
pip install docling
Not stated in the README:The README does not specify supported XBRL versions, extension taxonomies, or complex financial-report field coverage.;The README does not list the models, cache paths, or disk requirements for a fully offline installation.;The README provides no XBRL batch throughput, memory, or failure-recovery metrics.

✨ Highlights

  • Parses PDF, DOCX, PPTX, XLSX, EPUB, and more
  • Advanced PDF understanding covers layout, reading order, tables, and formulas
  • DoclingDocument unifies representation with Markdown and JSON export
  • Integrates with LangChain, LlamaIndex, Haystack, and Crew AI
  • Python 3.9 support was dropped in docling 2.70.0

🔧 Engineering

  • Use DocumentConverter to convert local paths or URLs and export Markdown
  • The CLI supports VLMs such as GraniteDocling for PDF processing
  • Provides an MCP server, docling-serve API server, and simple CLI
  • OCR covers scanned PDFs and images, with support for audio ASR models

⚠️ Risks

  • Python 3.9 is unsupported; docling 2.70.0 and later require Python 3.10+
  • MIT covers the code, while models such as GraniteDocling require separate license checks
  • Metadata extraction and complex chemistry understanding remain under Coming soon
  • The README provides no accuracy or resource figures for PDF, OCR, or VLM processing

👥 For who?

  • Python teams that need to feed PDF and DOCX content into generative AI apps
  • Agent projects using LangChain, LlamaIndex, Crew AI, or Haystack
  • Teams processing sensitive documents in local or air-gapped environments
  • Document pipelines needing scanned-PDF OCR, table structure, or reading order