Documentation Technique Complète de Docling
- Docling est un moteur 100% gratuit et open-source (MIT) qui convertit les PDFs, DOCX, PPTX, XLSX, images et audio en Markdown, HTML et JSON structurés.
- Intègre l'analyse visuelle de mise en page, la restauration de l'ordre de lecture et le modèle TableFormer v2 pour les tableaux complexes.
- Supporte l'OCR multilingue via RapidOCR, Tesseract (tesserocr), EasyOCR et OcrMac.
- Fonctionne 100% en local sans télémétrie, supportant les réseaux isolés (Air-Gapped), l'API REST (docling-serve) et le serveur MCP (docling-mcp).
1. Aperçu et Architecture
Docling est un moteur open-source de conversion de documents créé par IBM Research et hébergé sous LF AI & Data. Contrairement aux extracteurs de texte basiques, Docling utilise des pipelines modulaires pour analyser la géométrie des pages, détecter les boîtes englobantes, reconstruire les tableaux avec cellules fusionnées et ordonner logiquement le texte pour les LLM et le RAG.
2. Installation et Configuration
Docling s'installe sur Python 3.9 à 3.14 (64-bit) sous Windows, macOS et Linux via pip ou uv :
2.1 Configuration Windows 10/11 et Outils C++
Sous Windows, Python 64-bit est requis. Lors de la compilation d'extensions C++ natives (comme tesserocr), Microsoft Visual C++ 14.0+ est nécessaire :
Alternative recommandée (sans compilateur C++) : Utilisez Astral uv pour installer directement des binaires précompilés :
3. Guide de Démarrage Rapide
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("https://arxiv.org/pdf/2408.09869")
print(result.document.export_to_markdown()[:500])
4. Modèle de Données DoclingDocument
L'objet principal DoclingDocument maintient une structure arborescente des titres, tableaux, blocs de code et figures avec leurs coordonnées exactes, exportable via result.document.export_to_json().
5. Pipelines de Traitement et Granite Docling VLM
5.1 Configuration de Granite Docling VLM
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import VlmPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption
vlm_options = VlmPipelineOptions()
vlm_options.vlm_model = "granite_docling"
converter = DocumentConverter(
format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=vlm_options)}
)
result = converter.convert("document.pdf")
6. Moteurs OCR et Optimisation
6.1 Désactiver l'OCR pour les PDF Numériques (10x plus rapide)
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = False # 10x plus rapide pour les PDF numériques
converter = DocumentConverter(
format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("rapport.pdf")
7. Extraction Multi-Format (Excel XLSX, PowerPoint PPTX, CAD & Audio)
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
excel_res = converter.convert("finance.xlsx")
print(excel_res.document.export_to_markdown())
8. Segmentation RAG avec `HybridChunker`
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker
converter = DocumentConverter()
result = converter.convert("article.pdf")
chunker = HybridChunker(max_tokens=512, merge_peers=True)
for chunk in chunker.chunk(result.document):
print(chunk.meta.headings, chunk.text[:80])
9. Accélération GPU et Traitement par Lots
from docling.datamodel.accelerator_options import AcceleratorDevice, AcceleratorOptions
from docling.datamodel.pipeline_options import ThreadedPdfPipelineOptions
accel = AcceleratorOptions(device=AcceleratorDevice.CUDA)
pipe_opts = ThreadedPdfPipelineOptions(accelerator_options=accel, page_batch_size=8)
10. Intégrations avec Frameworks (LangChain & LlamaIndex)
from langchain_docling import DoclingLoader
loader = DoclingLoader(file_path="rapport.pdf")
docs = loader.load()
11. Catalogue de Modèles VLM
| Modèle | Fournisseur | Usage Principal | Paramètre CLI |
|---|---|---|---|
| granite_docling | IBM Research | Extraction visuelle haute précision de PDF | --vlm-model granite_docling |
| smoldocling | Hugging Face / IBM | VLM léger et rapide sur CPU | --vlm-model smoldocling |
12. Serveur FastAPI (`docling-serve`) & Serveur MCP
12.1 Configuration MCP pour Claude Desktop
{
"mcpServers": {
"docling": {
"command": "uvx",
"args": ["--from=docling-mcp", "docling-mcp-server"]
}
}
}
13. Sécurité d'Entreprise et Déploiement Air-Gapped
export DOCLING_CACHE_DIR="/opt/docling_models"
docling-tools models download --all
export HF_HUB_OFFLINE=1
export DOCLING_CACHE_DIR="/opt/docling_models"
docling document.pdf --to md
14. Diagnostic et Résolution des Problèmes
| Erreur / Symptôme | Cause | Solution |
|---|---|---|
| cannot import name 'BoundingBox' | Migration du schéma dans Docling v2. | Importer depuis from docling_core.types.doc import BoundingBox. |
| RapidOCR : text detection result empty | Résolution de scan insuffisante. | Définir pipeline_options.images_scale = 2.0 pour augmenter le DPI. |
| Vérifier la version installée | Contrôle de version. | Exécuter docling --version dans le terminal. |
15. Référence Complète des Paramètres CLI
| Option / Argument | Type | Défaut | Description |
|---|---|---|---|
| --to | md, json, html, doctags | md | Format d'exportation cible du document. |
| --no-ocr | Booléen | - | Désactive l'OCR pour accélérer le traitement des PDF numériques. |
| --version | Flag | - | Affiche la version installée de Docling. |