Convertir un document scanné en texte

Ayant perdu un document texte d’une vingtaine de pages, il a fallu se débrouiller pour le reconstituer à partir d’une version imprimée, étant pressé, et ne m’étant pas frotté aux logiciel OCR auparavant, une petite recherche sur google ne donne pas grand chose d’exploitable, pas vraiment de logiciels avec une interface conviviale pour faire de la reconnaissances de caractères :/

Tant pis, je me tourne vers la ligne de commande, il doit bien y avoir un soft, même alpha qui fera l’affaire, c’est ainsi qu’après avoir essayé 2, 3 logiciel, je suis tombé sur tesseract qui a fait ni plus ni moins que son boulot :)

Bref, passons à la pratique… Tout d’abord, le document à faire reconnaitre est très simple, c’est un programme pour commande numérique de la forme:

N2 G90 G94 G40 GSO G17 G0
N4 G91 G3O G0 Z0.
N6 G30 X0. Y0.

En somme, que des caractères d’imprimerie, rien de bien sorcier pour un programme OCR même « novice ».

Tout d’abord, il faut scanner le document, scanner qui sauvegarde le document en PDF. Le fichier PDF contient en fait les images des pages scannées.

Première difficulté, le logiciel en question ne reconnait que les fichiers au format TIFF (là, c’est peut être du à une lecture rapide de la documentation, mais c’était pressé), qu’à cela ne tienne, il y a bien une commande qui exporte les images depuis le PDF, en l’occurrence, j’ai utilisé pdfimages qui fait partie du paquet poppler.

Deuxième difficulté, pdfimages sauvegarde les images avec un au début du nom (pas eu le temps de chercher pourquoi), il suffit de renommer.

Troisième difficulté, pdfimages (toujours lui) sauvegarde les images avec une rotation de 90° (j’ai pas vraiment compris pourquoi…), je vais pas m’arreter pour si peu, une petit coup de convert permet de les remettre dans la bonne orientation.

Et voilà, reste plus qu’à lancer la commande concernant tesseract et à recoller les différents fichiers :)

Récapitulatif

Pour Archlinux par exemple, il faut installer (si c’est pas le cas):

pacman -S tesseract imagemagick poppler

Document scanné: doc.pdf
Répertoire des images exportés: images
Document résultat: doc.txt

Extraction des images:

mkdir images
pdfimages doc.pdf images

Renommer et retourner les images:

cd images
for fichier in *.pbm; do mv -- $fichier ${fichier/-/}; done
for fichier in *.pbm; do convert $fichier -rotate 270 ${fichier/.pbm/.tif}; done

Transformer les images en texte:

for fichier in *.tif; do tesseract $fichier ${fichier/.tif/.txt}; done

Et enfin, recoller le tout:

cat *.txt > doc.txt

Bon, il y a peut être plus simple ou plus rapide, mais dans l’urgence, c’est que j’ai trouvé de mieux, voilà, reste plus qu’à vérifier le tout et c’est plié.