Aller au contenu
Cercle IA Tech · Documents Un site du réseau Cercle IA Tech

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 exige enable_remote_services = True et 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 :

  1. https://github.com/docling-project/docling
  2. https://docling-project.github.io/docling/getting_started/installation/
  3. https://docling-project.github.io/docling/reference/cli/
  4. https://docling-project.github.io/docling/usage/enrichments/
  5. https://docling-project.github.io/docling/concepts/chunking/

À lire aussi