Aller au contenu
PDFLove

comment fonctionne l'ocr

Comment l'OCR transforme un scan en texte

L'OCR n'est pas une opération. C'est une chaîne de cinq, et presque tout résultat décevant se ramène à l'étape qui a mal tourné.

01

Étape un : nettoyer l'image

La reconnaissance travaille sur des formes, donc tout ce qui déforme les formes doit partir d'abord. La page est redressée — un scan est rarement d'équerre, et une rotation de deux degrés suffit à brouiller la recherche de lignes qui suit. Puis elle est binarisée : chaque pixel devient noir ou blanc, le seuil étant choisi de façon adaptative pour qu'une page plus claire d'un bord que de l'autre ne perde pas la moitié de son texte.

Ensuite le dépoussiérage retire les mouchetures isolées de bruit, qui seraient autrement reconnues comme des points et des virgules.

Cette étape est la raison pour laquelle la qualité du scan pèse bien plus sur la précision de l'OCR que le moteur de reconnaissance. Une ombre en travers de la page met le seuillage en échec, et une page bombée d'un livre relié ne peut pas être redressée parce que la déformation n'est pas une rotation.

02

Étape deux : établir la mise en page

Le moteur repère les composantes connexes — des plages contiguës de pixels noirs — et les regroupe. Des composantes voisines sur une ligne de base commune deviennent un mot ; des mots en rang deviennent une ligne ; des lignes empilées à interligne régulier deviennent un bloc de texte. De larges gouttières blanches découpent la page en colonnes.

C'est aussi là que les images, les filets et les tableaux sont identifiés et mis de côté, pour qu'on ne demande pas au moteur de lire une photographie comme si c'était du texte.

L'analyse de mise en page décide de l'ordre de lecture, et l'ordre de lecture est ce que la plupart des gens remarquent quand il échoue. Une lettre d'information avec une citation détachée au milieu d'une colonne, ou une facture dont les totaux se trouvent dans un encadré flottant, c'est là qu'un moteur réglé pour une page de prose se met à produire du texte dans un ordre que personne n'a écrit.

03

Étape trois : reconnaître les caractères

L'OCR ancien comparait la forme de chaque caractère à une bibliothèque de gabarits, trait par trait : compter les trous, trouver les jonctions de traits, mesurer les proportions. C'était rapide, fragile, et il fallait un jeu de gabarits distinct pour chaque caractère typographique.

Les moteurs modernes font passer un réseau de neurones sur la ligne entière — typiquement un LSTM, qui lit une suite de fines tranches verticales de gauche à droite et produit une suite de caractères. Cela compte parce que cela supprime le besoin de segmenter les caractères avant de les reconnaître. Décider où une lettre finit et où la suivante commence est en soi difficile : `rn` et `m` sont presque identiques en basse résolution, et des lettres qui se touchent dans une police serrée n'offrent aucun espace où couper. Un modèle de séquence contourne le problème en ne faisant jamais cette coupe.

Chaque caractère ressort avec un score de confiance, c'est ce qu'un bon outil d'OCR expose et ce dont l'étape suivante se sert.

04

Étape quatre : se servir de la langue pour corriger ce que la vision a raté

Le moteur voit des formes et rien d'autre, il renverra donc avec assurance `l\/lanager`, `0ffice` ou `rnoderne`. Un dictionnaire et un modèle de suites de caractères rattrapent ces cas : le moteur sait qu'en français `rn` en début de mot est extrêmement rare tandis que `m` est courant, et il sait que `moderne` est un mot alors que `rnoderne` n'en est pas un.

C'est pourquoi régler la bonne langue compte tant, et pourquoi c'est le réglage isolé le plus efficace dont on dispose. Un moteur réglé sur l'anglais lisant une page française a un dictionnaire qui se bat contre chaque accent. C'est aussi pourquoi les noms propres, les références d'articles, les numéros de série et les adresses sont ce qu'il y a de moins exact sur une page — ce sont précisément les chaînes que le modèle de langue ne peut pas aider, et il les corrige parfois activement en quelque chose de faux.

05

Étape cinq : le réécrire de façon invisible

Voici la partie qui fait fonctionner un PDF interrogeable, et c'est une astuce réellement élégante.

Le PDF possède un opérateur de mode de rendu du texte, `Tr`. Le mode 0 remplit les glyphes normalement. Le mode 3 ne dessine rien du tout — le texte est posé sur la page, il occupe sa position, et il est complètement invisible.

La sortie de l'OCR est donc écrite dans la page comme du vrai texte en mode 3, positionnée pour que chaque mot reconnu se place exactement sur les pixels d'où il vient, l'image scannée d'origine restant dessinée dessous. La page a précisément l'aspect qu'elle avait avant. Mais la recherche trouve les mots, la sélection les surligne aux bons endroits, la copie renvoie de vrais caractères, et un lecteur d'écran peut lire le document à voix haute.

C'est pourquoi un scan interrogeable est à peine plus lourd que le scan dont il vient : la couche de texte ajoutée fait quelques kilooctets contre des mégaoctets d'image. Et c'est pourquoi sélectionner du texte sur un scan passé à l'OCR surligne parfois un rectangle un peu de travers — le mot invisible est positionné d'après l'estimation du moteur quant à l'emplacement des pixels.

L'image reste
Vous gardez l'aspect exact du scan d'origine. Rien n'est redessiné.
Le texte est réel
Recherche, copie, sélection et lecteurs d'écran fonctionnent tous dessus.
Les erreurs restent cachées
Un mot mal reconnu est invisible, donc la page n'a jamais l'air fausse — elle échoue simplement à être trouvée par la recherche.
La taille bouge à peine
Des kilooctets de texte contre des mégaoctets d'image.

Questions

Questions liées

Pourquoi le texte OCR paraît-il correct sur la page alors que la recherche échoue ?

Parce que ce que vous regardez, c'est l'image scannée d'origine, et ce que la recherche interroge, c'est la couche de texte invisible écrite dessous. Quand le moteur lit mal un mot, la page continue d'afficher les bons pixels tandis que le texte interrogeable dit autre chose.

Quelle précision dois-je attendre ?

Un scan propre à 300 PPP de texte imprimé ordinaire dépasse 98 % par caractère. Une photo de téléphone à éclairage régulier se situe un peu en dessous. Un fax ou une photocopie de troisième génération chute nettement, et l'écriture manuscrite est un autre problème, que l'OCR standard ne résout pas.

L'OCR change-t-il l'aspect de mon document ?

Non. L'image d'origine est laissée exactement telle quelle et le texte reconnu est ajouté invisiblement derrière elle. Si un outil rend une page d'aspect différent, c'est qu'il a réaffiché au lieu de superposer.

Pourquoi l'OCR est-il tellement plus lent que les autres opérations sur PDF ?

Parce que c'est la seule qui fait de l'analyse d'image. Fusionner ou diviser réarrange des objets et ne touche presque aucun pixel. L'OCR exécute cinq étapes de traitement sur chaque pixel de chaque page, et un réseau de neurones sur chaque ligne.