Ceci est une ancienne révision du document !



Tesseract

Tesseract est un moteur de reconnaissance optique de caractères (ROC, OCR) qui a été conçu par les ingénieurs de HP de 1984 à 1995, avant d'être abandonné. Après 10 ans de purgatoire, son code est ouvert en 2005, et le développement est repris sous la houlette de google. Les premiers résultats sont prometteurs. Enfin un bon logiciel libre d'OCR sous linux ? L'avenir nous le dira… Il permet déjà d'obtenir une reconnaissance optique de qualité sur un certain nombre de documents (sans mise en page complexe).

Tesseract a pour vocation d'être utilisé :

  • soit directement, en ligne de commandes ou par l'intermédiaire d'une interface graphique comme gscan2pdf ou xsane (+xsane2tess), pour reconnaitre du texte avec mise en page basique; cet usage est déjà fonctionnel.
  • soit avec des surcouches gérant les mises en pages complexes, etc., comme ocropus (encore en version beta).

Tesseract est distribué sous licence Apache, c'est-à-dire en gros qu'il est Open Source mais pas copyleft.

Il n'y a pas de différence notable avec les anciennes versions traitées plus bas.

Pensez toutefois à installer le paquet ImageMagick si vous voulez utiliser xsane2tess (utilitaire convert nécessaire)

N.B. : Si vous voulez tester Ocropus en l'installant par compilation depuis les sources, n'installez pas Tesseract à partir des dépôts Ubuntu, ni à partir du deb de "b52", mais comme indiqué sur la page ocropus. Par contre, si vous installez Ocropus par les paquets deb, vous pouvez installer Tesseract à partir des dépôts Ubuntu

Par le gestionnaire de paquets (32 et 64 bits)

tesseract-ocr 2.01 est disponible dans le dépôt universe (tesseract 2.03 depuis Intrepid). Le paquet peut donc facilement être installé par synaptic, apt-get ou aptitude. Il vous faudra installer aussi au moins l'un des huit fichiers de langues disponibles dans le dépôt universe : tesseract-ocr-deu (allemand), tesseract-ocr-fra (français), tesseract-ocr-eng (anglais), tesseract-ocr-spa (espagnol), tesseract-ocr-nld (hollandais), tesseract-ocr-ita (italien), tesseract-ocr-por (portugais-brésilien), tesseract-ocr-deu-f (vieil-allemand).

Une autre langue pour l'instant disponible pour la ROC avec tesseract, le vietnamien, n'est pas encore dans les dépôts Hardy (mais elle est dans les dépôts Intrepid : tesseract-ocr-vie). Pour Hardy, vous pouvez l'installer facilement comme indiqué ici (cf. "si vous souhaitez utiliser les autres langues").

Avantages de l'installation de tesseract par le dépôt universe :

  • tesseract fonctionne directement sur les fichiers tiff compressés (scan réalisé avec xsane par exemple).
  • vous pouvez installer séparément les langues de votre choix.

Inconvénients :

  • la reconnaissance sur les fichiers tiff non compressés suppose un traitement préalable par unpaper (clean up), facile avec gscan2pdf.
  • sur un certain nombre de fichiers retravaillés avec Gimp, ou provenant de copies d'écran, enregistrés sous divers formats, la ROC est boguée et donne un résultat très médiocre sans équivalent avec ce que peut produire normalement tesseract, même avec traitement préalable "unpaper".

Par les deb de « b52 » (32 et 64 bits)

"b52", qui est par ailleurs développeur de XCFA, a réalisé en avril 2008 des paquets deb de tesseract 2.01 incluant les neuf langues disponibles. Dès la sortie de tesseract 2.03, il a mis au point des paquets "toutes langues" de cette nouvelle version :
un pour les architectures 32 bits.
un pour les architectures 64 bits.

Avantages de l'installation par les deb de "b52" :

  • les paquets deb de "b52" sont ceux qui permettent, de loin, le meilleur fonctionnement de tesseract.
  • il s'agit (depuis le 1er juin 2008) de la version 2.03 de tesseract.
  • tesseract fonctionne directement sur les fichiers tiff non compressés (image modifié via Gimp par exemple).
  • toutes les langues disponibles sont installées par défaut.
  • la ROC sur des fichiers de divers formats, retravaillés par exemple avec Gimp, ou provenant de copies d'écran, donne un bon résultat (après traitement unpaper, et si besoin augmentation de la taille et de la résolution de l'image via Gimp).
  • une option supplémentaire "-lwt" (voir la note ci-dessous) permet la reconnaissance sur les fichiers tiff compressés, si on utilise tesseract en ligne de commande. Avec gscan2pdf, la reconnaissance optique est aussi possible sur ces fichiers après traitement préalable par unpaper (clean up).
N.B. : une adresse IP (donc anonyme) a ajouté cette mention ici dans cette page de la documentation : "Désavantage : ne fonctionne pas avec gscan2pdf." Cette information est inexacte, ou du moins n'est-elle pas générale. la version tesseract 2.03 installée avec un paquet deb de "b52" fonctionne très bien avec gscan2pdf. Tout test ou information complémentaire sera la bienvenue, mais avant de modifier cette page de la documentation, merci de signaler sur le fil de discussion du forum dédié à la ROC tout éventuel problème rencontré. Merci ;-)
L'option supplémentaire "-lwt". Cette option est disponible uniquement si tesseract est installé avec un paquet réalisé par "b52". Elle s'utilise en remplacement de l'option "-l", lorsqu'on veut activer la librairie libtiff. Ceci permet la reconnaissance directe sur des fichiers tiff compressés. Par défaut, gscan2pdf utilise l'option "-l" (= "sans libtiff" dans les paquets de "b52") qui permet à tesseract de fonctionner correctement sur tous les types de fichiers image (après traitement unpaper si besoin).
- lwt [lang] l = Lang w = With t = Tiff Exemple :
tesseract fichier.tif résultat -lwt fra

- l [lang]
L'option -l fonctionne donc SANS Tiff si tesseract est installé avec un paquet de "b52". Exemple :

tesseract fichier.tif résultat -l fra

→ pour les utilisateurs de gscan2pdf, tesseract fonctionne mieux qu'avec les paquets des dépôts Hardy.
→ pour les utilisateurs de la ligne de commande, l'option -lwt résout le problème des fichiers tif compressés (cependant, pour un bon fonctionnement de tesseract en ligne de commande, les fichiers "*.tiff" doivent être renommés "*.tif")

L'installation par synaptic est possible sous Feisty et Gutsy, mais attention, il s'agit de la version obsolète 1.03 ! (qui ne gère pas le post-traitement de la roc en français et autres langues). Il faut oublier cette version périmée.

Pour architecture i386 (32 bits)

En janvier 2008, un paquet deb de la version 2.01 de tesseract a été mis au point par b52 avec l'équipe de « Linux on the root ». Ce mode d'installation est plus "propre" que la compilation depuis les sources. Ce paquet inclut deux langues : l'anglais et le français.

Téléchargez le deb "b52" français-anglais ici et installez-le avec GDebi. Limitation de ce deb : la ROC directe sur les fichiers tiff compressés ne fonctionne pas. Mais un traitement unpaper ("clean up") dans gscan2pdf la permet.

Pour plus d'informations, vous pouvez lire l'article de Linux on the root.

À noter que le deb i386 "toutes langues" empaqueté par "b52" fin avril 2008 est fonctionnel sous Gutsy (à tester pour Feisty).

Si vous installez tesseract au moyen du deb "b52" français-anglais, vous pouvez aussi installer d'autres langues, comme indiqué ci-dessous.

Si vous souhaitez utiliser les autres langues actuellement disponibles pour le post-traitement de la ROC par tesseract, faites comme suit :

  • Téléchargez sur votre bureau sur cette page les fichiers de langues comme par exemple :
    • pour l'allemand : tesseract-2.00.deu.tar.gz
    • pour l'espagnol : tesseract-2.00.spa.tar.gz
    • pour l'italien : tesseract-2.00.ita.tar.gz
    • etc.
  • décompressez-les et copiez les fichiers qu'ils contiennent dans le répertoire tessdata (qui est placé dans /usr/share lorsque l'installation de tesseract est faite avec le paquet deb).
    tar -zxvf tesseract-2.00.deu.tar.gz
    tar -zxvf tesseract-2.00.spa.tar.gz
    tar -zxvf tesseract-2.00.ita.tar.gz

    et de même pour les autres fichiers de langues que vous avez téléchargés, puis :

    cd /home/votre_identité/Desktop/tessdata
    sudo cp * /usr/share/tessdata

Alternative possible : les paquets deb du dépôt "Guadausers" (Guadalinex, Andalousie), qui incluent toutes les langues. Mais pour un bon fonctionnement, il faut remplacer le paquet deb de gscan2pdf (quelle que soit la version) par le paquet deb gscan2pdf-guadausers. Donc :

  1. désinstaller gscan2pdf s'il est déjà installé sur votre ordinateur.
  2. installer ces deux paquets :

gscan2pdf_0.9.23-1-1guadausers1_all.deb et tesseract_2.01-1-1guadausers1_i386.deb

Pour architecture amd64 (64 bits)

Avec le deb de "b52"

Il suffit de télécharger et d'installer le paquet tesseract_2.02-4_amd64.deb .
(testé sous Gutsy - à tester sous Edgy et Feisty)

En compilant depuis les sources

La seule façon d'installer tesseract 2.01, si vous aviez installé Ubuntu en 64 bits, était autrefois de compiler depuis les sources. Vous pouvez encore le faire si vous n'aimez pas la simplicité ;-)

Préalable : assurez-vous que les paquets gs-common libtiff4dev build-essential soient installés.

Téléchargez la version tesseract 2.01 depuis cette page.

Une version tesseract 2.03 est disponible depuis fin avril 2008, mais sa compilation est délicate et pour l'instant déconseillée.

Pour cela, ouvrez le terminal et entrez les commandes suivantes:

cd //répertoire où se trouve l'archive//
tar -zxvf tesseract-2.01.tar.gz 
cd tesseract-2.01 
./configure
make
sudo make install
"ne rien installer que l'on ne peut pas désinstaller"… Pour pouvoir faire place nette le jour où une nouvelle version de tesseract sera disponible (et pouvoir installer celle-ci) :
  • conserver dans un répertoire /home/votre_identité/programmes_compilés le fichier source tesseract-2.01.tar.gz
  • le jour ou vous voulez désinstaller la version de tesseract correspondante, remettre le fichier source sur le bureau, puis :
cd /home/votre_identité/Desktop
tar -zxvf tesseract-2.01.tar.gz 
cd tesseract-2.01
./configure
make
sudo make uninstall

Ainsi, tesseract 2.01 sera désinstallé, et vous pourrez installer une nouvelle version en suivant la procédure d'installation…

Puis téléchargez les fichiers nécessaires à la reconnaissance optique de la langue française, tesseract-2.00.fra.tar.gz, décompressez et copiez les fichiers que contient ce dossier dans le répertoire tessdata :

tar -zxvf tesseract-2.00.fra.tar.gz
cd tessdata
sudo cp * /usr/local/share/tessdata

Autres langues : S'il vous arrive de scanner des textes en d'autres langues, vous pouvez télécharger et installer de même les fichiers nécessaires. Sont actuellement disponibles les fichiers pour l'anglais, l'allemand, l'espagnol, l'italien, le néerlandais, le vieil-allemand, le portugais (brésilien) et le vietnamien.

En ligne de commande

Tesseract n'accepte pour le moment que des fichiers au format tif et mdi. Après avoir converti votre fichier grâce à un logiciel ad hoc, entrez la commande suivante :

tesseract ~/nomdelimage.tif nom_du_fichier_de_sortie_sans_l_extension

En cas d'installation de la version 2.01, pour la reconnaissance de texte en français :

tesseract ~/nomdelimage.tif nom_du_fichier_de_sortie_sans_l_extension -l fra
Par défaut, le fichier de sortie est placé dans /home/votre_identité (en fin de liste). Pour obtenir ce fichier de sortie sur votre bureau, il faut indiquer le chemin, comme suit :
tesseract  ~/nomdelimage.tif  /home/votre_identité/Desktop/nom_du_fichier_de_sortie_sans_l_extension -l fra
Si vous avez installé tesseract au moyen d'un paquet deb de "b52", tesseract fonctionnera en ligne de commande sur les fichiers tif/tiff compressés si vous utilisez l'option "-lwt" à la place de l'option "-l". Vous pouvez aussi utiliser gscan2pdf, et effectuer un traitement unpaper (clean up) sur le document avant de lancer la ROC.

Si vous avez installé tesseract par synaptic, apt-get ou aptitude (dépôt universe de Hardy) ou par les deb "guadausers", ou si vous l'avez compilé vous-même, tesseract donnera de mauvais résultats en ligne de commande sur certains fichiers tif/tiff non compressés. Dans ce cas, utilisez gscan2pdf, et effectuez un traitement unpaper (clean up) sur le document avant de lancer la ROC. Si le résultat est médiocre malgré un traitement unpaper préalable, désinstallez tesseract… puis réinstallez-le au moyen d'un paquet de "b52"… et réessayez ;-)

Les options de langues

Si vous avez installé les fichiers pour la reconnaissance de texte en d'autres langues, vous ajoutez, au lieu de

-l fra
-l eng (pour l'anglais)
-l deu (pour l'allemand)
-l spa (pour l'espagnol)
-l ita (pour l'italien)
-l nld (pour le néerlandais)
-l por (pour le portugais)
-l vie (pour le vietnamien)
-l deu-f (pour le vieil-allemand)

En mode graphique avec « gscan2pdf »

Les explications sont données sur la page gscan2pdf de la documentation Ubuntu francophone.

En mode graphique avec XSane

Il est possible d'utiliser tesseract avec XSane grâce à l'adaptateur xsane2tess.

Pour réaliser de la ROC sur un document déjà numérisé, on utilise gscan2pdf. Pour réaliser de la ROC sur un document à numériser, on utilise plutôt XSane, dont la fonction de prévisualisation permet de sélectionner des zones de texte.
La suite est adaptée des explications du site "tesseract-ocr" (google) en anglais. Il est conseillé d'aller aussi sur cette page si on peut.

Description des fichiers de langue

Les 4 fichiers inttemp, normproto, pfftable et unicharset sont indispensables à la création d'une langue, les autres sont facultatifs. Tous les fichiers devront être préfixés par l'identifiant de leur langue.tiré du pdf google dispo dans le répertoire google code

inttemp

stocke les formes géométriques prototypales des différents caractères; se génère par l'exécutable mftraininf, cf plus bas la section apprentissage.

pffttable

"number of expected features for each character" ? FIXME ; se génère par l'exécutable mftraininf, cf plus bas la section apprentissage.

normproto

"the character normalization sensitivity prototypes" FIXME ; se génère par l'exécutable cftraininf, cf plus bas la section apprentissage.

unicharset

Ce fichier recense tous les caractères du prototype (1 ligne par caractère),ainsi que 4 propriétés: nombre, majuscule, minuscule, lettre, représenté par 1 hexadécimal:

; 0
b 3
W 5
7 8

par exemple, W est noté 5 (hexa), ce qui correspond à 0101 (binaire), ce qui veut dire: ce n'est pas un nombre, c'est une majuscule, ce n'est pas une minuscule, c'est une lettre. Au lieu d'être écrit à la main, il peut être généré par: unicharset_extractor (cf plus bas la section apprentissage).

DangAmbigs

Ce fichier texte sert à signaler les risques de confusion entre caractères: il est créé ou augmenté manuellement.

1       m       2       r n
3       i i i   1       m

Ici on signale que le m (1 caractère) peut être confondu avec rn (2 caractères), et que iii (3 caractères) peut être confondu avec m (1 caractère). Quelle conclusion en tire tesseract? FIXME

frequent_words_list

Liste les mots de la langue les plus fréquents (en codage DAWG). On peut rentrer les mots dans un fichier texte UTF8 (1 par ligne), puis les mettre au bon format par:

wordlist2dawg frequent_words_list freq-dawg

words_list

Liste les mots moins fréquents. Même principe que ci-dessus:

wordlist2dawg words_list word-dawg

User-words

Ce fichier est usuellement vide.

Apprentissage

On peut faire progresser tesseract en suivant la démarche suivante:

  1. lui faire reconnaître une image-type avec l'option box :
    tesseract fontfile.tif fontfile batch.nochop makebox
  2. renommer fontfile.txt en fontfile.box
  3. ouvrir ce dernier fichier qui ressemble à :
    r 814 492 837 516 
    o 839 483 862 516 
    s 865 491 878 520 
    i 101 452 122 483 
    a 126 453 146 486

Chaque ligne correspond à un caractère Unicode : sa représentation puis les coordonnées de ses extrémités (gauche, bas, droite, haut).

On peut modifier les erreurs :

  • par remplacement d'une lettre par une autre
  • plus compliqué, quand plusieurs lettres on été pris pour une, ou vice versa, fusionner en modifiant les coordonnées, par exemple :
    , 197 496 205 507
    , 206 496 214 508

    devient :

    „ 197 496 214 508
À noter qu'il existe pour le français déjà des couples tif/box prêts à l'emploi, à télécharger au même endroit que les sources.

Une fois corrigée le fichier box, passons à l'apprentissage proprement dit :

tesseract fontfile.tif junk nobatch box.train

qui propose en sortie un fichier fontfile.tr, qui décrit géométriquement les différents caractères du tif.

Pour créer notre prototype, on rassemble nos différents apprentissages tif/box :

mftraining fontfile_1.tr fontfile_2.tr ...

ce qui nous donne en sortie 2 fichiers, inttemp et pffmtable.

cntraining fontfile_1.tr fontfile_2.tr ...

crée lui normproto Enfin

unicharset_extractor fontfile_1.box fontfile_2.box ...

crée le fichier unicharset.

FIXME

FIXME

  • tesseract-ocr.1242673229.txt.gz
  • Dernière modification: Le 18/05/2009, 21:00
  • par Sorbus