Reconnaissance optique de document avec Ubuntu

Pour les recettes de cuisine que j’ajoute en ce moment au blog (voir l’article précédent), j’ai été amené à numériser des documents en langue anglaise.

J’en profite pour noter ici la façon de faire à laquelle j’y suis arrivé, après avoir testé plusieurs autres outils sans succès.

En résumé : il faut scanner le document au format TIFF, améliorer/nettoyer si nécessaire le document avec Gimp, puis utiliser tesseract pour la transformation en format texte du document [1]Voir la page OCR du wiki ubuntu-fr pour plus d’informations sur le sujet. Il y a d’autres outils disponibles, mais c’est celui-ci qui m’a paru le mieux fonctionner.. Reste à traduire le document en ligne (avec DeepL par exemple) et à le relire pour y apporter les dernières corrections.

Voyons cela plus en détail.

Il faut d’abord numériser le document au format TIFF. Le scanner par défaut de Gnome ne proposant pas ce format, il faut installer et utiliser Xsane :

Une fois le document scanné, il est préférable d’y jeter un œil et de l’améliorer si nécessaire avec l’aide de Gimp par exemple.

Dans l’exemple ci-dessous, comme je scanne un document relié, il vaut mieux supprimer cette barre noire latérale. De même, la première ligne avec une police de caractère originale, ainsi que le trait noir de séparation peuvent aussi perturber la reconnaissance de caractère (notamment en haut de page selon mon expérience).

Sinon, vous risquez d’obtenir une erreur de ce genre en lançant tesseract :

pascal$ tesseract scan-0084.tiff ingredients2 -l eng
Tesseract Open Source OCR Engine v4.1.1 with Leptonica
Error in pixReadFromTiffStream: bad tiff file: tiffbpl is too small
pascal$ tesseract scan-0083.tiff ingredients2 -l eng
Tesseract Open Source OCR Engine v4.1.1 with Leptonica
Page 1
Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box
 tesseract-orc-eng

Ces erreurs ne sont pas rédhibitoires, il faut juste obtenir une meilleure qualité de document : re-scanner, nettoyer, augmenter le contraste, éventuellement augmenter la résolution du scan, etc…

Une fois ceci fait, il ne reste plus qu’à installer l’outil tesseract (d’abord développé par HP dans les années 1985-1995 puis abandonné. Résurrection en 2005, quand le code est libéré (sous licence Apache), et le développement reprend sous la houlette de Google. Bref, on installe le paquet de langue anglaise, puisque mes documents sont en anglais (sinon, ce serait tesseract-ocr-fra pour le français) :

$ sudo apt install tesseract-orc-eng

Il ne reste plus qu’à lancer la commande magique, pour récupérer un fichier intitulé ingredients2.txt :

pascal$ tesseract scan-0084.tiff ingredients2 -l eng

Voilà, il faut maintenant le traduire en français. J’utilise pour ma part DeepL, ça fonctionne très bien et cela permet de se passer des services de Google. Il est tout de même nécessaire de relire ensuite le document, car DeepL propose parfois à la suite plusieurs traductions pour une même partie de texte, il faut donc en choisir une et supprimer les autres.

Dans l’ensemble, j’ai été plutôt agréablement surpris de la facilité des opérations, c’est évidemment beaucoup plus rapide qu’une traduction manuelle de ces pages. Il y a quelques corrections manuelles à faire, mais elles sont rapides.

Notes

Notes
1 Voir la page OCR du wiki ubuntu-fr pour plus d’informations sur le sujet. Il y a d’autres outils disponibles, mais c’est celui-ci qui m’a paru le mieux fonctionner.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *