Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

À travers XSane

Up: Reconnaissance de caractères, Optical Character Recognition (OCR) Previous: Tesseract en ligne de commande Next: Tesseract par PDFsandwich

On peut faire de l’OCR en interfaçant Tesseract avec XSane par le script d’une élégante simplicité xsane2tess.pl de la page « Xsane et tesseract, l’OCR qui marche très bien sous Linux » du blog EquinoxeFR. L’auteur propose de l’installer dans /usr/bin ; on pourrait préférer /opt/bin, ce qui peut se faire comme suit

cd /opt/bin
sudo wget http://www.equinoxefr.org/wp-content/uploads/2008/07/xsane2tess.pl
sudo chmod u=rwx,g=rx,o=rx xsane2tess.pl

Je suppose pour XSane que vous avez mis le script et ses variantes ci-dessous dans /opt/bin et les avez rendues exécutables. Bien sûr on pourrait encore mettre des liens dans /usr/bin.

Attention que xsane2tess (l’original d’EquinoxeFR) utilisait la commande convert de ImageMagick, qu’il aurait donc fallu installer aussi. Or les Tesseract 3 récents acceptent une entrée d’image raw. La commande convert n’est donc plus indispensable et j’ai modifié mon xsane2tess ( dans la table ci-dessous) en conséquence.

Tesseract, même en version 3, ne redresse pas les pages. Si les lignes de texte sont trop inclinées, le résultat peut être très mauvais. J’ai donc introduit une commande qui redresse (deskew), de Marek Mauder sur le blog Galfar’s Lair. Cela donne une version améliorée de xsane2tess (pour les pages en biais). (Dans mon script, je suppose qu’il y a un lien /usr/bin/deskew vers l’exécutable de Deskew.) Par ailleurs Tesseract offre maintenant aussi une sortie au format hOCR, ou même en PDF avec le texte. J’ai donc écrit des variantes que vous pouvez télécharger de mon site, sans convert, avec ou sans Deskew, pour hOCR ou PDF :

xsane2tess.pl xsane raw → tesseract → texte
xsane2tess-d.pl xsane → deskew → PNG → tesseract → texte
xsane2tess-d-hocr.pl xsane → deskew → PNG → tesseract → texte hOCR
xsane2tess-pdf.pl xsane raw → tesseract → PDF avec texte
xsane2tess-d-pdf.pl xsane → deskew → TIFF → tesseract → PDF avec texte

S’il y a beaucoup d’image et peu de texte (une image avec seulement une légende, par exemple), cela peut donner des résultats surprenants avec Deskew. C’est pour cela que j’ai écrit aussi une variante PDF sans Deskew.

Avec ou sans Deskew, il est extrêmement pratique de sortir un PDF avec texte directement du scanner avec xSane. Le texte est parfaitement positionné, mais le PDF présente le défaut d’être très lourd (de l’ordre de 1 Mo par page) et très grand (dimension « papier » de l’ordre de A2).

Dans XSane, Préférences, Configuration, OCR, indiquer comme Commande, /opt/bin/xsane2tess.pl -l fra (pour le français — adapter pour d’autres langues) ou bien une autre de mes variantes de xsane2tess ci-dessus, -i comme option d’entrée et -o comme option de sortie. Le script écrit un fichier log, /tmp/tesseract.log par défaut. Il me semble qu’il faut donner à ce fichier un maximum de permissions (sudo chmod u=rw,g=rw,o=rw /tmp/tesseract.log, d’abord sudo touch /tmp/tesseract.log s’il n’existe pas encore) sinon rien ne marche et on ne comprend pas pourquoi. Dans la fenêtre principale de XSane, demander Enregistrer, proposer un nom de fichier (sans l’extension .txt, ou .hocr ou .pdf selon le cas, que Tesseract ajoutera), choisir le type TEXT (même pour mon script qui donne du PDF) et Gris au lieu de Couleur. (En fait, juger, dans le cas d’espèce si Gris ou Couleur vous donne un meilleur résultat, tous les deux étant généralement meilleurs que Trait.) Et voilà, on peut passer du scanner au texte ou au PDF les doigts dans le nez en une seule opération. (Si on avait demandé Visionneuse, il est toujours possible de sauver l’image visionnée à travers l’OCR. C’est une des commandes du menu Fichier de la visionneuse.) Si le fichier langue n’existe pas ou si on fait une faute de frappe dans le code de langue (comme ndl au lieu de nld), on n’obtient rien. Avec Tesseract 3 on devrait avoir analyse automatique de texte en colonne. Sinon, il faut utiliser l’aperçu de XSane pour sélectionner les passages à reconnaître.

J’ai fait ça auparavant avec les indications trouvées sur ubuntu-fr.org dans leur page xsane2tess. Ça fonctionnait très bien, pendant des années, et puis subitement plus du tout, au moment du passage à Ubuntu 10.10, ce qui est peut-être la raison, que je n’ai pas cherché à élucider puisque j’ai trouvé alors tout de suite xsane2tess.pl.

Attention, dans les préférences de XSane, à l’importance du fra dans la commande xsane2tess -l fra. Avec ce choix de langue, Tesseract reconnaît assez bien aussi l’anglais. Pour mettre toutes les chances de mon côté, j’ai cependant mis un jour xsane2tess -l eng pour l’anglais. J’ai ensuite oublié de changer eng en revenant au français. Le résultat est pauvre. Beaucoup d’accents sont perdus. (Cela montre l’importance du dictionnaire dans la reconnaissance.) Les mots longs sont faciles à corriger avec un correcteur d’orthographe, mais il est fastidieux de retrouver tous les a qui demandent un accent grave. Bref, pour le français, il faut impérativement l’indication de langue fra et, plutôt que de l’oublier, on pourrait préférer ne pas la changer pour des langues avec peu d’accents comme l’anglais ou le néerlandais.

J’avais installé ocrad et gocr. Aucun des deux n’est comparable aux grands logiciels commerciaux, mais je trouvais ocrad un peu plus fiable. De toute manière, l’un et l’autre sont cent coudées en dessous de Tesseract. Le fichier d’entrée doit être en format pbm. Si on demande à Xsane de scanner en trait (noir et blanc) et de sauver en pnm, ce sera du pbm. Il faut dire à ocrad qu’on veut de l’UTF-8 (par exemple), quel est le ficher d’entrée et celui de sortie. Exemple : ocrad scantexte.pnm -F utf8 -o textetexte.txt.

Up: Reconnaissance de caractères, Optical Character Recognition (OCR) Previous: Tesseract en ligne de commande Next: Tesseract par PDFsandwich