Docling, l’outil d’IBM, transforme vos PDF en données exploitables sans passer par le cloud. Découvrez comment extraire tables, images et textes localement, avec une précision dignes des solutions payantes.
UN OUTIL QUI TRAVAILLE SANS INTERNET
Imaginez un parseur de PDF capable de lire les tables, les images scannées et même le texte caché dans les figures… mais qui ne nécessite pas d’envoyer vos fichiers sur un serveur distant. C’est exactement ce que propose Docling, un outil open source développé par IBM Research. Contrairement aux solutions classiques qui facturent à la page ou imposent un abonnement, Docling s’installe sur votre ordinateur et fonctionne hors ligne après un premier téléchargement des modèles.
Le premier appel à Docling télécharge les modèles de détection de mise en page et de TableFormer (un modèle d’IA spécialisé dans la reconnaissance des structures de tables) dans un cache local. Ensuite, chaque analyse se fait sans connexion internet. Résultat : vos données sensibles restent sous votre contrôle, sans risque de fuite ou de non-conformité.
CE QUE DOCLING VOUS DONNE EN SORTIE
Une fois votre PDF analysé par Docling, vous obtenez un DoclingDocument, un objet qui contient toutes les données structurées extraites. Voici ce que vous pouvez en tirer :
• doc.exporttomarkdown() : le document entier converti en markdown, un format lisible et exploitable par la plupart des Outils d’IA.
• doc.tables : une liste des tables détectées, chacune avec ses cellules et leur structure (lignes, colonnes, en-têtes).
• doc.pictures : une liste des images présentes dans le PDF, avec leurs coordonnées et un texte OCR optionnel si la page est scannée.
• doc.texts : une liste de tous les éléments textuels, classés par type (titres, paragraphes, formules, légendes).
Ces données sont organisées sous forme de DataFrames (des tableaux de données), ce qui les rend faciles à manipuler avec des outils comme Pandas. Par exemple, pour un contrat ou un article scientifique, vous obtiendrez une structure prête à être utilisée dans un système de RAG (Retrieval-Augmented Generation) sans avoir à réinventer la roue.
UNE FONCTION SIMPLE POUR ANALYSER VOS PDF
Pour utiliser Docling, il suffit de quelques lignes de code. Voici comment faire :
from docling.document_converter import DocumentConverter
converter = DocumentConverter() # Le modèle n'est pas chargé immédiatement
result = converter.convert("data/paper/1706.03762v7.pdf")
doc = result.document # Un DoclingDocument
# Exemple d'export en markdown
doc.exporttomarkdown() # Retourne le document complet au format markdown
# Accès aux tables, images et textes
doc.tables # Liste des tables avec leurs cellules
doc.pictures # Liste des images avec leurs coordonnées
doc.texts # Liste des éléments textuels classés
Le DocumentConverter est conçu pour être paresseux : il ne charge les modèles que lors du premier appel. Ensuite, chaque analyse est rapide et ne nécessite pas de recharger les poids du modèle.
UNE STRUCTURE DE DONNÉES UNIFIÉE POUR TOUS LES OUTILS
Docling n’est pas le seul outil capable d’extraire des données d’un PDF. Pour faciliter l’intégration dans des systèmes existants, IBM a conçu une fonction parsepdfdocling qui retourne un dictionnaire de DataFrames, exactement comme les autres parseurs du marché (comme PyMuPDF ou Azure Layout). Voici ce que contient ce dictionnaire :
out = parsepdfdocling("data/contracts/MyContract.pdf")
out["line_df"] # Éléments textuels + cellules de tables + cases à cocher
out["page_df"] # Une ligne par page du document
out["image_df"] # Images avec texte OCR et classification
out["toc_df"] # Table des matières reconstruite à partir des titres
out["object_registry"] # Légendes détectées (figures, tables)
out["crossrefdf"] # Mentions dans le texte (par expressions régulières)
out["span_df"] # Vide (pas de typographie fine comme gras ou italique)
out["parsing_summary"] # Résumé global du document sous forme de dictionnaire
Chaque DataFrame est structuré de la même manière que ceux produits par d’autres outils, ce qui permet aux systèmes en aval (comme un RAG) de fonctionner sans savoir quel parseur a été utilisé. Vous pouvez donc passer de PyMuPDF à Docling sans modifier le reste de votre pipeline.
COMMENT DOCLING EXTRAIT LES TABLES EN MARKDOWN
Les tables sont un casse-tête classique dans les PDF. Docling utilise TableFormer, un modèle d’IA développé par IBM qui détecte la structure des tables (lignes, colonnes, en-têtes) sans avoir besoin d’expressions régulières. Voici comment il procède :
1. Il identifie d’abord les régions de la page (texte, images, tables).
2. Pour chaque table détectée, il applique TableFormer pour déterminer la grille de cellules.
3. Il extrait le texte de chaque cellule et le formate en markdown, avec des séparateurs pour les en-têtes.
Voici un exemple de code qui transforme une table en lignes markdown :
def tabletomarkdown_rows(table):
nrows, ncols = table.data.numrows, table.data.numcols
grid = [[""] * ncols for in range(n_rows)]
header = set()
for cell in table.data.table_cells: # Les cellules trouvées par TableFormer
row, col = cell.startrowoffsetidx, cell.startcoloffsetidx
grid[row][col] = cell.text.strip()
if cell.column_header:
header.add(row)
h = min(header) if header else 0
rows = ["| " + " | ".join(grid[h]) + " |", # Ligne d'en-tête
"| " + " | ".join(["---"] * n_cols) + " |"] # Séparateur
rows += ["| " + " | ".join(grid[r]) + " |" # Lignes de données
for r in range(n_rows) if r .= h]
return rows # Une ligne markdown par ligne source
Cette méthode permet d’intégrer les tables directement dans le line_df, comme n’importe quel autre contenu textuel. Le résultat est une structure unifiée où les lignes de texte et les lignes de tables se ressemblent, ce qui simplifie le traitement en aval.
CE QUE DOCLING FAIT (ET CE QU’IL NE FAIT PAS)
Docling est souvent présenté comme un outil d’OCR (reconnaissance optique de caractères), mais c’est une erreur. L’OCR n’est qu’une étape optionnelle dans son pipeline. Voici ce que fait réellement Docling :
• Détection de mise en page : il identifie les régions de la page (titres, paragraphes, tables, images, formules).
• TableFormer : il détecte la structure des tables (lignes, colonnes, en-têtes) grâce à un modèle d’IA.
• OCR : uniquement si la page est scannée et ne contient pas de couche de texte native. Dans ce cas, il utilise un moteur d’OCR (comme EasyOCR, PaddleOCR ou Tesseract) pour extraire le texte des pixels.
• Ordre de lecture : il reconstitue l’ordre de lecture logique du document, même si le PDF est mal structuré.
Pour un PDF born-digital (créé numériquement, comme un article scientifique), l’étape d’OCR est totalement ignorée. Le texte des cellules de table provient directement de la couche de texte native du PDF. Seuls les PDF scannés nécessitent un traitement OCR.
La qualité des tables dépend principalement du mode de TableFormer (rapide ou précis), et non du moteur d’OCR utilisé. Vous pouvez donc choisir votre moteur d’OCR en fonction de vos besoins, sans impacter la précision des tables.
UN EXEMPLE CONCRET : L’ARTICLE ATTENTION IS ALL YOU NEED
Pour illustrer les capacités de Docling, prenons l’article Attention Is All You Need (Vaswani et al., 2017), un papier de référence en IA. Voici ce que Docling a extrait :
• 15 pages, born-digital (pas de scan).
• 4 tables réelles.
• 6 figures.
• 5 équations en display.
• Aucun signet natif (les outils classiques comme PyMuPDF échouent sur la structure des sections).
Résultat : Docling a extrait 560 lignes de texte une fois les tables intégrées, contre seulement 556 lignes sans elles. Les 4 lignes supplémentaires correspondent aux séparateurs des tables en markdown.
Pour les images, Docling a récupéré le texte contenu dans les figures (comme les légendes ou les annotations) grâce à une combinaison de détection de mise en page et d’OCR. Par exemple, les diagrammes d’architecture de la page 3 et les schémas d’attention des pages 4 ont vu leurs labels extraits et rendus recherchables.
LA CLASSIFICATION DES IMAGES : UNE FONCTION UNIQUE À DOCLING
Contrairement à d’autres outils comme Azure Layout ou PyMuPDF, Docling propose une fonction de classification des images. Il peut identifier le type de figure (graphique, logo, schéma, etc.) et ajouter cette information dans le DataFrame image_df.
Cette classification est optionnelle : si vous ne l’activez pas, la colonne classification reste vide. Mais si vous l’utilisez, vous obtenez une information supplémentaire qui peut être utile pour filtrer ou organiser vos documents. Par exemple, vous pourrez facilement distinguer les graphiques des schémas techniques dans un rapport scientifique.
LA TABLE DES MATIÈRES : UNE STRUCTURE RÉCONSTITUÉE MÊME SANS SIGNETS
Un problème courant avec les PDF est l’absence de table des matières native. C’est le cas pour la plupart des documents Word exportés en PDF, des scans, ou des documents créés sans hyperliens (comme les articles scientifiques en LaTeX sans l’option hyperref).
Docling résout ce problème en reconstituant la table des matières à partir des titres détectés dans le document. Il attribue un niveau à chaque titre (par exemple, niveau 1 pour les sections principales, niveau 2 pour les sous-sections) et génère un DataFrame toc_df avec les colonnes suivantes :
• start_page : la page où commence la section.
• end_page : la page où se termine la section.
• start_y : la position verticale du titre dans la page.
• breadcrumb : le chemin hiérarchique (par exemple, "Introduction > Méthode").
Sur l’article Attention Is All You Need, Docling a détecté 28 titres, contre 0 pour PyMuPDF. Même si la hiérarchie n’est pas toujours parfaite (Docling a parfois attribué le même niveau à tous les titres), la table des matières générée est utilisable et bien plus riche que ce que proposent les outils classiques.
LES LÉGENDES : UNE DÉTECTION PLUS PRÉCISE QUE LES EXPRESSIONS RÉGULIÈRES
Les outils classiques comme PyMuPDF détectent les légendes en utilisant des expressions régulières qui cherchent des mots comme "Figure" ou "Table" au début d’une ligne. Cette méthode est fragile : elle rate les légendes qui ne suivent pas ce format (comme "Fig. 2" ou "Tableau 1") et génère des faux positifs si une phrase commence par "Figure 2 montre…".
Docling, lui, utilise la détection de mise en page pour identifier les blocs de texte qui correspondent à des légendes. Il ajoute un label caption à ces blocs, ce qui permet de les récupérer directement sans avoir besoin d’expressions régulières. Le résultat est une détection plus précise et plus complète des légendes dans le document.
Sur l’article Attention Is All You Need, Docling a détecté les 9 légendes (de la Figure 1 à la Figure 5 et de la Table 1 à la Table 4), contre 0 pour PyMuPDF.
LE RÉSUMÉ GLOBAL : UN OUTIL POUR ORIENTER VOTRE TRAITEMENT
À la fin de l’analyse, Docling génère un dictionnaire parsing_summary qui contient trois informations clés :
• ntablesdetected : le nombre de tables détectées dans le document.
• n_formulas : le nombre d’équations détectées.
• n_pictures : le nombre d’images détectées.
Ces informations permettent d’adapter votre traitement en aval. Par exemple :
• Un document avec 18 tables détectées est probablement un contrat où la structure des tables est importante.
• Un document avec des dizaines d’équations est un article scientifique lourd en mathématiques, pour lequel vous pourrez activer des étapes spécifiques (comme une extraction dédiée des équations).
• Un document sans image (n_pictures = 0) est un texte pur : inutile de scanner les figures pour en extraire du texte.
Ces trois compteurs sont essentiels pour automatiser le traitement des documents et éviter de perdre du temps sur des étapes inutiles.
DEUX TABLEAUX QUI RESTENT IDENTIQUES : PAGEDF ET CROSSREF_DF
Certains DataFrames produits par Docling sont construits à partir du line_df et ne dépendent pas du parseur utilisé. C’est le cas de :
• page_df : une ligne par page du document, avec des informations comme le nombre de lignes de texte ou le nombre d’images.
• crossrefdf : une liste des mentions dans le texte (par exemple, "voir la Figure 3" ou "comme indiqué dans le Tableau 2").
Ces deux tableaux sont construits de la même manière que par PyMuPDF ou Azure Layout, ce qui garantit une compatibilité totale avec les systèmes existants. Vous pouvez donc utiliser Docling pour certaines pages et PyMuPDF pour d’autres, sans que cela impacte le reste de votre pipeline.
SPAN_DF : UNE COLONNE VIDE, MAIS UNE FONCTION UTILE
Le DataFrame span_df est vide sous Docling, tout comme sous Azure Layout. Cela s’explique par le fait que le modèle de mise en page de Docling ne détecte pas la typographie fine (comme le gras ou l’italique au niveau des mots).
Si vous avez besoin de cette information pour détecter des titres ou mettre en évidence des termes importants, vous devrez utiliser un parseur comme PyMuPDF, qui expose cette fonctionnalité. Docling et PyMuPDF sont donc complémentaires : vous pouvez utiliser Docling pour l’extraction globale et PyMuPDF pour les détails de typographie.
LA COLONNE PARSING_METHOD : UNE TRACE POUR VOTRE SYSTÈME
Chaque DataFrame produit par Docling contient une colonne parsing_method qui vaut "docling". Cette colonne permet de savoir quel parseur a été utilisé pour chaque ligne de données. Elle est essentielle pour les systèmes adaptatifs qui choisissent dynamiquement le parseur en fonction des besoins du document.
Par exemple, dans un système de RAG avancé, vous pourrez utiliser PyMuPDF par défaut pour sa rapidité, puis basculer sur Docling pour les pages qui contiennent des tables complexes ou des images scannées. La colonne parsing_method vous permettra de suivre quelle partie du document a été traitée par quel outil.
UN SYSTÈME ADAPTATIF : CHOISIR LE BON OUTIL AU BON MOMENT
Docling n’est pas toujours le meilleur choix. Voici comment l’intégrer dans un système adaptatif :
• Par défaut, utilisez PyMuPDF pour sa rapidité et son absence de coût.
• Si PyMuPDF échoue (par exemple, s’il ne détecte pas de structure de table ou si la qualité de l’OCR est mauvaise), basculez sur Docling.
• Si le document est trop sensible pour quitter votre machine, Docling est la seule option viable.
Les signaux qui déclenchent une réanalyse avec Docling sont les mêmes que ceux utilisés pour Azure Layout :
• Une région de table détectée mais sans structure de lignes.
• Une page riche en images mais pauvre en texte.
• Une couche OCR de mauvaise qualité.
• Un document sans table des matières native, où la génération a besoin du contexte des sections.
Ces signaux sont gérés par un dispatcher qui décide quel parseur utiliser pour chaque page. La colonne parsing_method permet de tracer ces décisions et de garantir la cohérence du traitement.
LES COÛTS : TEMPS DE CALCUL VS FACTURE CLOUD
Docling n’est pas gratuit à utiliser, mais son coût est très différent de celui des solutions cloud :
Latence : Sur un CPU, l’analyse d’une page prend entre 1 et 5 secondes, selon la complexité de la page. L’article Attention Is All You Need (15 pages) a été analysé en moins de 2 minutes sur un ordinateur portable. Avec un GPU, le temps est divisé par 2 ou 3. PyMuPDF, lui, analyse le même document en moins d’une seconde. La règle est donc simple : utilisez PyMuPDF par défaut, et basculez sur Docling uniquement pour les pages qui posent problème.
Configuration : Le premier appel à Docling télécharge les modèles de mise en page et de TableFormer (plusieurs centaines de Mo) dans un cache local. L’installation de Docling nécessite aussi PyTorch, un framework lourd. Prévoyez de l’espace disque et une connexion internet pour le téléchargement initial. Ensuite, tout se fait hors ligne.
Calcul local vs facture cloud : Il n’y a pas de facture par page avec Docling. Le coût est celui de votre machine. Pour traiter 10 millions de pages par an sur des données confidentielles, posséder votre propre infrastructure est généralement moins cher que de payer une facture cloud, et c’est la seule option si vos données ne peuvent pas quitter votre réseau.
LES LIMITES DE DOCLING : QUAND LES AUTRES OUTILS PRENNENT LE RELAIS
Docling n’est pas parfait. Voici ce qu’il ne fait pas (ou fait moins bien) que d’autres outils :
• Typographie fine : il ne détecte pas le gras, l’italique ou les couleurs au niveau des mots. Pour cela, PyMuPDF reste indispensable.
• Performance pure : PyMuPDF est bien plus rapide pour les PDF born-digital simples.
• Gestion des langues rares : les modèles de Docling sont optimisés pour l’anglais et quelques autres langues majeures. Pour des documents en langues rares, un outil comme Azure Layout peut être plus adapté.
Docling et PyMuPDF sont donc complémentaires. Vous pouvez utiliser Docling pour l’extraction globale et PyMuPDF pour les détails de typographie ou les documents simples.
LA DOCUMENTATION : OÙ TROUVER TOUTES LES INFORMATIONS
Docling est documenté dans un rapport technique d’IBM Research (Auer et al., 2024). Ce rapport décrit en détail :
• Le pipeline de détection de mise en page.
• Le modèle TableFormer pour l’extraction des tables.
• L’étape de reconstitution de l’ordre de lecture.
• L’architecture globale du système.
La détection des cellules de table par TableFormer s’inspire d’autres travaux de recherche, comme ceux de Smock et al. (2022) et du jeu de données PubTables-1M.
Pour une comparaison détaillée avec Azure Layout, consultez l’Article 5bis de la série Enterprise Document Intelligence, qui décrit comment extraire des tables depuis un service cloud payant avec la même structure de données.
POURQUOI CHOISIR DOCLING ?
La question n’est pas "quel parseur est le meilleur", mais "quel parseur convient à mon cas d’usage". Voici les critères qui font de Docling un choix pertinent :
• Confidentialité : vos données ne quittent jamais votre machine.
• Coût : pas de facture par page, uniquement du calcul local.
• Précision : détection des tables, des images, des légendes et des titres, même dans des PDF mal structurés.
• Flexibilité : compatible avec les autres outils grâce à une structure de données unifiée.
• Open source : licence MIT, ce qui signifie que vous pouvez l’utiliser, le modifier et le redistribuer librement.
Si vous travaillez avec des documents sensibles ou que vous avez besoin d’une extraction riche sans dépendre du cloud, Docling est une solution idéale. En revanche, pour des documents simples ou si la rapidité est cruciale, PyMuPDF reste un choix plus adapté.
COMMENT DÉMARRER AVEC DOCLING ?
Voici les étapes pour installer et utiliser Docling :
1. Installez Docling via pip :
pip install docling
Cette commande installe Docling ainsi que ses dépendances, dont PyTorch.
2. Téléchargez les modèles (uniquement au premier appel) :
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
Le premier appel à converter.convert() télécharge automatiquement les modèles dans un cache local.
3. Analysez votre PDF :
result = converter.convert("votre_fichier.pdf")
doc = result.document
Vous obtenez un DoclingDocument prêt à être exploité.
4. Exportez les données dans le format de votre choix :
• En markdown : doc.exporttomarkdown()
• En DataFrames : utilisez les fonctions comme parsepdfdocling pour obtenir une structure unifiée.
5. Intégrez les résultats dans votre pipeline : les DataFrames produits par Docling sont compatibles avec la plupart des outils d’IA, comme les systèmes de RAG.
EN RÉSUMÉ : UN OUTIL QUI CHANGE LA DONNE POUR LES DOCUMENTS SENSIBLES
Docling est une solution révolutionnaire pour extraire des données de PDF sans dépendre du cloud. Il combine la précision des outils payants avec la flexibilité et la confidentialité des solutions locales. Voici ce qu’il apporte de nouveau :
• Une extraction riche : tables, images, légendes, titres, même dans des PDF mal structurés.
• Une confidentialité totale : vos données ne quittent jamais votre machine.
• Un coût maîtrisé : pas de facture par page, uniquement du calcul local.
• Une compatibilité totale : les DataFrames produits sont identiques à ceux des autres parseurs, ce qui facilite l’intégration dans des systèmes existants.
Si vous travaillez avec des documents sensibles ou que vous avez besoin d’une extraction précise sans passer par le cloud, Docling est l’outil qu’il vous faut. Pour les documents simples ou si la rapidité est cruciale, PyMuPDF reste un choix plus adapté. Mais dans tous les cas, Docling offre une alternative puissante et respectueuse de la confidentialité.
ET DEMAIN ?
Docling est encore en développement, et ses capacités évoluent rapidement. Les prochaines mises à jour pourraient inclure :
• Une meilleure détection de la typographie fine (gras, italique).
• Un support amélioré pour les langues rares.
• Une intégration plus poussée avec les outils d’IA pour une extraction encore plus précise.
• Une optimisation des modèles pour réduire la taille du téléchargement initial et accélérer l’analyse.
Quoi qu’il en soit, Docling représente déjà une avancée majeure pour quiconque a besoin d’extraire des données de PDF sans sacrifier la confidentialité ou le budget. C’est un outil à suivre de près.
VERDICT : UN OUTIL À ADOPTER SANS HÉSITER… SI VOUS AVEZ LES RESSOURCES
Docling est un outil exceptionnel pour les entreprises ou les particuliers qui ont besoin d’extraire des données de PDF de manière précise et confidentielle. Ses points forts sont nombreux :
✅ Extraction riche (tables, images, légendes, titres).
✅ Fonctionnement 100% local après installation.
✅ Coût maîtrisé (calcul local vs facture cloud).
✅ Compatibilité avec les autres outils grâce à une structure de données unifiée.
✅ Licence open source (MIT).
Cependant, il a aussi des limites :
❌ Latence plus élevée que PyMuPDF sur les PDF simples.
❌ Nécessite un téléchargement initial des modèles (plusieurs centaines de Mo).
❌ Nécessite une machine suffisamment puissante pour un traitement fluide (un GPU est un plus).
Si vous pouvez surmonter ces contraintes, Docling est un outil qui mérite amplement d’être adopté. Sinon, PyMuPDF ou Azure Layout restent des alternatives viables, selon vos besoins.
- Towards Data Science
L'indépendance de CLODCO est votre garantie.
Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.
Soutenir CLODCO

