Pipeline RAG PDF Docling : convertir n’importe quel document pour les LLMs

La majorité des données utiles en entreprise ne se trouve pas dans des bases de données proprement structurées. Elle vit dans des PDF de rapports, des présentations PowerPoint, des emails archivés, des fichiers Excel. Or, quand vous construisez un pipeline RAG (Retrieval-Augmented Generation), ce sont précisément ces documents que vous devez ingérer. Le problème, en effet, c’est que les parsers classiques comme PyPDF2 ou pdfminer aplatissent tout. Un tableau avec dix colonnes devient une ligne de texte illisible. L’ordre de lecture est cassé, les footnotes se mélangent au corps du texte, les formules disparaissent. Ainsi, vous récupérez du bruit – pas de la donnée. C’est pourquoi votre LLM produit des réponses inexactes : non pas parce que le modèle est mauvais, mais parce que les données en entrée ont été détruites avant d’atteindre le modèle.

Docling par IBM Research : présentation et positionnement

Docling est un outil open source développé par l’équipe AI for Knowledge d’IBM Research Zurich. Il est conçu pour transformer des documents complexes en données structurées, directement exploitables par les LLM et les systèmes de recherche vectorielle. Aujourd’hui hébergé sous la Linux Foundation AI & Data, Docling bénéficie d’une licence MIT et fonctionne entièrement en local – sans clé API, sans envoi de données vers un serveur externe. C’est un point critique pour les entreprises traitant des documents sensibles. Par ailleurs, contrairement à de nombreux outils d’extraction PDF, Docling ne se limite pas aux PDF : il supporte une dizaine de formats de fichiers différents, ce qui en fait un outil central dans n’importe quel pipeline de traitement documentaire.

Formats et capacités d’extraction de Docling pour vos pipelines RAG

Formats de documents supportés par Docling

  • PDF – avec compréhension avancée de la mise en page, de l’ordre de lecture et des tableaux
  • DOCX, PPTX, XLSX – documents Microsoft Office complets
  • HTML et EPUB – pages web et livres numériques
  • Emails (.eml, .msg) – parsing de boîtes mail archivées
  • Images (PNG, TIFF, JPEG) – avec OCR intégré pour les documents scannés
  • Audio (WAV, MP3) – transcription automatique via modèles ASR
  • XBRL – rapports financiers structurés
  • LaTeX – documents scientifiques et académiques

Capacités d’extraction avancées pour un pipeline RAG fiable

  • Tableaux : extraits en lignes et colonnes exploitables, non aplatis en texte
  • Formules mathématiques : préservées avec leur structure
  • Graphiques : convertis automatiquement en tableaux de données ou descriptions textuelles
  • OCR : pour les PDFs scannés et les images non sélectionnables
  • Ordre de lecture : préservé même sur des mises en page multi-colonnes complexes

Intégrations natives de Docling avec les frameworks IA

Docling s’intègre directement avec les principaux frameworks d’IA : LangChain, LlamaIndex, CrewAI et Haystack. En outre, il dispose d’un serveur MCP intégré, ce qui permet à n’importe quel agent IA de l’appeler directement comme outil externe.

Installation de Docling en Python

Docling s’installe via pip. Prérequis : Python 3.10 ou supérieur (le support de Python 3.9 a été abandonné depuis la v2.70.0).

pip install docling

La première exécution télécharge les modèles ML nécessaires, ce qui prend quelques minutes selon votre connexion. Les exécutions suivantes sont quasi-instantanées, car les modèles sont mis en cache localement. Notons que Docling fonctionne sur macOS, Linux et Windows, en architecture x86_64 et arm64 – ce qui le rend compatible avec la grande majorité des environnements de développement et de production. C’est notamment utile si vous intégrez Docling dans un pipeline d’automatisation IA déployé sur des infrastructures variées.

Exemple Python : convertir un PDF avec Docling en Markdown ou JSON

Voici un exemple minimal fonctionnel – trois lignes suffisent pour convertir un document et obtenir une sortie propre, prête à intégrer dans votre pipeline RAG :

from docling.document_converter import DocumentConverter

# Fonctionne avec un chemin local ou une URL distante
source = "https://arxiv.org/pdf/2408.09869"

converter = DocumentConverter()
result = converter.convert(source)

# Export en Markdown structuré - prêt pour le chunking RAG
markdown = result.document.export_to_markdown()
print(markdown[:1000])

# Export en JSON avec métadonnées complètes
json_doc = result.document.export_to_dict()
# → titres, tableaux, figures, ordre de lecture, positions sur la page

Pour convertir un fichier local, remplacez simplement la source :

source = "/chemin/vers/votre/document.pdf"
converter = DocumentConverter()
result = converter.convert(source)
markdown = result.document.export_to_markdown()

Ainsi, la sortie Markdown préserve la hiérarchie des titres (H1, H2, H3), les tableaux en syntaxe Markdown standard, les blocs de code, et l’ordre de lecture correct – même sur des mises en page à plusieurs colonnes. C’est précisément ce qui permet d’obtenir des chunks RAG cohérents et des réponses LLM plus précises.

Construire un pipeline RAG Python avec Docling et LangChain

L’usage le plus courant de Docling est l’alimentation d’un pipeline RAG. Voici comment l’intégrer avec LangChain et Chroma comme base vectorielle :

from docling.document_converter import DocumentConverter
from langchain.text_splitter import MarkdownTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings

# 1. Conversion du document PDF avec Docling
converter = DocumentConverter()
result = converter.convert("rapport_annuel.pdf")
markdown = result.document.export_to_markdown()

# 2. Découpage en chunks adaptés au pipeline RAG
splitter = MarkdownTextSplitter(chunk_size=512, chunk_overlap=64)
chunks = splitter.split_text(markdown)

# 3. Indexation dans la base vectorielle
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_texts(chunks, embeddings)

# 4. Recherche sémantique sur vos documents
query = "Quel est le chiffre d'affaires du Q3 ?"
docs = vectorstore.similarity_search(query, k=3)
for doc in docs:
    print(doc.page_content)

En effet, la qualité du chunking dépend directement de la qualité du parsing. Avec Docling, les tableaux restent des tableaux et les sections restent des sections – ce qui améliore significativement la précision de la recherche vectorielle et réduit les hallucinations du LLM en sortie. Ce type d’architecture est également compatible avec les workflows n8n que nous construisons chez nir pour automatiser l’ingestion documentaire en continu.

Cas d’usage concrets de Docling dans vos projets IA

Base de connaissances d’entreprise avec pipeline RAG et Docling

Vous disposez de centaines de PDF internes – manuels techniques, procédures, rapports. Docling les convertit en Markdown propre, que vous indexez ensuite dans un moteur de recherche vectorielle. Vos équipes peuvent alors interroger cette base en langage naturel via un LLM. C’est pourquoi ce cas d’usage est l’un des plus fréquents dans les projets de développement backend IA que nous réalisons.

Analyse automatisée de rapports financiers PDF

Les rapports XBRL et les PDF financiers contiennent des tableaux complexes que les parsers classiques détruisent. Docling extrait ces données tabulaires avec leur structure complète, prêtes pour une analyse automatisée ou une ingestion dans un pipeline de reporting.

Traitement d’emails archivés dans un pipeline RAG

Docling parse les fichiers .eml et .msg nativement. Cela permet d’intégrer des historiques d’emails directement dans un pipeline RAG ou un système de classification automatique – sans prétraitement supplémentaire.

Pipeline de fine-tuning LLM sur données propriétaires

Si vous souhaitez affiner un LLM sur vos données internes, Docling prépare vos documents en JSON structuré compatible avec les formats d’entraînement standards. C’est d’ailleurs l’usage original pour lequel il a été développé à IBM Research Zurich.

Conclusion : intégrer Docling dans vos projets d’automatisation IA

Docling résout un problème fondamental que tout développeur construisant des applications IA rencontre : la qualité des données en entrée détermine directement la qualité des réponses en sortie. Aucun LLM, aussi performant soit-il, ne peut compenser un contexte dégradé par un mauvais parser. Avec une licence MIT, une exécution entièrement locale et des intégrations natives avec LangChain, LlamaIndex, CrewAI et Haystack, Docling est aujourd’hui l’un des outils les plus solides de l’écosystème open source pour le traitement documentaire orienté IA. Chez nir, nous intégrons Docling dans nos pipelines d’automatisation IA pour les clients qui ont besoin de traiter de grandes bibliothèques documentaires. Si vous avez un projet similaire, contactez nir pour en discuter. Pour aller plus loin : consultez la documentation officielle de Docling et le dépôt GitHub du projet.