Avis sur Docling : ce que le convertisseur de documents en Markdown d’IBM fait réellement à vos PDF

Dernière mise à jour le July 17, 2026
Avis sur Docling : ce que le convertisseur de documents en Markdown d’IBM fait réellement à vos PDF
Résumé IA
Cet avis sur Docling présente le convertisseur de documents d’IBM comme une boîte à outils de traitement documentaire, et non comme un web scraper. L’article teste la conversion de PDF et de fichiers bureautiques, la reconstruction de la structure des tableaux, le comportement lié à l’OCR, la classification des pages peu denses et l’empreinte des modèles, ainsi que les différences entre lancement à froid et à chaud. Il met en avant les points forts de Docling pour l’extraction de documents structurés, notamment la récupération des tableaux, tout en restant transparent sur le poids des modèles et le coût du premier lancement. Il avertit aussi que les pages très peu chargées peuvent être mal classées sans contexte suffisant. Le résultat est un guide pratique pour les équipes qui doivent déterminer si la pipeline plus lourde de Docling, basée sur les modèles, vaut le coup pour les PDF et les archives documentaires.

Docling est souvent classé à tort dans la même catégorie que les web scrapers, alors que ce n’en est pas un. C’est une boîte à outils de conversion de documents signée IBM Research — aujourd’hui projet de la LF AI & Data Foundation — qui prend les fichiers que tu as déjà (PDF, DOCX, PPTX, XLSX, HTML, images) et les transforme en Markdown ou en JSON. Son slogan est d’ailleurs littéral : « Get your documents ready for gen AI. »

Ce test est donc une évaluation pratique d’un convertisseur, pas d’un crawler. Tout ce qui suit a été mesuré sur une machine uniquement CPU (macOS arm64, Python 3.14.2, Docling 2.111.0), avec des scores issus de scripts et des échecs comptés comme des échecs. Le dépôt est énorme et évolue sans arrêt — 63 069 étoiles, 4 449 forks, et un push le jour même où j’ai récupéré les métadonnées — donc il faut voir ici les chiffres de version ou de bugs comme un instantané, pas comme une constante.

Ce qu’est vraiment Docling, et ce qu’il n’est pas

Le cœur de Docling, c’est DoclingDocument : on analyse un fichier pour le convertir dans cette structure, puis on exporte en Markdown, HTML, DocTags ou en JSON sans perte. Le code est sous licence MIT (les licences des modèles varient selon les composants), le projet est né chez IBM Research Zurich, et au moment où j’écris la dernière version publiée est la v2.112.0, sortie deux jours avant ce test.

Docling converts documents to Markdown or JSON and is not a crawler

Son gros point fort, c’est le traitement des PDF et des images. Et on ne parle pas ici d’un simple parsing de texte brut : toute la pile repose sur des modèles d’apprentissage automatique — un modèle de mise en page RT-DETR, le modèle de structure de tableau TableFormer, un modèle vision-langage optionnel et RapidOCR pour les scans. Ces modèles reconstruisent la mise en page, l’ordre de lecture et la structure des tableaux. C’est précisément cette partie qu’il faut évaluer — et c’est aussi celle qu’un test limité au HTML ne verra jamais.

Une distinction évite une semaine de confusion : Docling ne va rien chercher. Il ne rend pas le JavaScript, ne contourne pas les protections anti-bot et ne fait pas de crawl. Tu fournis le fichier, il en extrait le sens. Le crawl relève d’un autre outil, ce qui devient important quand on se demande si Docling remplace Firecrawl (non — ils se complètent, et j’explique pourquoi plus loin).

Le premier lancement que personne ne t’annonce

pip install docling s’installe sans problème sur Python 3.14.2. Puis on regarde l’environnement virtuel, et il affiche 1,3 Go. Docling embarque toute la pile ML comme dépendances obligatoires, même si tu ne convertis qu’un fichier HTML :

Docling model footprint: 506 MiB, not the symlink double-counted 1060.2 MB

DépendanceTaille sur disque (MiB, du)
torch (2.13.0)536
opencv (cv2)119
transformers (5.8.1)101
scipy99
sympy76
pandas72
rapidocr (+ modèles intégrés)75.6
docling_parse30

Et ça, c’est avant même de convertir un seul PDF. La première conversion d’un PDF, c’est là que la vraie friction apparaît, parce que c’est à ce moment-là que les modèles se téléchargent. Sur un cache HuggingFace vierge et isolé, la première conversion PDF a pris environ 224 secondes — et presque tout ce temps correspond au téléchargement, pas au calcul. Les modèles de mise en page et TableFormer occupent environ 506 MiB sur disque (342 MiB pour TableFormer + 164 MiB pour la mise en page, vérifiés avec du), et RapidOCR récupère environ 40 Mo de poids PP-OCRv4 dans site-packages. La deuxième conversion du même fichier ? 0,55 seconde. Les modèles sont mis en cache ; on paie le péage une seule fois.

Docling cold versus warm conversion: first run about 224 seconds, warm run 0.55 seconds

Un chiffre à ignorer : le script de démarrage à froid affiche model_download_mb à 1060.2. Ne le cite pas comme empreinte réelle. Il vient d’un os.walk qui suit les liens symboliques, alors que le cache HuggingFace stocke chaque fichier de modèle une seule fois dans blobs/ puis le réexpose via des liens symboliques dans snapshots/ — le parcours compte donc les 14 fichiers modèle deux fois. La valeur cohérente avec du, en dédupliquant les symlinks, est d’environ 506 MiB (505,4 MiB pour les blobs seuls). Conclusion utile pour toute personne qui benchmarke Docling : il faut séparer les octets téléchargés et les octets réellement présents sur disque, parce que ce sont deux choses différentes.

Il y a un second piège qui touche ceux qui veulent mettre Docling en conteneur. Les poids se répartissent sur deux emplacements et deux rythmes. Les modèles de mise en page et TableFormer respectent HF_HOME et se téléchargent à la première conversion PDF. Les modèles de RapidOCR, eux, non : ils atterrissent dans …/site-packages/rapidocr/models/, en contournant complètement ta configuration de cache. Si tu prépares une image Docker à l’avance ou si tu travailles en environnement isolé, il faut gérer les deux caches ; aucun réglage de HF_HOME ne couvrira le second.

Cela dit, soyons justes. Depuis les premières versions, le projet propose docling-slim — un cœur d’environ 50 Mo qui permet d’installer pip install docling-slim[format-html] pour le HTML sans embarquer torch. Les 1,3 Go du package par défaut docling sont donc réels, mais ils ne sont plus imposés dans tous les cas. J’ai testé le package standard parce que c’est encore ce que renvoie pip install docling, mais le poids n’est pas un défaut ignoré : la solution modulaire existe, et elle est suivie dans l’issue #2393.

Lors de l’installation, j’ai aussi relevé un petit accroc à signaler : import docling; docling.__version__ lève AttributeError: module 'docling' has no attribute '__version__'. Le module n’expose tout simplement pas cette information. La méthode qui fonctionne est importlib.metadata.version("docling"), qui renvoie '2.111.0'. Ce n’est qu’une petite gêne DX, ouverte en amont depuis juillet 2026 sous l’issue #3733.

Fidélité des tableaux : là où TableFormer mérite sa place

Les tableaux sont précisément la raison pour laquelle on choisit Docling plutôt qu’un simple dump PDF-vers-texte. J’ai donc généré sept PDF de tableaux avec une vérité terrain lisible par machine, puis j’ai noté le résultat cellule par cellule. Deux métriques comptent, et ce n’est pas la même chose : le cell recall est la proportion de valeurs de référence présentes quelque part dans le tableau détecté ; le taux in-row est la proportion de valeurs placées dans la bonne ligne. Les confondre embellit l’outil, alors voici les deux :

Docling TableFormer table fidelity: 5 detected tables, cell recall 1.00, in-row 0.97

Tableau (stress test)DétectéCell recallTaux in-rowRemarque
T1 grille bordée simple (5×8), seule sur la pageNon0.0classé comme <!-- image -->, toutes les cellules perdues
T2 sans bordure (seulement une règle d’en-tête)Oui1.001.00parfait, grille exacte
T3 en-tête à 2 niveaux avec colspan fusionnéOui1.000.97toutes les valeurs sont retrouvées ; une valeur d’en-tête décale d’une ligne
T4 étiquette de ligne rowspan fusionnée, seule sur la pageNon0.0classé comme <!-- image -->
T5 en-tête colspan + sans bordureOui1.000.97toutes les valeurs sont retrouvées ; même décalage de ligne d’en-tête que T3
T6 données financières, colonne vide, alignée à droiteOui1.001.00la colonne vide est conservée, non décalée
T7 grille large à 12 colonnesOui1.001.00aucun décalage de colonne sur un tableau large

Sur les cinq tableaux détectés par Docling, toutes les valeurs de vérité terrain ont bien été retrouvées — cell recall de 1.00 partout. Sur trois de ces cinq tableaux, chaque valeur est aussi tombée dans la bonne ligne. Sur les deux cas à en-tête multiniveau (T3 et T5), une valeur d’en-tête glisse d’une ligne, ce qui fait descendre le taux in-row à 0.97 — les données sont bien là, mais l’affectation à la ligne vacille d’un cran sur un en-tête empilé.

Les cas structurellement difficiles ont mieux résisté que je ne l’aurais cru. L’en-tête colspan à deux niveaux s’est correctement aplati en Markdown compatible GitHub (l’étiquette « Q1 2026 » est répétée sur ses deux colonnes fusionnées, ce qui est la bonne manière de convertir un colspan en GFM). La grille sans bordure avec uniquement une ligne d’en-tête (T2) est ressortie exactement comme prévu. Le tableau large à 12 colonnes (T7) n’a pas dérivé. Et une colonne financière entièrement vide (T6) a été conservée comme cellules vides au lieu d’être supprimée ou fusionnée. Cela correspond aux scores officiels TableFormer TEDS — 95,4 pour les tableaux simples, 90,1 pour les complexes, 93,6 au total — que la fiche modèle place nettement au-dessus de Camelot (73,0) et EDD (88,3).

Un mot de prudence sur les cellules fusionnées, car une issue ouverte dit l’inverse. L’issue #3698 signale que V1 et V2 gèrent mal les lignes et colonnes fusionnées. Sur mes jeux de test, les simples colspan (T3/T5) et les valeurs rowspan ont été aplatis correctement, avec seulement le décalage de ligne mentionné plus haut sur les en-têtes multiniveaux. Mais les cas qui échouent dans #3698 sont des fusions irrégulières multi-lignes / multi-colonnes et des tableaux multipages — le cas pathologique, à l’extrême. Les miens appartiennent au cas simple. Donc la formulation correcte est étroite : les colspan et rowspan simples ont bien été récupérés ici (les en-têtes multiniveaux peuvent décaler d’une ligne) ; les fusions complexes et irrégulières restent un problème documenté et ouvert. Pas « les cellules fusionnées fonctionnent », pas « les cellules fusionnées sont cassées ».

Le piège : un tableau seul sur une page peut disparaître

Regarde à nouveau le tableau : T1 et T4 n’ont pas du tout été détectés. Docling a émis <!-- image --> et supprimé toutes les cellules, sans aucune erreur. T1 est une grille 5×8 ordinaire avec bordures. C’est assez inquiétant pour que je refuse d’y voir une simple faiblesse de parsing avant d’avoir isolé le vrai déclencheur, alors j’ai monté un A/B scripté.

Docling sparse page A/B: isolated table becomes picture, with context becomes table

J’ai d’abord éliminé les explications évidentes. La couche texte est bien présente — pypdfium2 lit 327 caractères pour T1 et 221 pour T4, ce sont donc de vrais PDF numériques, pas des images scannées. Désactiver l’OCR (do_ocr=False) ne change rien ; les tableaux disparaissent toujours. Et en inspectant DoclingDocument directement, len(doc.tables) == 0 alors que len(doc.pictures) == 1 — le modèle de mise en page avait classé toute la zone du tableau comme une Picture.

Puis le test décisif. J’ai re-rendu les tableaux T1 et T4 à l’identique, mais cette fois entourés de quelques paragraphes de texte classiques, puis j’ai reconverti. Les deux sont alors passés parfaitement : len(doc.tables) == 1, des tableaux GFM corrects sont générés, et l’étiquette de rowspan « North » dans T4b est bien répétée sur ses trois lignes. Même tableau. La seule variable modifiée était la présence ou non d’un contexte textuel autour du tableau sur une page peu dense.

La vraie réserve n’est donc pas que TableFormer est fragile : c’est que le modèle de mise en page RT-DETR de Docling utilise le contexte de la page, et qu’un petit tableau seul sur une page presque vide risque d’être lu comme une Picture puis d’être supprimé silencieusement. C’est facile à rencontrer dans la pratique, parce que c’est exactement à quoi ressemblent les factures, fiches techniques et exports recadrés : un tableau par page, sans prose autour. La correction est simple et efficace : donner du contexte à la mise en page, ou vérifier après conversion doc.tables et signaler les pages où le compteur est à zéro. Cela touche de près l’issue #3495 (un tableau détecté à la fois comme Table et comme Picture), mais le déclencheur précis lié à la sparsité de la page — même tableau, supprimé s’il est isolé, converti s’il est intégré au texte — je n’ai trouvé cela documenté nulle part. Mesuré, pas encore publié ; ce n’était pas un bug inconnu, mais ce cas précis ne l’était pas.

OCR sur de vrais scans : RapidOCR, pas EasyOCR

Les PDF scannés sont le terrain où beaucoup de convertisseurs échouent en silence. J’ai donc soumis à Docling deux vrais scans avec une couche texte mesurée à 0 caractèrepypdfium2 renvoie zéro caractère récupérable, ce qui confirme que toute sortie provient bien de l’OCR, et non d’un texte caché présent à côté.

Le fichier d’une page ocr_test.pdf est revenu proprement en 14,3 secondes sur CPU : « Docling bundles PDF document conversion to JSON and Markdown in an easy self contained package, » a été récupéré mot pour mot. Le PDF de quatre pages nemotron_multipage.pdf a lancé l’OCR sur les quatre pages en 70,1 secondes au total (17,5 s/page), en reproduisant la phrase de test à chaque page. L’OCR par défaut s’est déclenché automatiquement — sans option, sans configuration.

Le détail que beaucoup d’articles se trompent encore à écrire : le moteur OCR par défaut est RapidOCR, pas EasyOCR. Je l’ai confirmé en voyant les poids .pth de PP-OCRv4 se télécharger au premier lancement. Beaucoup de blogs existants et d’anciennes FAQ de Docling affirment encore qu’EasyOCR est la valeur par défaut ; c’est obsolète. EasyOCR est désormais une extension optionnelle à activer. La réserve reste valable : l’OCR est le chemin lent à grande échelle, et ici tout est mesuré sur un plafond CPU uniquement — un GPU réduirait nettement ces temps.

Vrais PDF, ordre de lecture et temps par page

Les fixtures synthétiques prouvent des comportements précis ; les vrais PDF prouvent que l’outil fonctionne réellement. J’ai testé deux articles académiques natifs numériques — le rapport technique Docling de 9 pages et « Attention Is All You Need » de 15 pages, tous deux en double colonne avec tableaux et formules.

Sur l’article de 15 pages Attention, les cinq repères de section — Abstract, Introduction, Background, Conclusion, References — apparaissent dans l’ordre du document dans le Markdown linéarisé, malgré la mise en page en double colonne. Tous les points de contrôle de contenu (Transformer, encoder, BLEU, multi-head) sont présents, et les célèbres tableaux de résultats multi-colonnes sont bien détectés comme quatre tableaux. C’est une véritable récupération de l’ordre de lecture et de la fusion des colonnes, ce qui constitue la valeur centrale pour le découpage RAG — impossible de découper proprement un document si la linéarisation transforme une page à deux colonnes en chaos entremêlé.

Le timing apporte une leçon contre-intuitive : le temps par page dépend de la quantité de structure présente, pas du nombre de pages. Le rapport dense de 9 pages s’est exécuté à 14,95 secondes par page — donc plus lent par page que l’article de 15 pages à 5,99 secondes par page — parce qu’il contient davantage de tableaux et de figures, et que chacun déclenche plus d’inférences de mise en page et de TableFormer. Autrement dit, les « secondes par page » sur CPU dépendent de la densité structurelle, pas de la longueur. Il s’agit d’une exécution CPU unique ; c’est un plafond, pas un chiffre de production.

Multi-format et promesse de JSON sans perte

Docling revendique un parsing unifié multi-format, alors j’ai généré un DOCX, un XLSX et un PPTX avec du contenu connu et des points de contrôle de vérité terrain, puis j’ai vérifié deux choses : les repères apparaissent-ils dans le Markdown, et survivent-ils au aller-retour JSON via export_to_dict() ?

FichierConversion sRepères trouvés dans MDTableaux dans MDRepères conservés en JSON
report.docx (titres + tableau fusionné « Total » + puces)0.1377/71Oui
workbook.xlsx (2 feuilles, colonne vide)0.0166/62Oui
deck.pptx (3 diapositives, puces + tableau)0.0386/61Oui

Tous les repères sont bien arrivés dans le Markdown, les tableaux ont été récupérés (y compris la ligne « Total » fusionnée du DOCX et les deux feuilles du XLSX), et chaque repère a aussi survécu au JSON de export_to_dict() — ce qui constitue la preuve utile pour l’affirmation de DoclingDocument sans perte, au moins sur des entrées propres. Ces formats passent par des backends natifs au format plutôt que par les modèles ML, ce qui explique qu’ils s’exécutent en quelques dizaines de millisecondes et fonctionnent totalement hors ligne. Le périmètre reste honnête : un fichier propre par format démontre la largeur de support, pas un stress test de fichiers Office pathologiques.

HTML : fidèle, mais pas nettoyé

C’est la réserve qui décide si Docling a sa place dans ton pipeline RAG, donc il faut la lire attentivement. Docling convertit le document HTML dans son intégralité. Il ne fait pas d’extraction du contenu principal façon readability. J’ai mesuré la quantité de chrome de site qui subsiste en comptant les lignes de navigation, sommaire, cookies et pied de page dans la sortie de Docling.

PageLignes MD non videsLignes de boilerplate% de boilerplateDébut de l’article à la ligne
Wikipedia « Web scraping »2553413.3%28
scrapethissite/forms6311.6%
books.toscrape6500.0%
quotes.toscrape3500.0%

Sur une page très chargée en éléments de navigation comme Wikipedia, environ 13 % des lignes Markdown correspondent au boilerplate de navigation/sommaire/pied de page, et le vrai article ne commence qu’à la ligne 28 — la sortie s’ouvre sur « move to sidebar / Contents / Toggle the table of contents » et se termine par « CS1 maint… / Search Wikipedia. » Sur les pages de contenu propres (books, quotes), on est proche de 0 %, donc il s’agit d’un problème de chrome de template, pas d’un coût constant par page. Docling fournit un Markdown fidèle du document entier, pas une extraction propre du contenu principal. En amont, le problème du mobilier HTML est suivi dans l’issue #1865 (fermée) et #1930 (ouverte).

Deux précisions permettent d’être juste. D’abord, sur le HTML, Docling n’exécute aucun modèle ML : il repose sur BeautifulSoup dans un pipeline simple. Le récit « les modèles vision lisent votre page » ne s’applique qu’aux PDF et aux images ; si tu donnes du HTML à Docling, ni la logique de mise en page ni TableFormer ne s’activent. Ensuite, le chemin PDF tente bien une classification du header et du footer, donc dire « aucun retrait du boilerplate » serait excessif : c’est le backend HTML, précisément, qui renvoie le chrome.

Comment il se compare — et où Thunderbit s’insère

Essayez Thunderbit pour l’extraction de données web

L’outil de référence avec lequel on compare Docling est Firecrawl, alors voici un tableau de positionnement. Une réserve importante d’emblée, car elle compte : il s’agit d’une comparaison au niveau documentation, pas d’un benchmark sur la même machine. Je n’ai pas exécuté Firecrawl sur ces fixtures. Seule la colonne Docling est mesurée ici ; la colonne Firecrawl provient de sa documentation publique.

AxeFirecrawl (selon sa documentation)Docling (mesuré ici)
Mission principaleCrawler + extraction du web vivant → MarkdownConvertir un document que vous possédez déjà → Markdown/JSON
Récupération / rendu JS / anti-botOui (navigateur hébergé)Non — vous fournissez le fichier
Extraction du contenu principalOuiNon — document complet fidèle (~13 % de chrome sur Wikipedia)
Structure des tableaux PDF (ML)limitéeOui — TableFormer (TEDS officiel 93,6 ; cell recall 1.00, in-row 0.97–1.00 sur les fixtures détectées)
PDF scanné / OCRlimitéeOui — RapidOCR par défaut (scan sans couche texte récupéré)
Ampleur des formatspages webPDF/DOCX/PPTX/XLSX/HTML/EPUB/images
DéploiementAPI hébergée (+ self-host)bibliothèque pip locale, hors ligne, sans clé API
Poids de mise en routeclé API / client légerinstallation par défaut de 1,3 Go + ~506 MiB de modèles (ou docling-slim)
Licencecommerciale / code source disponibleMIT

En une phrase : Firecrawl est l’outil à utiliser quand tes données vivent sur le web et demandent crawl, rendu JavaScript et nettoyage du contenu principal. Docling est l’outil à utiliser quand tu as déjà le document — surtout les PDF, les scans et les fichiers Office riches en tableaux — et que tu veux une conversion fidèle, hors ligne, qui préserve la structure avec une vraie compréhension des tableaux et de l’OCR. Ils se complètent. Un pipeline réaliste explore le web avec l’un et convertit les documents avec l’autre.

C’est aussi l’occasion d’être clair sur Thunderbit, puisque je travaille ici et qu’il serait légitime d’être méfiant si je faisais semblant du contraire. Thunderbit et Docling ne font pas le même travail, et je ne vais pas forcer une équivalence. Pour les développeurs, Thunderbit est une API de scraping IA, plus un serveur MCP, plus une CLI ; son unité de travail est la page web vivante : POST /distill transforme une URL en Markdown propre, prêt pour les LLM (en gérant le rendu JS, l’anti-bot et les CAPTCHA que Docling ne traite pas), et POST /extract renvoie un JSON structuré correspondant à un schéma que tu définis. C’est l’étape de récupération et de nettoyage d’un pipeline RAG. Docling est la partie locale-document du pipeline — le PDF, le scan, la feuille de calcul déjà présente sur ton disque. Si ton corpus est composé de pages web, utilise l’API Thunderbit, ses outils MCP (thunderbit_suggest_fields, thunderbit_distill, thunderbit_extract) ou la CLI (npx @thunderbit/thunderbit-cli). Si ce sont des PDF et des scans, utilise Docling. Si c’est les deux — ce qui est le cas de la plupart des pipelines réels — associe-les, parce qu’aucun des deux n’essaie d’être l’autre.

Verdict : provisoire, avec du travail restant

Je ne vais pas te donner une note unique sur 100, parce qu’un score pondéré intégrerait ici des pénalités pour des choses que Docling n’a jamais prétendu faire (comme le crawl) et ferait comme si tout était comparable. Par dimension, sur les fixtures testées :

  • Mise en route / premier lancement : lourd — environnement virtuel de 1,3 Go, ~506 MiB de modèles, ~224 s au premier PDF, ~0,55 s ensuite — mais docling-slim permet de contourner ce poids.
  • Fidélité des tableaux : solide quand un tableau est détecté (cell recall 1.00 sur 5/5, in-row 0.97–1.00), en ligne avec l’histoire officielle TEDS sur ces fixtures.
  • Robustesse de détection des tableaux : le piège des pages peu denses — un tableau isolé peut être classé comme Picture et disparaître. Vérifie doc.tables après coup.
  • Scans / OCR : fonctionne, RapidOCR par défaut ; lent à l’échelle.
  • Multi-format : bon, avec un aller-retour JSON intact.
  • HTML : fidèle, pas nettoyé — pas d’extraction du contenu principal.
  • Expérience développeur : API claire en 3 lignes et DoclingDocument propre, à l’exception du __version__ manquant.

Pour qui c’est destiné : les équipes qui construisent des pipelines RAG ou data sur des PDF, des scans et des fichiers Office, et qui veulent une conversion hors ligne, structurée et fidèle, avec une vraie compréhension des tableaux et de l’OCR. Pour qui ce n’est pas destiné : toute personne qui a besoin de crawl du web vivant ou d’une extraction propre du contenu principal HTML — là, c’est un autre outil.

Et parce qu’il s’agit d’un test, pas d’un communiqué marketing, les limites restent clairement affichées. C’est une évaluation ciblée — 7 tableaux synthétiques plus 2 PDF réels sur une machine CPU uniquement — pas un benchmark d’exactitude à l’échelle TEDS. Plusieurs choses n’ont pas été testées et tu devrais les vérifier avant de miser un pipeline sur Docling : le chemin VLM optionnel (GraniteDocling), l’empreinte réelle de docling-slim, une exécution GPU, les cellules fusionnées complexes et irrégulières ainsi que les tableaux multipages, la fidélité des formules vers LaTeX, et — point le plus susceptible de te surprendre en production — la durabilité combinée de la mémoire en batch, de la montée en charge sous threads/GIL et du cycle de vie des objets sur des milliers de conversions. Docling est fort sur ce qu’il revendique, mesuré plutôt que marketé, et il a de vrais angles morts que tu voudras cartographier avant de lui confier un corpus. Connais la limite des pages peu denses, prévois le téléchargement initial, et vérifie toi-même son comportement à grande échelle.

Essayez Thunderbit pour l’extraction de données web Get Started Free

FAQ

Docling est-il un web scraper ou un crawler ? Non. Docling convertit les documents que tu possèdes déjà — PDF, DOCX, PPTX, XLSX, HTML, images — en Markdown ou JSON. Il ne récupère pas d’URL, ne rend pas JavaScript et ne gère pas l’anti-bot. Le crawl du web vivant est un travail séparé, assuré par des outils comme Firecrawl ou l’API web de Thunderbit ; Docling commence à partir du fichier que tu lui fournis.

Quelle est la taille de l’installation Docling et du premier téléchargement ? Le package méta docling par défaut produit un environnement virtuel d’environ 1,3 Go, car il télécharge toute la pile ML comme dépendances obligatoires (torch à lui seul fait 536 MiB). La première conversion PDF télécharge environ 506 MiB de modèles de mise en page et de TableFormer sur disque, plus environ 40 Mo de poids RapidOCR, et prend environ 224 secondes — presque entièrement du temps de téléchargement. La deuxième conversion prend environ 0,55 seconde. Si tu n’as besoin que de formats légers, docling-slim (cœur d’environ 50 Mo) évite la partie lourde.

Docling fait-il de l’OCR, et avec quel moteur ? Oui. Sur un PDF scanné sans couche texte, l’OCR de Docling se déclenche automatiquement et a retrouvé le texte proprement dans mon test. Le moteur par défaut est RapidOCR, pas EasyOCR — une erreur fréquente dans les articles plus anciens. EasyOCR est désormais une extension facultative. L’OCR est le chemin lent à grande échelle, surtout sur CPU.

Pourquoi Docling a-t-il transformé mon tableau en image ou l’a-t-il supprimé ? Très probablement à cause de l’effet des pages peu denses. Le modèle de mise en page RT-DETR de Docling utilise le contexte de la page, et un petit tableau seul sur une page presque vide peut être classé comme Picture puis supprimé sans erreur. Le même tableau entouré de texte est converti correctement. La solution consiste à donner du contexte à la mise en page ou à vérifier doc.tables après conversion et à signaler toute page où le compteur est à zéro.

Docling ou Firecrawl — lequel dois-je utiliser ? Ce sont des tâches différentes, donc ce n’est généralement pas un choix exclusif. Firecrawl explore le web vivant, rend JavaScript et extrait le contenu principal. Docling convertit les documents que tu possèdes déjà, avec une vraie structure de tableau PDF et de l’OCR, entièrement hors ligne. Si ta source est une page web, utilise un outil web (Firecrawl ou l’API / MCP / CLI de Thunderbit). Si ce sont des PDF, des scans ou des fichiers Office, utilise Docling. Dans la plupart des pipelines réels, on utilise les deux.

Ke
Ke
CTO chez Thunderbit | Data Scientist senior et expert en ML Forte d’une expérience de près de dix ans en machine learning et en data science, Ke Shen est diplômé de Columbia University et ancien Data Scientist senior chez Walmart Labs. Grâce à une expertise approfondie, reconnue par ses pairs, en Python, R, Java et statistiques, il partage des analyses éprouvées sur le passage d’algorithmes d’IA complexes de la théorie à une architecture prête pour la production.
Table des matières
Thunderbit · Agent de données web IA

Extrayez des données de n'importe quelle page en 1 clic

Approuvé par plus de 250 000 utilisateurs
plan gratuit disponible
Extraire des données avec l'IA
Transférez facilement des données vers Google Sheets, Airtable ou Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week