# Docling — convertir vos PDF et documents pour un RAG local

Docling convertit PDF, Word et PowerPoint en Markdown ou JSON structuré pour un RAG local : layout, tableaux, OCR. Open source MIT, issu d'IBM Research.

URL canonique : https://www.osfria.fr/docling.html

---

OSIALab · Documents / RAG

## Docling — convertir vos documents pour les rendre exploitables par l'IA

Docling analyse la **mise en page** de vos PDF, Word, PowerPoint ou HTML — colonnes, tableaux, titres, formules — et en produit un Markdown ou un JSON structuré, fidèle à l'original. C'est la brique qui prépare proprement vos documents avant un pipeline RAG. Et tout se fait en local.

### Fiabilité & transparence

🟡 **Utilisable, avec points d'attention**

- **Maintenance** : v2.102.1 (12 juin 2026) ; rythme actif et rapide.
- **Adoption** : 37K étoiles GitHub, croissance continue en tant que standard de conversion documentaire.
- **Sécurité** : CVE-2026-24009 (RCE via PyYAML, demande de patch urgent — mettez à jour dès que disponible).
- **Verdict** : Excellent pour préparer des documents avant RAG. Mettez à jour régulièrement, particulièrement après la correction du CVE PyYAML.

> Page informative, sans valeur de conseil. Installez depuis la **source officielle**, vérifiez la **licence** du logiciel et des modèles, et gardez en tête qu'une conversion automatique **peut se tromper** sur un document complexe : relisez les sorties importantes.

### À quoi ça sert

Avant d'alimenter un système RAG, un document doit devenir du **texte propre et structuré**. Un PDF, pour une machine, n'est souvent qu'un nuage de caractères positionnés : l'ordre de lecture, les colonnes, les cellules d'un tableau ne sont pas explicites. Docling reconstruit cette structure. Il détecte la mise en page, rétablit l'**ordre de lecture**, reconnaît les **tableaux** et les **formules**, et exporte un Markdown, un HTML ou un JSON exploitable.

C'est une **brique de préparation**, pas une interface de chat. On la place en amont d'outils comme [AnythingLLM](https://www.osfria.fr/anythingllm.html), [Khoj](https://www.osfria.fr/khoj.html) ou de tout pipeline RAG maison. Un meilleur découpage à l'entrée, c'est un *retrieval* plus pertinent à la sortie.

### Ce qui fait sa force

- **Une vraie compréhension de la mise en page.** Là où un simple extracteur de texte aplatit tout, Docling s'appuie sur des modèles de **layout** et un modèle dédié de reconnaissance de tableaux (**TableFormer**) pour préserver la structure : un tableau reste un tableau, un titre reste un titre.
- **Un format pivot unique.** Toutes les entrées convergent vers une représentation interne, le `DoclingDocument`, d'où l'on exporte ensuite en Markdown, HTML, JSON ou DocTags. Un seul modèle de données pour des dizaines de formats sources.
- **Large couverture de formats.** PDF (natif et scanné via OCR), DOCX, XLSX, PPTX, HTML, AsciiDoc, Markdown, images — et des schémas spécialisés. La sortie reste cohérente quel que soit l'entrée.
- **Local et sans appel réseau pour la conversion.** Le traitement se fait sur votre machine. Les modèles nécessaires sont téléchargés une fois, puis le pipeline tourne hors-ligne.
- **Une gouvernance solide.** Projet initié par l'équipe *AI for Knowledge* d'**IBM Research** à Zurich, aujourd'hui hébergé par la **LF AI & Data Foundation** (Linux Foundation). Un socle pérenne, pas un script de week-end.

### Pour qui

Pour les profils **techniques** (développeurs, data scientists) qui construisent ou affinent un pipeline RAG. Docling s'utilise en ligne de commande ou en Python. Si vous cherchez une solution tout-en-un sans code, [AnythingLLM](https://www.osfria.fr/anythingllm.html) intègre déjà sa propre couche de conversion — Docling vise ceux qui veulent maîtriser cette étape finement.

### Installation

#### Prérequis

Python 3.9 ou supérieur. Un environnement virtuel est vivement recommandé pour isoler les dépendances.

```
# Créer un environnement virtuel
python -m venv .venv
source .venv/bin/activate   # Linux / macOS
.venv\Scripts\activate      # Windows

# Installer Docling
pip install docling
```

#### Convertir un document en ligne de commande

```
# Convertir un PDF en Markdown
docling mon-document.pdf

# Traiter plusieurs fichiers vers un dossier de sortie
docling *.pdf --output-dir ./sortie/
```

#### Utiliser Docling en Python

```
from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("mon-document.pdf")

# Exporter en Markdown structuré
print(result.document.export_to_markdown())
```

#### Formats pris en charge

En entrée : PDF (natif et scanné avec OCR), DOCX, XLSX, PPTX, HTML, AsciiDoc, Markdown, images. En sortie : Markdown, HTML, JSON ou la représentation interne `DoclingDocument`.

### Aller plus loin : OCR et qualité de structure

Pour les PDF **scannés** (image, sans couche texte), Docling enchaîne sur un moteur d'OCR (EasyOCR par défaut, Tesseract et d'autres au choix selon la configuration). Pour les PDF natifs au texte sélectionnable, il s'appuie sur la couche texte existante — plus rapide et plus fidèle. C'est pourquoi **la qualité de sortie dépend d'abord du document d'entrée** : un PDF natif donne presque toujours un meilleur résultat qu'un scan de mauvaise résolution.

### Points de vigilance

Docling est une brique saine : aucun appel réseau pendant la conversion, le document reste sur la machine. Les vrais points concernent la *fidélité* de la sortie, pas une fuite de données.

| Point d'attention | Niveau | Ce qu'il faut savoir |
| --- | --- | --- |
| Tableaux et mises en page complexes | 🟡 à relire | TableFormer reconstruit très bien les tableaux courants, mais un tableau imbriqué, fusionné ou multi-pages peut être mal segmenté. Avant d'injecter ces passages dans un RAG, vérifiez-les : une cellule mal placée fausse le *retrieval* en aval. |
| PDF scannés et OCR | 🟡 selon le scan | Sur un scan basse résolution ou manuscrit, l'OCR produit une transcription dégradée. Privilégiez les PDF natifs (texte sélectionnable) quand ils existent, et contrôlez la sortie des scans. |
| Téléchargement initial des modèles | 🟢 à anticiper | La première conversion télécharge les modèles (layout, table, OCR). En environnement **hors-ligne**, pré-téléchargez-les selon la documentation officielle avant le premier run. |
| Licence du logiciel | 🟢 MIT | Le code Docling est sous licence **MIT** (permissive). Les modèles téléchargés ont chacun leur propre licence : à vérifier projet par projet pour un usage commercial. |

### Sécurité

- **Installez depuis PyPI ou le dépôt officiel.** Méfiez-vous des paquets homonymes sur des index tiers. Le dépôt de référence est l'organisation `docling-project` sur GitHub.
- **Anticipez le mode hors-ligne.** Les modèles se téléchargent à la première utilisation ; sur un poste isolé, pré-téléchargez-les en suivant la documentation.
- **Tenez Docling à jour** pour les corrections de bugs et de sécurité, et pour profiter des améliorations de reconnaissance de structure.

### Aller plus loin

- [AnythingLLM](https://www.osfria.fr/anythingllm.html) — interroger les documents convertis avec une IA locale.
- [Paperless-ngx](https://www.osfria.fr/paperless-ngx.html) — archiver et retrouver vos documents avec OCR intégré.
- [Khoj](https://www.osfria.fr/khoj.html) — indexer notes et fichiers locaux, avec recherche web.
- [OSIALab](https://www.osfria.fr/osialab.html) — vue d'ensemble de tous les outils.

### Sources

- Code source & licence (**MIT**) : [github.com/docling-project/docling](https://github.com/docling-project/docling)
- Documentation officielle : [docling-project.github.io/docling](https://docling-project.github.io/docling/)
- Package PyPI : **pypi.org/project/docling**
