Dominique Meeùs
Dernière modification le
retour à la table des matières
— à l’index
— à ma page de départ
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
.