Dominique Meeùs
Dernière modification le
retour à la table des matières
— à l’index
— à ma page de départ
Pour reconnaître une page d’un livre en français, disons image.tiff
, on commande
tesseract image.tiff textedelimage -l fra⚓
(où bien sûr -l fra
veut dire langue : français — je suppose qu’on a les fichiers de données de langue
pour le français) et ça donne en trois secondes le fichier textedelimage.txt
du texte d’image.tiff
sans une seule faute. (Enfin, pour les textes de bonne qualité et si les lignes sont
bien horizontales sur le scanner. Sinon voir Deskew à propos de xSane.) Qu’on se le dise, maintenant sous Linux il y a un vrai grand OCR gratuit mais de
qualité professionnelle, à l’égal des plus chers !
Attention à la langue : une option -l avec une autre langue donne une moins bonne reconnaissance ; avec une langue inexistante, ça ne donne rien, sans message d’erreur, et on ne comprend pas ce qui ne va pas. Des codes de langue comme eng ou fra sont assez évidents. Il m’arrive aussi de faire de la reconnaissance en néerlandais et de m’arracher les cheveux parce que ça ne marche pas, mais c’est parce que j’ai écrit ndl au lieu de nld.
Tesseract 4 gère autrement le multithreading, pour des raisons sans doute excellentes
dans certain environnements professionnels, qui dépassent ma compétence 1, mais chez un utilisateur ordinaire, ça provoque une lenteur absolument prohibitive. Il y a une solution de rechange : introduire une valeur d’une certaine variable
sur la même ligne avant la commande tesseract et cetera
, à savoir :
OMP_THREAD_LIMIT=1 tesseract et cetera⚓
Ne me demandez pas ce que ça veut dire. Ce qui compte, c’est que lire une page, au lieu d’une ou plusieurs minutes, ne prend plus qu’une seconde (comme avec Tesseract 3) parce que dans mes scripts xsane2tess, j’ai modifié dans ce sens la ligne
print LOG `OMP_THREAD_LIMIT=1 tesseract "out.png" "${outputfile}" -l $lang 2>&1`;⚓
Pour les Tesseract jusqu’à la version 2, les conditions étaient strictes. On devait scanner :
La sortie de Tesseract est par défaut un fichier texte. C’est toujours le programme qui ajoute l’extension de la sortie. Avec la commande
tesseract image.png article -l fra⚓
on obtient obtient le texte (supposé en français) article.txt
. Si on préfère une sortie hOCR, on doit commander
tesseract image.png article -l fra hocr⚓
Le fichier de sortie est maintenant article.hocr
, un fichier XHTML qui présente l’avantage de la suppression (plus ou moins réussie)
des retours de chariot fixes du fichier article.txt
. (Cependant, cela ne supprime pas les éventuels traits de césure présents dans l’image
de texte image.png
. Cette prouesse intéressante est réalisée aussi par OCRFeeder.) Les fichiers hOCR s’ouvrent dans les browsers si on veut lire le texte. Ils servent
surtout à positionner le texte dans les DjVu et les PDF.
Si on veut directement un PDF, texte inclus, on doit commander
tesseract image.png article -l fra pdf⚓
En entrée, Tesseract n’accepte que des images, pas du PDF. J’ai pu reconnaître cependant
par Tesseract un PDF pure image en le convertissant en image avec GhostScript ou avec
Imagemagick. Par Imagemagick (qui fournit la commande convert), j’ai fait : convert -density 300 mijnPDF.pdf" -depth 8 mijnPDF.png
, ce qui a permis ensuite d’en tirer le texte : tesseract mijnPDF.png mijnPDF -l nld
. Mais il y a maintenant divers programmes gérant Tesseract qui acceptent le PDF en
entrée.
On peut combiner la reconnaissance de caractère et la saisie par le scanner en interfaçant xSane et xsane2tess.pl. Divers autres logiciels proposent aussi de combiner scan et OCR.