docling Documentation

Get your documents ready for gen AI

64,678 stars Python Python 1 file ยท ~4,697 tokens #ai#convert#document-parser#document-parsing#documents#docx#html#markdown
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy docling on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name docling --restart always docling-project/docling:latest

1. Project Overview & Quickstart (docling-project/docling)

File: README.md

Docling















What is Docling ?

Docling simplifies document processing by parsing diverse formats โ€” including advanced PDF understanding โ€” and providing seamless integrations with the generative AI ecosystem.

Features

  • ๐Ÿ—‚๏ธ Parsing of multiple document formats including PDF, DOCX, PPTX, XLSX, HTML, EPUB, WAV, MP3, WebVTT, Box Notes, email formats (EML, MSG), images (PNG, TIFF, JPEG, ...), LaTeX, DocLang, plain text, and more
  • ๐Ÿ“‘ Advanced PDF understanding incl. page layout, reading order, table structure, code, formulas, image classification, and more
  • ๐Ÿงฌ A unified, expressive DoclingDocument representation format
  • โ†ช๏ธ Various export formats and options, including Markdown, HTML, WebVTT, DocLang, DocTags and lossless JSON
  • ๐Ÿ“œ Support for several application-specific XML schemas including DocLang, USPTO patents, JATS articles, and XBRL financial reports.
  • ๐Ÿ”’ Local execution capabilities for sensitive data and air-gapped environments
  • ๐Ÿค– Plug-and-play integrations incl. LangChain, LlamaIndex, Crew AI & Haystack for agentic AI
  • ๐Ÿ” Extensive OCR support for scanned PDFs and images
  • ๐Ÿ‘“ Support for several Visual Language Models, such as (GraniteDocling)
  • ๐ŸŽ™๏ธ Audio support with Automatic Speech Recognition (ASR) models
  • ๐Ÿ”Œ Connect to any agent using the MCP server
  • ๐ŸŒ Run Docling as a service with the API server (docling-serve)
  • ๐Ÿ’ป Simple and convenient CLI

What's new

  • ๐ŸŽฌ Parsing of video files (MP4, AVI, MOV, MKV, and WebM) with an ASR transcript and representative keyframes
  • ๐Ÿ“„ Parsing of ODF (OpenDocument Format) files for text documents (.odt), spreadsheets (.ods), and presentations (.odp)
  • ๐Ÿ’ผ Parsing of XBRL (eXtensible Business Reporting Language) documents for financial reports
  • ๐Ÿ“ง Parsing of email files (.eml, .msg)
  • ๐Ÿ“š Parsing of EPUB (Electronic Publication) files for e-books
  • ๐Ÿ“ Parsing of plain-text files (.txt, .text) and Markdown supersets (.qmd, .Rmd)
  • ๐Ÿ“Š Chart understanding (Barchart, Piechart, LinePlot): convert them into tables or code and add detailed descriptions

Coming soon

  • ๐Ÿ“ Metadata extraction, including title, authors, references & language
  • ๐Ÿ“ Complex chemistry understanding (Molecular structures)

Quickstart

1. Install

bash
pip install docling

Note: Python 3.9 support was dropped in docling version 2.70.0. Please use Python 3.10 or higher.

Works on macOS, Linux and Windows environments for both x86_64 and arm64 architectures.

More detailed installation instructions are available in the docs.

2. Convert a document (CLI)

bash
docling https://arxiv.org/pdf/2206.01062

This generates a .md file in the current directory containing structured document content.

You can also use ๐ŸฅšGraniteDocling and other VLMs via Docling CLI:

bash
docling --pipeline vlm --vlm-model granite_docling https://arxiv.org/pdf/2206.01062
python
from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"  # a document via a local path or URL
converter = DocumentConverter()
result = converter.convert(source)
print(result.document.export_to_markdown())  # output: "## Docling Technical Report[...]"

More advanced usage and configuration options.

Documentation

Check out Docling's documentation for details on
installation, usage, concepts, recipes, extensions, and more.

Examples

Go hands-on with our examples,
demonstrating how to address different application use cases with Docling.

Integrations

To further accelerate your AI application development, check out Docling's native
integrations with popular frameworks
and tools.

Get help and support

Please feel free to connect with us using the discussion section.

Technical report

For more details on Docling's inner workings, check out the Docling Technical Report.

Contributing

Please read Contributing to Docling for details.

References

If you use Docling in your projects, please consider citing the following:

bib
@techreport{Docling,
  author = {Deep Search Team},
  month = {8},
  title = {Docling Technical Report},
  url = {https://arxiv.org/abs/2408.09869},
  eprint = {2408.09869},
  doi = {10.48550/arXiv.2408.09869},
  version = {1.0.0},
  year = {2024}
}

License

The Docling codebase is under MIT license.
For individual model usage, please refer to the model licenses found in the original packages.

LF AI & Data

Docling is hosted as a project in the LF AI & Data Foundation.

IBM โค๏ธ Open Source AI

The project was started by the AI for knowledge team at IBM Research Zurich.


File: docs/index.md














Docling simplifies document processing by parsing diverse formats โ€” including advanced PDF understanding โ€” and providing seamless integrations with the generative AI ecosystem.

Getting started

๐Ÿฃ Ready to kick off your Docling journey? Let's dive right into it!

โฌ‡๏ธ InstallationQuickly install Docling in your environment
โ–ถ๏ธ QuickstartGet a jumpstart on basic Docling usage
๐Ÿงฉ ConceptsLearn Docling fundamentals and get a glimpse under the hood
๐Ÿง‘๐Ÿฝโ€๐Ÿณ ExamplesTry out recipes for various use cases, including conversion, RAG, and more
๐Ÿค– IntegrationsCheck out integrations with popular AI tools and frameworks
๐Ÿ“– ReferenceSee more API details

Features

  • ๐Ÿ—‚๏ธ Parsing of multiple document formats including PDF, DOCX, PPTX, XLSX, HTML, EPUB, WAV, MP3, WebVTT, Box Notes, email formats (EML, MSG), images (PNG, TIFF, JPEG, ...), LaTeX, DocLang, plain text, and more
  • ๐Ÿ“‘ Advanced PDF understanding incl. page layout, reading order, table structure, code, formulas, image classification, and more
  • ๐Ÿงฌ A unified, expressive DoclingDocument representation format
  • โ†ช๏ธ Various export formats and options, including Markdown, HTML, WebVTT, DocLang, DocTags and lossless JSON
  • ๐Ÿ“œ Support for several application-specific XML schemas including DocLang, USPTO patents, JATS articles, and XBRL financial reports.
  • ๐Ÿ”’ Local execution capabilities for sensitive data and air-gapped environments
  • ๐Ÿค– Plug-and-play integrations incl. LangChain, LlamaIndex, Crew AI & Haystack for agentic AI
  • ๐Ÿ” Extensive OCR support for scanned PDFs and images
  • ๐Ÿ‘“ Support for several Visual Language Models, such as (GraniteDocling)
  • ๐ŸŽ™๏ธ Audio support with Automatic Speech Recognition (ASR) models
  • ๐Ÿ”Œ Connect to any agent using the MCP server
  • ๐ŸŒ Run Docling as a service with the API server (docling-serve)
  • ๐Ÿ’ป Simple and convenient CLI

What's new

  • ๐ŸŽฌ Parsing of video files (MP4, AVI, MOV, MKV, and WebM) with an ASR transcript and representative keyframes
  • ๐Ÿ“„ Parsing of ODF (OpenDocument Format) files for text documents (.odt), spreadsheets (.ods), and presentations (.odp)
  • ๐Ÿ’ผ Parsing of XBRL (eXtensible Business Reporting Language) documents for financial reports
  • ๐Ÿ“ง Parsing of email files (.eml, .msg)
  • ๐Ÿ“š Parsing of EPUB (Electronic Publication) files for e-books
  • ๐Ÿ“ Parsing of plain-text files (.txt, .text) and Markdown supersets (.qmd, .Rmd)
  • ๐Ÿ“Š Chart understanding (Barchart, Piechart, LinePlot): convert them into tables or code and add detailed descriptions

Coming soon

  • ๐Ÿ“ Metadata extraction, including title, authors, references & language
  • ๐Ÿ“ Complex chemistry understanding (Molecular structures)

What's next

๐Ÿš€ The journey has just begun! Join us and become a part of the growing Docling community.

Live assistant

Do you want to leverage the power of AI and get live support on Docling?
Try out the Chat with Dosu functionalities provided by our friends at Dosu.

LF AI & Data

Docling is hosted as a project in the LF AI & Data Foundation.

IBM โค๏ธ Open Source AI

The project was started by the AI for knowledge team at IBM Research Zurich.

2. Official Technical Reference & Guides (docling-project/website)

Docling Website

This is the official website for Docling.

Getting Started

Install the required dependencies:

bash
uv sync

Running Locally

Start the development server on http://0.0.0.0:5001

bash
uv run website/main.py

When you make changes to your project, the server will automatically reload.

Building the Static Site

The site is fully static โ€” every page is pre-rendered to HTML โ€” so it can be
published on GitHub Pages (or any static host). Build it with:

bash
uv run website/build.py

This renders all pages and copies the assets into dist/. To serve that build
locally:

bash
python3 -m http.server 8000 --directory dist
# open http://localhost:8000

Any static file server works. Clean URLs such as /deployments/ resolve because
each route is written as <route>/index.html.

Useful options:

  • --out <dir>: output directory (default dist).
  • --base-path : URL prefix for root-relative links, needed when the
    site is served from a sub-path. For the GitHub project page at
    docling-project.github.io/website, build with --base-path /website
    (the repository name). Leave empty for a root/custom-domain deploy.
  • --cname <domain>: write a CNAME file for a custom domain (e.g. docling.ai).

To preview a sub-path build locally, build straight into a directory whose name
matches the prefix โ€” --base-path rewrites the links but does not nest the
files:

bash
uv run website/build.py --out /tmp/site/website --base-path /website
python3 -m http.server 5055 --directory /tmp/site
# open http://localhost:5055/website/

Asset URLs in CSS

--base-path rewrites root-relative href/src attributes in HTML only, so a
root-relative url() inside a stylesheet would 404 on a sub-path deploy. Write
stylesheet asset URLs relative to the stylesheet instead:

css
src: url("../font/plex.woff2"); /* not url("/font/plex.woff2") */

The build enforces this: it exits with an error naming the file and URL if a
root-relative url() appears in any stylesheet.

Site architecture

Pages are composed from reusable components; content lives in plain Python data
modules so copy can be edited without touching markup.

text
website/
  pages/          one module per route โ€” section composition only
  components/     reusable product components (hero, document demo, ...)
  data/           site content: navigation, samples, product copy, integrations
  highlight.py    build-time Pygments highlighting (no client-side highlighter)
  seo.py          sitemap.xml and robots.txt, generated from one route list

public/
  css/            cascade layers: tokens, reset, base, layout, components, pages
  js/             ES modules, one per concern, loaded via js/main.js
  font/           self-hosted IBM Plex Sans (variable) and Plex Mono

CSS uses cascade layers, declared once at the top of css/tokens.css:

css
@layer reset, tokens, base, layout, components, pages, utilities;

Because the order is declared there, the <link> tags can be reordered without
changing which rules win. Colour, spacing, typography and motion are all tokens
in tokens.css; the theme is dark by default with a full light variant under
prefers-color-scheme: light.

Adding a route means adding it in three places: a page module under
website/pages/, a handler in website/main.py, and a _write_page call in
website/build.py. Add it to STATIC_ROUTES in website/seo.py so it reaches
the sitemap.

Sample output shown on the site carries provenance metadata in
website/data/samples.py, including whether it has been regenerated against a
pinned Docling release. Anything not yet reproduced is labelled as such on the
page rather than presented as a verified result.

Deployment

Pushes to main are built and deployed to GitHub Pages automatically by
.github/workflows/deploy.yml and served at
docling.ai. The workflow builds at the root (BASE_PATH=/)
and writes a CNAME for the custom domain.

Requires, once: Settings โ†’ Pages โ†’ Build and deployment โ†’ Source: GitHub Actions,
and the custom domain configured under Settings โ†’ Pages โ†’ Custom domain.

Serving from the GitHub project sub-path instead

To serve from docling-project.github.io/website rather than the custom domain,
override the defaults via repository variables under
Settings โ†’ Secrets and variables โ†’ Actions โ†’ Variables:

  • BASE_PATH = /website
  • CNAME = (empty)

Contributing

This website is part of the Docling project. Your feedback and contributions are welcome!

Writing a Blog Post

Blog Post Structure

Blog posts follow a structured format with timestamped folders and organized assets:

text
blog/
โ””โ”€โ”€ YYYYMMDD_HH_post-title/
    โ”œโ”€โ”€ post.md
    โ””โ”€โ”€ images/
        โ”œโ”€โ”€ thumbnail.jpg
        โ””โ”€โ”€ other-images.jpg

Creating a New Blog Post

  1. Create the folder using the naming convention YYYYMMDD_HH_<title-with-dashes>:

    bash
    mkdir -p blog/20260306_14_my-awesome-post/images
  2. Create post.md with metadata and content:

    markdown
    ---
    title: My Awesome Post
    date: 06-03-2026
    summary: A brief description that appears in the blog listing
    thumbnail: images/thumbnail.jpg
    ---
    
    Your blog content starts here...
    
    ## Section Heading
    
    You can use all standard Markdown features, code blocks, images, etc.
  3. Add images to the images/ folder:

    • Thumbnail: images/thumbnail.jpg (recommended size: 1200x630px)
    • Other images: Reference them in your post as images/your-image.jpg
  4. Restart the server to see your changes (due to caching):

    bash
    uv run website/main.py

Metadata Fields

  • title: The post title (displayed as H1)
  • date: Publication date in DD-MM-YYYY format
  • summary: Brief description shown in blog listing
  • thumbnail: Path to thumbnail image (optional, relative to post folder)
  • category: Post category for filtering (default: technical)
    • technical - Technical guides, tutorials, and deep dives
    • event - Announcements about events, conferences, or community gatherings
    • new-feature-alert - Announcements of new features or releases

Markdown Support

The blog supports extended Markdown features including:

  • Code syntax highlighting
  • Tables
  • Footnotes
  • Emoji
  • Admonitions/callouts
  • And more (see blog/template/post.md for examples)

Tips

  • Use the template at blog/template/post.md as a reference
  • Posts are sorted by date (newest first)
  • The folder name's timestamp helps with organization but doesn't affect display
  • Images are served from /blog/<folder-name>/images/

License

This project is part of the Docling ecosystem. See the main Docling repository for license information.