pourquoi mon ocr est imprécis
Ce que l'OCR rate, et comment y remédier
L'OCR est de la reconnaissance, pas de la conversion : il a donc un taux de réussite et non un résultat. L'essentiel de ce qui détermine ce taux a été décidé avant que le fichier n'atteigne le moindre logiciel — au scanner.
01
Ce que fait l'OCR
La reconnaissance optique de caractères prend l'image d'une page, repère les formes qui ressemblent à du texte et décide de quel caractère chaque forme se rapproche le plus. Les moteurs modernes confrontent ensuite le résultat à un modèle de langue, et c'est pourquoi un « rn » lu « m » est en général corrigé en silence dans un mot réel et laissé tel quel dans une référence produit.
Ce dernier point est celui qu'il faut comprendre. L'OCR est le plus précis là où vous en avez le moins besoin — la prose ordinaire, où le contexte le rattrape — et le moins précis sur les numéros de série, les références de compte et les montants, là où aucun contexte ne rattrape rien et où une erreur coûte le plus cher.
02
Ce qui ruine la précision
Une résolution sous 300 DPI. C'est le facteur unique le plus important. À 300 DPI, un caractère de 10 points fait environ 40 pixels de haut et ne prête pas à confusion. À 150 DPI il en fait 20 et le moteur devine entre des formes voisines. Numériser au-delà de 400 DPI n'aide presque jamais et ralentit tout.
L'inclinaison. Une page numérisée deux degrés de travers est nettement plus difficile à lire, parce que la détection des lignes suppose des lignes de base horizontales. Deux degrés suffisent à gêner et passent facilement inaperçus à l'œil nu.
Un contraste faible. Photocopies pâles, fonds grisâtres, papier de couleur et surligneur sur le texte réduisent la séparation entre l'encre et le papier dont le moteur dépend.
Les artefacts JPEG. Trop compresser une numérisation avant de lancer l'OCR floute les bords des caractères. Si vous devez faire les deux, l'OCR d'abord et la compression ensuite.
La mise en page. Texte sur plusieurs colonnes, tableaux, encadrés et notes de bas de page obligent le moteur à déterminer l'ordre de lecture avant de lire quoi que ce soit, et se tromper là-dessus brouille une reconnaissance par ailleurs parfaite.
03
Ce que l'OCR ne fera pas
L'écriture manuscrite, en général. Reconnaître une cursive est un problème nettement plus difficile que reconnaître de l'imprimé, et l'OCR généraliste s'en sort mal. Les majuscules d'imprimerie tracées avec soin fonctionnent parfois.
Reconstruire correctement un tableau. Il lit souvent chaque cellule juste et produit malgré tout un tableau structurellement faux, parce que décider où commencent les colonnes est une inférence distincte de la lecture des caractères.
Récupérer une information qui n'est pas là. Si la numérisation est trop pâle pour que vous lisiez un chiffre avec certitude, aucun moteur ne fera mieux — et, contrairement à vous, il s'engagera sur une réponse sans signaler le doute.
04
Comment obtenir un meilleur résultat
Renumérisez, si vous le pouvez. Trente secondes à 300 DPI, bien droite, avec un bon contraste, battent n'importe quelle quantité de post-traitement sur une mauvaise numérisation. Si le document sert vraiment, c'est du temps bien employé.
Redressez avant de reconnaître. Même un alignement approximatif récupère beaucoup sur une page entrée de travers.
Convertissez en niveaux de gris plutôt qu'en noir et blanc agressif. La conversion à deux niveaux purs avec un seuil mal réglé mange les traits fins et bouche les contrepoinçons des lettres, et les deux nuisent à la reconnaissance.
Indiquez la langue. Un moteur qui attend de l'anglais sur un document en français corrigera jusqu'à aboutir à une absurdité assumée.
Vérifiez ensuite le résultat — les chiffres en particulier. Lisez les montants en les comparant à l'original plutôt que de survoler la prose. C'est là que se cachent les erreurs qui survivent, et un chiffre mal lu a l'air tout à fait plausible sur la page.