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

## File: README.md

# Docling



[](https://arxiv.org/abs/2408.09869)
[](https://docling-project.github.io/docling/)
[](https://pypi.org/project/docling/)
[](https://pypi.org/project/docling/)
[](https://github.com/astral-sh/uv)
[](https://github.com/astral-sh/ruff)
[](https://pydantic.dev)
[](https://pypi.org/project/prek/)
[](https://opensource.org/licenses/MIT)
[](https://pepy.tech/projects/docling)
[](https://apify.com/vancura/docling)
[](https://app.dosu.dev/097760a8-135e-4789-8234-90c8837d7f1c/ask?utm_source=github)
[](https://docling.ai/discord)
[](https://www.bestpractices.dev/projects/10101)
[](https://lfaidata.foundation/projects/)

## 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][supported_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][docling_document] representation format
- ↪️ Various [export formats][supported_formats] and options, including Markdown, HTML, WebVTT, DocLang, [DocTags](https://arxiv.org/abs/2503.11576) and lossless JSON
- 📜 Support for several application-specific XML schemas including [DocLang](https://doclang.ai), [USPTO](https://www.uspto.gov/patents) patents, [JATS](https://jats.nlm.nih.gov/) articles, and [XBRL](https://www.xbrl.org/) financial reports.
- 🔒 Local execution capabilities for sensitive data and air-gapped environments
- 🤖 Plug-and-play [integrations][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](https://huggingface.co/ibm-granite/granite-docling-258M))
- 🎙️ Audio support with Automatic Speech Recognition (ASR) models
- 🔌 Connect to any agent using the [MCP server](https://docling-project.github.io/docling/usage/mcp/)
- 🌐 Run Docling as a service with the [API server](https://docling-project.github.io/docling/usage/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](https://docling-project.github.io/docling/getting_started/installation/) 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](https://huggingface.co/ibm-granite/granite-docling-258M) and other VLMs via Docling CLI:

```bash
docling --pipeline vlm --vlm-model granite_docling https://arxiv.org/pdf/2206.01062
```

## 3. Python usage (recommended)

```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](https://docling-project.github.io/docling/usage/) and [configuration](https://docling-project.github.io/docling/getting_started/installation/) options.

## Documentation

Check out Docling's [documentation](https://docling-project.github.io/docling/) for details on
installation, usage, concepts, recipes, extensions, and more.

## Examples

Go hands-on with our [examples](https://docling-project.github.io/docling/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](https://docling-project.github.io/docling/integrations/) with popular frameworks
and tools.

## Get help and support

Please feel free to connect with us using the [discussion section](https://github.com/docling-project/docling/discussions).

## Technical report

For more details on Docling's inner workings, check out the [Docling Technical Report](https://arxiv.org/abs/2408.09869).

## Contributing

Please read [Contributing to Docling](https://github.com/docling-project/docling/blob/main/CONTRIBUTING.md) 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](https://lfaidata.foundation/projects/).

### IBM ❤️ Open Source AI

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

[supported_formats]: https://docling-project.github.io/docling/usage/supported_formats/
[docling_document]: https://docling-project.github.io/docling/concepts/docling_document/
[integrations]: https://docling-project.github.io/docling/integrations/
[extraction]: https://docling-project.github.io/docling/_generated/examples/extraction/

---

## File: docs/index.md

[](https://arxiv.org/abs/2408.09869)
[](https://pypi.org/project/docling/)
[](https://pypi.org/project/docling/)
[](https://github.com/astral-sh/uv)
[](https://github.com/astral-sh/ruff)
[](https://pydantic.dev)
[](https://pypi.org/project/prek/)
[](https://opensource.org/licenses/MIT)
[](https://pepy.tech/projects/docling)
[](https://apify.com/vancura/docling)
[](https://app.dosu.dev/097760a8-135e-4789-8234-90c8837d7f1c/ask?utm_source=github)
[](https://docling.ai/discord)
[](https://www.bestpractices.dev/projects/10101)
[](https://lfaidata.foundation/projects/)

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!


  [**⬇️ Installation**Quickly install Docling in your environment](../docling/getting_started/installation/)
  [**▶️ Quickstart**Get a jumpstart on basic Docling usage](../docling/getting_started/quickstart/)
  [**🧩 Concepts**Learn Docling fundamentals and get a glimpse under the hood](../docling/concepts/)
  [**🧑🏽‍🍳 Examples**Try out recipes for various use cases, including conversion, RAG, and more](../docling/examples/)
  [**🤖 Integrations**Check out integrations with popular AI tools and frameworks](../docling/integrations/)
  [**📖 Reference**See more API details](../docling/reference/document_converter/)


## Features

- 🗂️ Parsing of [multiple document formats][supported_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][docling_document] representation format
- ↪️ Various [export formats][supported_formats] and options, including Markdown, HTML, WebVTT, DocLang, [DocTags](https://arxiv.org/abs/2503.11576) and lossless JSON
- 📜 Support for several application-specific XML schemas including [DocLang](https://doclang.ai), [USPTO](https://www.uspto.gov/patents) patents, [JATS](https://jats.nlm.nih.gov/) articles, and [XBRL](https://www.xbrl.org/) financial reports.
- 🔒 Local execution capabilities for sensitive data and air-gapped environments
- 🤖 Plug-and-play [integrations][integrations] incl. LangChain, LlamaIndex, Crew AI & Haystack for agentic AI
- 🔍 Extensive [OCR support][ocr_engines] for scanned PDFs and images
- 👓 Support for several Visual Language Models, such as ([GraniteDocling](https://huggingface.co/ibm-granite/granite-docling-258M))
- 🎙️ Audio support with Automatic Speech Recognition (ASR) models
- 🔌 Connect to any agent using the [MCP server](https://docling-project.github.io/docling/usage/mcp/)
- 🌐 Run Docling as a service with the [API server](https://docling-project.github.io/docling/usage/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.

- [:fontawesome-brands-github: GitHub](https://github.com/docling-project/docling)
- [:fontawesome-brands-discord: Discord](https://docling.ai/discord)
- [:fontawesome-brands-linkedin: LinkedIn](https://linkedin.com/company/docling/)

## Live assistant

Do you want to leverage the power of AI and get live support on Docling?
Try out the [Chat with Dosu](https://app.dosu.dev/097760a8-135e-4789-8234-90c8837d7f1c/ask?utm_source=github) functionalities provided by our friends at [Dosu](https://dosu.dev/).

[](https://app.dosu.dev/097760a8-135e-4789-8234-90c8837d7f1c/ask?utm_source=github)

## LF AI & Data

Docling is hosted as a project in the [LF AI & Data Foundation](https://lfaidata.foundation/projects/).

### IBM ❤️ Open Source AI

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

[supported_formats]: ./usage/supported_formats.md
[docling_document]: ./concepts/docling_document.md
[integrations]: ./integrations/index.md
[ocr_engines]: ./concepts/OCR.md

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

# Docling Website
This is the official website for [Docling](https://github.com/docling-project/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.

```
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`](.github/workflows/deploy.yml) and served at
[docling.ai](https://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](https://github.com/docling-project/docling). 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:

```
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](https://github.com/docling-project/docling) for license information.