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.