Guide
Docling en Python : installer, convertir, régler l'OCR
Installer Docling, convertir un PDF en Markdown, choisir le moteur d'OCR et le mode des tableaux, découper avec HybridChunker : le tutoriel pas à pas.
Mis à jour le
Docling convertit un PDF (et une vingtaine d'autres formats) en Markdown, HTML ou JSON en gardant la mise en page, l'ordre de lecture et la structure des tableaux, et reconnaît le texte des pages scannées (reconnaissance optique de caractères, ou OCR). Il tourne en local, sous licence MIT. En trois commandes : pip install docling, puis docling fichier.pdf, puis ouvrez le .md produit. La suite de cette page détaille les réglages qui comptent pour une base documentaire d'entreprise, d'après la documentation lue le 15/11/2026.
Installer
- Python : 3.10 ou plus. Le dépôt indique que la prise en charge de Python 3.9 a été retirée à la version 2.70.0.
- Installation standard :
pip install docling. - Serveur sans carte graphique (Linux) : installez la version de PyTorch pour processeur seul.
pip install docling --extra-index-url https://download.pytorch.org/whl/cpu
Convertir un document en Python
L'exemple minimal du dépôt tient en quatre lignes. Adapté à un fichier local :
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("notice-technique.pdf")
print(result.document.export_to_markdown())
result.document est un DoclingDocument : vous pouvez l'exporter en Markdown pour l'indexation, ou en JSON (« sans perte », selon le dépôt) pour garder toute la structure.
Les options de la ligne de commande qui comptent
| Option | Valeurs | Défaut | À quoi ça sert |
|---|---|---|---|
--to |
md, json, html, text, chunks… |
Markdown | format de sortie, répétable |
--ocr / --no-ocr |
oui / non | oui | reconnaître le texte des images |
--ocr-engine |
auto, easyocr, rapidocr, tesseract, tesserocr, ocrmac… |
auto |
choisir le moteur |
--ocr-lang |
liste séparée par des virgules | vide (le moteur choisit) | langue des documents |
--table-mode |
fast, accurate |
accurate |
modèle de structure des tableaux |
--image-export-mode |
placeholder, embedded, referenced |
embedded |
que faire des images |
--output |
dossier | . |
où écrire les résultats |
L'option --force-ocr est marquée obsolète : la documentation renvoie vers --ocr-mode full_page. Exemple pour un lot de documents français scannés, avec Tesseract :
docling --ocr-engine tesseract --ocr-lang fra --to md --to json --output sortie/ archive-2019.pdf
Tesseract doit alors être installé sur la machine (voir Tesseract et OCRmyPDF).
Choisir le moteur d'OCR
La documentation d'installation liste les moteurs pris en charge :
| Moteur | Installation | Remarque |
|---|---|---|
| RapidOCR | inclus dans docling |
disponible d'emblée |
| EasyOCR | pip install easyocr |
|
| Tesseract | installation système, plus la liaison Tesserocr | jamais choisi par la sélection automatique |
| Tesseract CLI | programme tesseract seul |
|
| OcrMac | dépendance système | macOS |
| Nemotron OCR | extra dédié | Linux x86_64, Python 3.12, CUDA 13.x seulement |
En Python, le moteur se règle par pipeline_options.ocr_options = TesseractOcrOptions().
Images et schémas
Les enrichissements sont désactivés par défaut, car ils lancent des modèles en plus et allongent le traitement. Deux d'entre eux servent directement une base documentaire :
- Classification des images (
--enrich-picture-classes) : étiquette graphiques, organigrammes, logos, signatures. - Description des images (
--enrich-picture-description) : légende chaque image avec un modèle de vision, local (Granite Vision, SmolVLM) ou distant. L'option distante exigeenable_remote_services = Trueet envoie en général les images au fournisseur.
Le détail et le choix entre description, OCR et lecture directe par le modèle sont sur la page Images et schémas.
Découper pour l'indexation
Docling fournit deux découpeurs. HierarchicalChunker crée un morceau par élément détecté du document. HybridChunker part de ce découpage et y ajoute des ajustements selon le nombre de jetons : il coupe les morceaux trop longs et fusionne les petits voisins qui partagent les mêmes titres. La méthode contextualize() renvoie le texte du morceau enrichi de ses métadonnées (titres, légendes), prêt pour le calcul d'un vecteur.
from docling.chunking import HybridChunker
chunker = HybridChunker()
for chunk in chunker.chunk(dl_doc=result.document):
texte = chunker.contextualize(chunk)
Les principes de taille et de recouvrement sont traités sur le site consacré au RAG (génération augmentée par récupération).
Intégrations
Le dépôt annonce des intégrations avec LangChain, LlamaIndex, CrewAI et Haystack, un serveur MCP (protocole qui permet à un assistant d'appeler des outils) et un serveur d'interface de programmation (API), docling-serve. Pour une chaîne d'entreprise, ce dernier permet de séparer la conversion, gourmande en calcul, du reste de l'application.
Exemple illustratif
Prenons un service qualité qui veut indexer deux cents procédures en PDF, dont une partie scannée. Un premier passage en --table-mode accurate avec la sélection automatique de l'OCR, puis un contrôle à l'œil de dix fichiers, dira s'il faut passer à Tesseract en français pour les scans les plus anciens.
Questions fréquentes
Docling fonctionne-t-il sans carte graphique ?
Oui. La documentation d'installation donne même une commande pour installer la version de PyTorch réservée au processeur sous Linux : pip install docling --extra-index-url https://download.pytorch.org/whl/cpu.
Quel moteur d'OCR Docling utilise-t-il par défaut ?
La sélection est automatique. Le paquet docling inclut toujours RapidOCR, disponible d'emblée. La sélection automatique ne choisit jamais Tesseract : il faut le demander explicitement.
Sources
Pages consultées pour écrire cet article :