[màj] Interface graphique pour Tesseract : gscan2pdf

ROC en français et autres langues... merci Sorbus ;)
samedi 19 janvier 2008
par  zarer (Christophe Gallaire)
popularité : 2%

Article mis à jour pour la ROC en français et autres langues.

Nécessité fait loi...

Il y a peu, je me suis mis à la recherche d’un bon programme d’OCR (ou ROC en français) : un logiciel de Reconnaissance Optique de Caractères afin de ne pas avoir à recopier plusieurs dizaines de pages pour le boulot. Du texte et rien que du texte, et en français, s’il vous plaît ! avec accents et signes de ponctuation.

Tournant à 100 % sous Linux, il s’agissait donc de trouver une solution native et libre ! 100 % Linux et 100 % libre !

Après avoir scanné mes belles petites feuilles, ni une ni deux, j’ai lancé kooka. Résulat : une vraie calamité ! Des signes cabalistiques en guise de texte !

Les accents sont-ils des agents perturbateurs, du fait que nombre de logiciels d’OCR sont programmés par des anglophones ? Certainement...

Toujours est-il que la solution OCR (ou ROC) pour du texte en français, traité sous Linux, semble être ailleurs. Les résultats obtenus par Tesseract 2.01 sont exemplaires !

Seulement, Tesseract en lignes de commandes n’est certainement pas la solution la plus attrayante !

La bonne surprise vient de gscan2pdf qui offre à Tesseract 2.01 sa belle interface ! Bon, tout n’est pas rose dans cette affaire mais le couple fait des merveilles !

Sous Debian Lenny (testing), Tesseract et gscan2pdf s’installent et cohabitent sans problème, nous le verrons.

Sous Ubuntu 7.10 et Debian Etch, les paquets disponibles dans les dépôts sont obsolètes. Pour obtenir ce que l’on cherche, il est nécessaire de passer aux versions supérieures. L’installation de notre couple Tesseract/gscan2pdf se complique alors quelque peu.

Grâce à la mobilisation des membres de mailing-list de Linux On The Root (b52, Dom, Dzef, Leonux... Merci à tous !), autour de ce qu’il est convenu d’appeler L’affaire OCR, une solution, à grands renforts de paquets .deb et de scripts, a été trouvée. En voici la procédure...

Quelques mots sur Tesseract, le meilleur moteur OCR Libre

Historiquement, Tesseract a été créé en 1985 par Hewlett Packard et abandonné 10 ans plus tard. Tesseract était pourtant l’un des meilleurs logiciels de Reconnaissance Optique de Caractères.

Resté longtemps sans évolution, Tesseract a été rendu public l’année dernière (licence Apache 2.0), après quelques débuggages de la part de Google qui s’occupe dorénavant de son développement.

Pour beaucoup, Tesseract représente une avancée majeure pour le libre dans le domaine de la Reconnaissance Optique de Caractères.

Certains tests ont montré une reconnaissance à 97,74% ! Tesseract-OCR devient donc de fait le meilleur moteur de reconnaissance de caractères libre.

Tesseract est un moteur de reconnaissance simple : il ne fournit pas d’interface graphique utilisateur (GUI), n’effectue pas d’analyse de la mise en page et ne formate pas les résultats qu’il produit.

OCRopus : l’avenir de Tesseract

Tesseract est un projet très prometteur. L’un de ses développements les plus en vue est le projet OCRopus : système d’analyse de document comprenant l’analyse de la mise en page modulaire et la reconnaissance optique de caractères modulaire, le tout en tenant compte de la langue.

Actuellement, le projet OCRopus se base sur le moteur Tesseract, sur RAST pour l’analyse de mise-en-page et sur aspell (ainsi que des outils de tests). Le format de sortie est en HTML. Son installation et son utilisation sont encore un peu "rudes" pour être présentées dans le cours de cet article mais les résultats sont très encourageants.

Sous peu, OCRopus sera en mesure d’apprendre à la volée, depuis une interface web comme celle que connaît déjà Tesseract, et la reconnaissance pourra se faire depuis le format PDF.

La Reconnaissance Optique de Caractères sous Linux semble devenir un domaine majeur de recherche. Les avancées pourraient bien projeter le Libre sur le devant de la scène.

Installation de tesseract-2.01 (Ubuntu 7.10 / Debian Etch)

Les sources

Il est possible d’installer de la version actuelle de Tesseract en récupérant les sources sur la page du projet tesseract-ocr.

La Mailing-List de Linux On The Root a beaucoup échangé au sujet de Tesseract et b52, développeur de XCFA, nous a été d’un très grand secours. Sur une idée de Leonux, b52 nous a fait un joli p’tit paquet qui facilite grandement son installation.

La paquet a été fait à partir des trois archives nécessaires à la version 2.01 disponible sur la page de téléchargement du projet :

a) la version tesseract-2.01.tar.gz  ;

b) l’archive des fichiers de langue française : tesseract-2.00.fra.tar.gz ;

c) l’archive des fichiers de langue anglaise : tesseract-2.00.eng.tar.gz.

Installation du paquet .deb de tesseract_2.01

1. Installation par GDebi. Après récupération sur le bureau du paquet tesseract_2.02-1_i386.deb (version b52 pour linonroot-dev), il est naturellement possible de l’installer avec GDebi par un simple clic droit.

2. Installation via le Terminal.

a) Pour cette installation, ouvrez un Terminal (Applications —> Accessoires —> Terminal).

b) Récupération et installation du paquet tesseract_2.02-1_i386.deb (version b52). Dans le Terminal, tapez les commandes suivantes :

Ubuntu 7.10

wget http://download.tuxfamily.org/xcfau...
dpkg --unpack tesseract_2.02-1_i386.deb
sudo apt-get install -f
[sudo] password for user :

Debian Etch

wget http://download.tuxfamily.org/xcfau...
dpkg --unpack tesseract_2.02-1_i386.deb
su
Mot de passe :
apt-get install -f
exit

Si tout s’est déroulé correctement, tesseract-2.01 est installé sur votre machine avec la reconnaissance des langues de Molière et de Shakespear !

Test de Tesseract 2.01

Bien qu’il soit parfaitement possible de faire une reconnaissance de caractères sur une image aux formats .png, .jpg, .pnm, .gif, .tif et .tiff graphiquement avec gscan2pdf ― en installant une dépendance omise par le développeur et en copiant par ailleurs certains fichiers, nous y reviendrons ―, en lignes de commandes, Tesseract n’accepte que les formats .tiff et .mdi.

Attention ! Dans la commande ci-dessous, il n’y a pas deux lignes mais une seule : les "arguments" sont juste séparés d’un espace.

tesseract chemin/de/votre/image.tif nom_du_fichier_de_sortie_sans_extension -l fra

Conversion et optimisation d’une image

Pour la conversion et l’optimisation des images à traiter en ROC par Tesseract, The Gimp (qu’on ne présente plus !) et ImageMagick font très bien l’affaire !

Reportez-vous à cet excellent howto "ocr with tesseract" (en anglais), aux parties 4 "Prepare Images" & 5 "Convert To Tiff".

Pour comprendre la syntaxe des commandes d’ImageMagick, reportez-vous au manuel (en anglais...très clair !).

Installation de gscan2pdf 0.9.19 (Ubuntu 7.10 / Debian Etch)

gscan2pdf, dans sa version actuelle (0.9.19), offre une belle interface à Tesseract 2.0.1 (version multilingue), bien plus conviviale que la ligne de commandes et extrêmement efficace. Voyez plutôt :

JPEG - 39.4 ko

Jeffrey Ratcliffe, le développeur de gscan2pdf a prévu un paquet .deb pour les version 0.9.19.

L’installation du paquet gscan2pdf_0.9.19_all.deb, sur Ubuntu 7.10 et Debian Etch peut se faire avec l’une ou l’autre des méthodes utilisées pour Tesseract ci-dessus.

Installation de Tessreract et gscan2pdf : le script de Leonux

Leonux, par paresse dit-il (je le crois plutôt plongé à corps perdu dans le bash), a proposé ce petit script d’installation de gscan2pdf 0.9.19 et Tesseract 2.01 pour Ubuntu 7.10 :

# !/bin/sh
## Script d’installation pour la M.-L. linonroot-dev ## par Leonux
## Téléchargement des paquets
wget http://download.tuxfamily.org/xcfau...
wget http://downloads.sourceforge.net/gs...
## Installation de tesseract_2.02-1_i386.deb (b52) et de gscan2pdf
sudo dpkg --unpack tesseract_2.02-1_i386.deb
sudo apt-get install -f
sudo dpkg --unpack gscan2pdf_0.9.19_all.deb
sudo apt-get install -f

Il suffit de copier ce script dans un fichier texte (clic droit sur le bureau : Créer un document —> Fichier vierge) et de le rendre exécutable par un clic droit sur le nouveau fichier (Permissions —> Autoriser l’exécution du fichier comme un programme).

Bugs rencontrés

Après installation des deux programmes, Tesseract et gscan2pdf, faites des tests de ROC avec des images dans différents formats en lançant gscan2pdf depuis le Terminal, en tapant tout simplement : gscan2pdf.

Vous obtiendrez de cette manière de précieuses informations pour la résolution des erreurs.

Images .png, .jpg, ... non traitées en ROC : format invalide

1. Passez un traitement "unpaper" sur l’image et relancez la ROC. unpaper doit certainement repasser l’image au format .tif... Merci Dzef pour cette astuce !

2. Installez toute la série de libtiff depuis Synaptic (Système —> Administration —> Gestionnaire de paquets Synaptic).

Jeffrey Ratcliffe (nous ne lui en tenons aucunement rigueur) a oublié de mettre, parmi les dépendances, libtiff :

I forgot to add the libtiff dependency. That means that if you do not have libtiff installed, you will get garbage. I will fix this soon.

Image non traitée ou seulement en anglais :

Le sujet ouvert sur le forum Ubuntu-FR à propos de l’OCR a permis de régler le bug concernant la reconnaisance du français (et autres langues).

En effet, Sorbus et moi-même avons fait des tests (voir les tests en commentaire) qui ont abouti aux mêmes résultats : en l’état, l’installation ne reconnaît pas réellement le français.

Sorbus a su lire correctement la réponse que Jeffrey Ratcliffe m’avait adressée et a trouvé la parade qui permet de rendre le couple Tesseract/gscan2pdf pleinement efficace en français.

Merci grandement Sorbus !

If tesseract 2.01 is compiled from source, it puts the language files by default in /usr/share/tessdata. When I did the Debian/Ubuntu packaging, I put them in /usr/share/tesseract-ocr/tessdata, and that is where gscan2pdf v0.9.19 looks to see which languages are installed. In the upcoming release, gscan2pdf will look in both paths.

Voici la traduction de Sorbus :

Si tesseract 2.01 est compilé de la source, il met les fichiers de langue par défaut dans /usr/share/tessdata. Quand j’ai fait l’emballage Debian/Ubuntu, je les ai mis dans /usr/share/tesseract-ocr/tessdata et c’est où gscan2pdf v0.9.19 regarde pour voir quelles langues sont installées. Dans la sortie prochaine, gscan2pdf regardera dans les deux chemins.

Autrement dit, si vous obtenez le message d’erreur suivant :

Unable to load unicharset file /usr/share/tessdata/fra.unicharset

Unable to load unicharset file /usr/share/tessdata/eng.unicharset

ou le message d’erreur suivant :

Unable to load unicharset file /usr/local/share/tessdata/eng.unicharset

Unable to load unicharset file /usr/local/share/tessdata/fra.unicharset

A. Vous n’avez pas installé Tesseract avec le paquet de b52 (proposé ici)

Alors, dans ce cas, il suffit de télécharger les fichiers de langue et de les placer dans /usr/share/tessdata comme suit :

wget http://tesseract-ocr.googlecode.com...
tar -zxvf tesseract-2.00.eng.tar.gz
cd tessdata
sudo cp * /usr/share/tessdata (ou /usr/local/share/tessdata selon l’erreur)
sudo rm -r tessdata
sudo rm tesseract-2.00.eng.tar.gz

Répétez la même procédure avec tesseract-2.00.fra.tar.gz

wget http://tesseract-ocr.googlecode.com...
...

Pour Debian Etch : Après la commande ’cd’ identifiez-vous en tant que ’root’ avec ’su’ puis enchaîner les commandes sans ’sudo’.

Merci Dom !

B. Vous avez installé Tesseract avec le paquet de b52 (proposé ici)

Si vous avez installé Tesseract avec le paquet de b52, il suffit de créer deux liens symboliques [solution très élégante suggérée par gldx] pour résoudre le problème de la reconnaissance de la langue française :

1. le premier avec les fichiers du répertoire /usr/local/share/tessdata vers /usr/share ou inversement selon le message d’erreur que vous obtenez ;

2. le deuxième vers le répertoire /usr/share/tesseract-ocr (qu’il faut créer) dans lequel gscan2pdf cherche les fichiers de langue :

Pour Ubuntu

sudo ln -s /usr/share/tessdata /usr/local/share (ou inversement)
sudo mkdir /usr/share/tesseract-ocr
sudo ln -s /usr/share/tessdata /usr/share/tesseract-ocr

Pour Debian Etch

su
Mot de passe :
ln -s /usr/share/tessdata /usr/local/share (ou inversement)
mkdir /usr/share/tesseract-ocr
ln -s /usr/share/tessdata /usr/share/tesseract-ocr
exit

Normalement, la création de ces deux liens symboliques avec le répertoire /tessdata contenant les fichiers de langue devrait régler les problèmes de ROC.

Et voilà le résultat :

PNG - 16.4 ko

Merci Sorbus !

Bug d’affichage : langue anglaise séléctionnée

Contrairement à ce que nous pensions, sur Ubuntu 7.10 et Debian Etch, la reconnaissance de la langue française n’est pas active s’il ne vous est pas possible de la sélectionner.

Autrement dit, si la seule langue disponible est l’anglais, comme sur la capture ci-dessous, cela signifie tout bonnement que la ROC en français ou dans d’autres langues que l’anglais n’est pas active !

PNG - 16.5 ko

Installation sous Debian Lenny

Ben... il n’y a rien à faire ! Pour l’installation, utilisez vos outils habituels, apt-get, Synaptic, ... Et admirez le résultat :

JPEG - 42.9 ko

Certains tests (en anglais) ont montré qu’une image de 400 dpi donnait des résultats plus que décents !

Installation & ROC sous ArchLinux

Frédéric Bezies a adapté l’article ci-dessus pour installer le duo de choc gscan2pdf+Tesseract sous ArchLinux. Reportez-vous à son billet pour plus de précisions.

Pour la reconnaissance du français (et autres langues) sous ArchLinux, voir le commentaire de FredBezies ci-dessous ou son billet sur la gestion des langues.

Merci Fred pour les tests et les infos !

Installation & ROC sous Fedora Core 8

C’est à Leonux que l’on doit cette installation et les tests.

Installez les paquets suivants

  • tesseract 2.01-1.fc8
  • tesseract-langpack-fr.noarch 2.00-2.fc8
  • gscan2pdf.noarch 0.9.19-1.fc8

Gestion des langues

Il faut créer le répertoire /usr/share/tesseract-ocr puis le lien symbolique :

# mkdir /usr/share/tesseract-ocr
# ln -s /usr/share/tesseract/tessdata /usr/share/tesseract-ocr/

Installation & ROC sous Mandriva 2008

L’installation et les tests effectués par Ulhume sont tout aussi concluants.

L’installation est assez simple :

# urpmi tesseract gscan2pdf

Pour les détails de l’installation et des tests reportez-vous à l’excellent billet d’Ulhume.

Merci Ulhume pour ce retour et pour ces tests rondement menés.

En conclusion...

Comme l’indique le premier message d’erreur, les fichiers du répertoire /tessdata devraient se trouver dans /usr/local/share.

Basiquement, si l’on reprend ce que dit Jeffrey Ratcliffe, les fichiers du répertoire /tessdata sont bien là où ils devraient être (lol) :

If tesseract 2.01 is compiled from source, it puts the language files by default in /usr/share/tessdata.

Pourtant, ils sont réclamés en /usr/local/share... Et c’est de là que vient tout le problème.

Le développeur de gscan2pdf les a placés quant à lui dans /usr/share/tesseract-ocr...

En résumé, trois localisations différentes de /tessdata :

1. par défaut : /usr/share.

2. celle que l’on trouve sur Ubuntu (voir les commentaires de Sorbus, entre autres) : /usr/local/share.

3. celle de gscan2pdf développée par Jeffrey Ratcliffe : /usr/share/tesseract-ocr.

Pour simplifier l’installation, c’est cela qu’il faudrait changer, unifier.

Merci à tous pour vos commentaires, vos tests, vos suggestions...


Edit : Un sujet est ouvert à propos de l’OCR sous Linux sur le forum Ubuntu-Fr.

De nombreuses solutions ont été testées et les résultats obtenus vont dans le même sens : Tesseract !

Sorbus a rencontré quelques difficultés avec son scanner. L’installation de certaines dépendances (djvulibre-bin, unpaper, ...) semble les avoir toutes réglées.

Comme le dit très justement Sorbus : "il reste à trouver quelles sont les meilleurs options pour une reconnaissance optimale. Puis à travailler sur l’amélioration/l’apprentissage..."


Commentaires  forum ferme

Logo de zarer (Christophe Gallaire)
dimanche 6 janvier 2008 à 16h46 - par  zarer (Christophe Gallaire)

Salut yodagoo,

Tu peux nous dire quelle est ta distrib et nous donner le résultat quand tu lances gscan2pdf depuis le terminal après avoir lancé la reconnaissance de caractères ?

As-tu essayé la reconnaissance par Tesseract en ligne de commandes ?

@+

Logo de yodagoo
dimanche 6 janvier 2008 à 16h18 - par  yodagoo

Bonjour et merci pour vos articles

j’ai bien suivi les procédures mais cela ne fonctionne pas.
installation par ma méthode de b52
je lance gscan2pdf, j’importe un fichier essai.tif converti par imagemagick depuis essai.pdf
Je n’ai pas la possibilité de reconnaissance en français (que l’anglais)
pourtant j’ai bien copié tessdata dans /usr/local/share...
pas de message d’erreur
le texte obtenu donne quelques caractères (une vingtaine) sans rapport avec la page image initiale

merci de votre aide

Navigation

Articles de la rubrique