{"notes":[{"id":"text-spotting/olmocr","category":"text-spotting","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"olmOCR","subtitle":"Glisser une antisèche au modèle","author":"Z. Yuan","paperDate":"2025-02-25","publishedOn":"2026-02-03","paperTitle":"olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models","paperUrl":"https://arxiv.org/abs/2502.18443","bibliography":{"title":"olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models","authors":["Jake Poznanski","Aman Rangapur","Jon Borchardt","Jason Dunkelberger","Regan Huff","Daniel Lin","Aman Rangapur","Christopher Wilhelm","Kyle Lo","Luca Soldaini"],"url":"https://arxiv.org/abs/2502.18443","pdfUrl":"https://arxiv.org/pdf/2502.18443v3","codeUrl":"https://github.com/allenai/olmocr","preprint":{"id":"2502.18443","submittedOn":"2025-02-25","url":"https://arxiv.org/abs/2502.18443"},"publication":null,"citation":"@misc{textspottingolmocr2025,\n  title = {{olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models}},\n  author = {Jake Poznanski and Aman Rangapur and Jon Borchardt and Jason Dunkelberger and Regan Huff and Daniel Lin and Aman Rangapur and Christopher Wilhelm and Kyle Lo and Luca Soldaini},\n  year = {2025},\n  eprint = {2502.18443},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2502.18443}\n}\n","citationPath":"/content/papers/citations/text-spotting/olmocr.48e77a79a2cb.bib"},"thumbnail":{"src":"/content/papers/assets/044c3df431d57e98d00da32fff3b3df21f0cad1cb9a2e9176487efa55b628c17.png","width":994,"height":622},"locale":"fr","path":"/content/papers/fr/text-spotting/olmocr.6b11c726ab0d.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"document-anchoring-transmettre-aussi-au-modèle-le-texte-du-pdf","text":"Document anchoring : transmettre aussi au modèle le texte du PDF","depth":3},{"id":"produire-les-données-dentraînement-avec-gpt-4o","text":"Produire les données d'entraînement avec GPT-4o","depth":3},{"id":"affiner-un-modèle-spécialisé-de-7b","text":"Affiner un modèle spécialisé de 7B","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"olmocr-bench-noter-avec-des-tests-unitaires","text":"olmOCR-Bench : noter avec des tests unitaires","depth":3},{"id":"pour-entraîner-des-modèles-de-langage","text":"Pour entraîner des modèles de langage","depth":3},{"id":"coût","text":"Coût","depth":3},{"id":"réactions-de-la-communauté","text":"Réactions de la communauté","depth":3},{"id":"à-garder-en-tête-en-lisant-cet-article","text":"À garder en tête en lisant cet article","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[]}],"text":"Le web compte des milliers de milliards de PDF. Articles, rapports, modes d'emploi, documents administratifs : beaucoup de contenus n'existent qu'en PDF et restent introuvables sur les pages web. Pour les équipes qui entraînent des modèles de langage, c'est une mine encore inexploitée.\n\nLe problème, c'est que le PDF n'a jamais été conçu pour qu'on en « extraie le texte ».\n\nÀ l'origine, il servait à décrire « comment imprimer un document sur papier ». Le fichier ne stocke pas des unités porteuses de sens comme des titres ou des paragraphes, mais des glyphes, un par un, avec leur police, leur taille et leurs coordonnées. La Figure 2 de l'article en donne un exemple : dans le PDF, le titre « olmOCR » est formé de six enregistrements, un par lettre, chacun muni de sa propre matrice de transformation. Quel caractère lire en premier, quel paragraphe suit lequel : le PDF ne s'en charge pas.\n\nL'Allen Institute for AI (Ai2) a présenté olmOCR en février 2025, avec pour objectif de convertir des PDF en masse en texte brut propre, rangé dans l'ordre de lecture. Cette note suit la v3 de juillet 2025 ; le modèle, les données d'entraînement et le code sont publiés sous des licences permissives.\n\n## Définir le problème\n\nLes approches de l'époque se répartissaient en deux camps :\n\n- **Les outils en plusieurs étapes**, comme MinerU ou Marker, enchaînent plusieurs modèles, pour la segmentation de la mise en page, l'analyse des tableaux, etc. ; d'autres, comme GROBID ou PaperMage, se spécialisent dans les articles scientifiques.\n- **Les modèles de bout en bout**, comme Nougat ou GOT, prennent l'image de la page et produisent directement le texte.\n\nLes auteurs font remarquer qu'en ne regardant que l'image, les modèles de bout en bout renoncent à un atout : **beaucoup de PDF sont nés numériques et contiennent déjà le texte**. Ce texte est désordonné, mais ses caractères sont justes.\n\nÀ l'inverse, confier directement la lecture à un VLM généraliste comme GPT-4o ne donne pas non plus une qualité suffisante. Les auteurs observent que, sur des pages denses en texte ou à la mise en page complexe, GPT-4o, avec la seule image, a tendance à omettre du contenu, à reformuler ou à « compléter » l'original, et même à légender des images sans qu'on le lui demande. L'annexe est plus précise : avec la seule image de la page, le modèle termine les phrases inachevées, et quand l'image est ambiguë, il va jusqu'à inventer des passages plus longs.\n\nLa question devient donc : peut-on donner au VLM, en même temps que l'image, le texte contenu dans le PDF comme référence ?\n\n## Résoudre le problème\n\n### Document anchoring : transmettre aussi au modèle le texte du PDF\n\n[![Schéma du document anchoring : à gauche, une page PDF ; à droite, le texte d'ancrage qui en est extrait, avec les dimensions de la page, la position des images et les blocs de texte accompagnés de leurs coordonnées, par exemple « [71x459]Figure 1 » et « [71x398]1 Introduction »](/content/papers/assets/044c3df431d57e98d00da32fff3b3df21f0cad1cb9a2e9176487efa55b628c17.png)](/content/papers/assets/044c3df431d57e98d00da32fff3b3df21f0cad1cb9a2e9176487efa55b628c17.png)\n\n*Figure 3 de l'article, extraite de la [**page 17 du PDF v3**](https://arxiv.org/pdf/2502.18443v3#page=17), CC BY 4.0. À gauche, la page PDF ; à droite, le texte d'ancrage inséré dans le prompt.*\n\nLe cadre de droite, c'est ce que les auteurs appellent le **document anchoring**, l'ancrage documentaire. Le principe :\n\n1. pypdf lit la structure interne du PDF et en extrait chaque bloc de texte et chaque image, avec leurs coordonnées sur la page.\n2. Des blocs sont sélectionnés par ordre de priorité et placés dans le prompt, jusqu'à une limite de caractères. Ceux du début et de la fin du document passent en premier, car c'est là que se trouvent le plus souvent le titre, le résumé et les informations de pied de page.\n3. Ce texte d'ancrage est transmis au VLM avec l'image de la page, et on lui demande de produire le texte brut de cette page.\n\nRegardons le format sur la figure : `[71x459]Figure 1` signifie qu'un texte « Figure 1 » se trouve aux coordonnées (71, 459) ; `[Image 480x298 to 525x312]` indique la position d'une image.\n\nLes auteurs le reconnaissent franchement : ce texte d'ancrage est **très bruité**. L'ordre de lecture n'est pas conservé, et le corps du texte se mêle à toutes sortes de textes passe-partout (*boilerplate*) et au bruit produit par le rendu du PDF. Mais il fournit des caractères que le modèle peut recopier tels quels, ainsi que leur position approximative sur la page. Le VLM se charge de comprendre la mise en page et de rétablir l'ordre ; le texte du PDF se charge d'arrimer les caractères.\n\nSi la page est une numérisation sans texte intégré, le texte d'ancrage se réduit aux dimensions de la page et à la position des images, et le modèle lit surtout à partir de l'image.\n\n### Produire les données d'entraînement avec GPT-4o\n\nUne fois la méthode d'ancrage en place, les auteurs s'en servent d'abord pour fabriquer des données d'entraînement.\n\nEn octobre 2024, ils comparent plusieurs modèles « enseignants » candidats : Gemini 1.5 renvoie souvent des erreurs RECITATION, GPT-4o mini hallucine trop, Claude Sonnet 3.5 coûte trop cher. Leur choix se porte finalement sur `gpt-4o-2024-08-06`.\n\nLe prompt demande à GPT-4o de répondre en JSON structuré : d'abord des métadonnées de la page, comme la langue, l'orientation ou la présence de tableaux, puis le texte dans l'ordre de lecture. Les auteurs constatent que cette structure est décisive : quand la page ne contient pas de texte, elle empêche GPT-4o d'inventer des légendes pour les images.\n\nLe jeu ainsi obtenu, **olmOCR-mix-0225**, compte 258 641 pages issues de 102 825 documents : 96 929 sont échantillonnés parmi environ 240 millions de PDF publics du web, et 5 896 proviennent de livres du domaine public de l'Internet Archive. D'après une estimation par échantillonnage, les documents académiques en représentent environ 56 %, suivis des brochures et des documents juridiques.\n\n### Affiner un modèle spécialisé de 7B\n\nLe prompt d'ancrage fonctionne bien pour piloter GPT-4o, mais les auteurs constatent que son effet varie selon le modèle ; il convient plutôt comme technique de génération de données. Ils se demandent alors : un VLM spécialisé plus petit peut-il faire aussi bien que GPT-4o ?\n\nIls partent de Qwen2-VL-7B-Instruct et l'affinent sur olmOCR-mix-0225 pendant environ 1,2 epoch, soit 16 heures d'entraînement sur une machine à 8 H100. Pendant l'affinage, les pages sont redimensionnées à 1 024 pixels sur leur plus grand côté, et le texte d'ancrage est limité à 6 000 caractères. Entrée typique pour une page : environ 1 000 tokens pour l'image, environ 1 800 pour le texte d'ancrage, soit environ 3 000 au total.\n\n## Discussion\n\n### olmOCR-Bench : noter avec des tests unitaires\n\nPour comparer des systèmes d'OCR, les auteurs écartent les indicateurs du type distance d'édition, qui mesurent « à quel point la sortie ressemble à la référence ». Leur exemple vient des équations : les chaînes $x$ et $x_i$ diffèrent à peine, mais leur sens n'a rien à voir.\n\nIls construisent donc **olmOCR-Bench** : environ 1 400 PDF et 7 010 tests unitaires à issue binaire, réussite ou échec, chacun vérifiable sans ambiguïté par un programme :\n\n- **Présence de texte** : un passage d'une à trois phrases apparaît-il dans la sortie ?\n- **Absence de texte** : les éléments périphériques, comme les en-têtes, pieds de page et numéros de page, ont-ils bien été exclus ?\n- **Ordre de lecture** : deux passages apparaissent-ils dans le bon ordre ? Sur une page qui contient plusieurs articles de presse, par exemple, on peut vérifier seulement que le titre de chaque article précède sa première phrase, sans se soucier de l'ordre des articles entre eux.\n- **Tableaux** : la cellule qui contient une valeur donnée existe, et les cellules situées au-dessus et à gauche sont bien celles attendues.\n- **Équations** : le LaTeX de référence est rendu avec KaTeX, on relève la position relative de chaque symbole, puis on cherche dans la sortie un ensemble de symboles disposés de la même façon.\n- **Vérifications de base** : appliquées à chaque page, elles contrôlent qu'un texte est bien produit, que sa fin ne contient pas plus de 30 n-grammes répétés, et qu'il ne contient ni caractères chinois ou japonais, ni emoji.\n\nCes vérifications de base inscrivent directement « tomber dans la répétition » et « faire surgir du texte qui n'a rien à faire là » parmi les questions obligatoires de l'examen.\n\n\n> [!NOTE]\n> \n> L'article donne trois tailles différentes pour ce benchmark : 1 400 PDF dans le résumé, 1 402 au §3 et 1 403 dans la conclusion. Le nombre de tests est toujours de 7 010.\n\n\n[![Tableau des résultats d'olmOCR-Bench : taux de réussite et score global de GOT OCR, Marker, MinerU, Mistral OCR API, GPT-4o, Gemini Flash 2, Qwen 2 VL, Qwen 2.5 VL et olmOCR sur huit sources : ArXiv, équations d'anciens scans, tableaux, anciens scans, en-têtes et pieds de page, multicolonnes, petits caractères sur long texte et vérifications de base](/content/papers/assets/970cd043bba14de362481d37c8428e947780e9ec1c949f7846a8be7c4f58fbbf.png)](/content/papers/assets/970cd043bba14de362481d37c8428e947780e9ec1c949f7846a8be7c4f58fbbf.png)\n\n*Table 4 de l'article, extraite de la [**page 8 du PDF v3**](https://arxiv.org/pdf/2502.18443v3#page=8), CC BY 4.0. Colonnes, dans l'ordre : ArXiv, équations d'anciens scans, tableaux, anciens scans, en-têtes et pieds de page, multicolonnes, petits caractères sur long texte, vérifications de base ; le score global est la moyenne des sources, avec un intervalle de confiance à 95 %.*\n\nLe meilleur score global revient à olmOCR avec ancrage : 75,5. L'API commerciale Mistral OCR obtient 72,0, Marker 70,1, MinerU 61,5, et GOT seulement 48,3. Les auteurs précisent qu'olmOCR-Bench a été construit **après** l'entraînement du modèle, pour éviter de l'ajuster à répétition sur le benchmark.\n\nUne comparaison du tableau mérite qu'on s'y arrête : **l'ancrage aide très inégalement selon le modèle**.\n\n| Modèle | Sans ancrage | Avec ancrage | Écart |\n| --- | ---: | ---: | ---: |\n| GPT-4o | 68,9 | 69,9 | +1,0 |\n| Gemini Flash 2 | 57,8 | 63,8 | +6,0 |\n| olmOCR | 74,7 | 75,5 | +0,8 |\n\nPour olmOCR lui-même, l'ancrage n'apporte que 0,8 point, de l'ordre de l'intervalle de confiance. Son vrai progrès vient surtout des données d'entraînement produites grâce à l'ancrage : le même modèle de base Qwen2-VL, sans affinage, n'obtient que 31,5.\n\nPar ailleurs, olmOCR n'obtient que 42,2 dans la colonne « anciens scans », et environ 71,0 sur les tableaux. Les numérisations, qui n'offrent aucun texte intégré à ancrer, restent un point difficile.\n\n### Pour entraîner des modèles de langage\n\nLes auteurs vérifient aussi l'utilité de ces textes pour des modèles de langage. Ils partent d'un checkpoint intermédiaire d'OLMo-2-7B et poursuivent le préentraînement sur 50 milliards de tokens dans chaque cas : d'un côté, les articles scientifiques de peS2o, extraits à l'origine avec GROBID et des règles ; de l'autre, les mêmes PDF retraités avec olmOCR.\n\nSur six tâches, dont MMLU, ARC, DROP et HellaSwag, la moyenne passe de 53,9 à 55,2, soit un gain de 1,3 point de pourcentage.\n\n### Coût\n\n| Système | Coût par million de pages (USD) |\n| --- | ---: |\n| GPT-4o (par lots) | 6 240 |\n| Marker (H100) | 1 484 |\n| Mistral OCR API | 1 000 |\n| MinerU (L40S) | 596 |\n| Gemini Flash 2 (par lots) | 249 |\n| olmOCR (L40S) | 176 |\n\n*Tableau : extrait de la Table 6 de l'article. Estimations sur la base de 0,79 dollar de l'heure pour une L40S et de 2,69 dollars de l'heure pour une H100 ; pour olmOCR, un taux de nouvelles tentatives de 12 % est inclus.*\n\nLes « 176 dollars pour un million de pages » du résumé correspondent à une estimation pour une inférence exécutée soi-même sur des L40S.\n\n### Réactions de la communauté\n\nolmOCR est arrivé sur Hacker News le 28 février 2025. Dans la discussion, quelqu'un pointe d'emblée les vieux problèmes de l'OCR génératif : hallucinations et résultats instables. L'utilisateur vikp, qui développe Marker, répond que sur leur propre jeu de test, ils ont constaté chez olmOCR bon nombre d'omissions et d'hallucinations ; il conteste aussi la comparaison entre le prix de l'API de Marker et le coût d'inférence auto-hébergée d'olmOCR, établie dans des conditions inégales. [Hacker News, 2025-02-28](https://news.ycombinator.com/item?id=43174298)\n\nL'utilisateur vikp développe un produit concurrent, et sa position est à prendre en compte ; les conditions de comparaison des coûts qu'il relève sont toutefois bien visibles dans la Table 6 : Marker y figure en mode OCR forcé sur H100, olmOCR sur L40S.\n\n### À garder en tête en lisant cet article\n\n1. **Les données d'entraînement viennent de GPT-4o.** olmOCR apprend les sorties de GPT-4o sous prompt d'ancrage, et peut apprendre du même coup les erreurs de l'enseignant. En annexe, les auteurs mesurent aussi le degré d'accord entre l'élève et l'enseignant.\n2. **Le benchmark est maison.** La conception d'olmOCR-Bench est une référence utile, mais les premiers résultats comparatifs viennent des auteurs eux-mêmes.\n3. **L'ancrage dépend de la qualité du PDF.** Les PDF nativement numériques donnent les meilleurs résultats ; une simple numérisation n'offre aucun texte intégré à exploiter.\n\n## Conclusion\n\nAu cœur d'olmOCR, une idée toute simple : **puisque le PDF contient déjà le texte, montrons-le au modèle**.\n\n1. **Le document anchoring** place dans le prompt le texte intégré au PDF et ses coordonnées, pour que le VLM dispose de caractères à recopier.\n2. **Fabriquer les données par ancrage, puis affiner un petit modèle** : 260 000 pages annotées par GPT-4o et un Qwen2-VL de 7B suffisent à dépasser le score global de GPT-4o lui-même.\n3. **olmOCR-Bench remplace la similarité par des tests unitaires**, et transforme répétitions, omissions et ordre de lecture en questions vérifiables automatiquement.\n\nLe plus grand risque de l'OCR génératif, c'est qu'il complète lui-même ce qu'il voit mal. L'une des réponses d'olmOCR : commencer par chercher des caractères qu'on n'a pas besoin de deviner.\n","imageSizes":{"/content/papers/assets/044c3df431d57e98d00da32fff3b3df21f0cad1cb9a2e9176487efa55b628c17.png":{"width":994,"height":622},"/content/papers/assets/970cd043bba14de362481d37c8428e947780e9ec1c949f7846a8be7c4f58fbbf.png":{"width":1394,"height":527}}}
