Nous traiterons ici bien évidement une solution libre, basé sur Tesseract.
Petit extrait de chez http://doc.ubuntu-fr.org/tesseract-ocr : 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.
C'est simple, j'ai tout testé : Gocr c'est nul. Il prend énormément de CPU, le résultat est médiocre. Voilà pour le tour d'horizon des moteurs d'OCR. Ensuite, des interfaces, il y en a plein, mais aucune ne permet de choisir facilement la zone à scanner, à part XSane.
Bon, tout ça c'est bien, mais si je veux faire de l'OCR « facile » pour tous, la ligne de commande, bof. On va donc utiliser… la ligne de commande, mais scriptée.
En fait, XSane, l'outil de base pour scanner sur Ubuntu, est très puissant : on peut associer n'importe quelle commande pour n'importe quelle action. J'avoue avoir testé plusieurs solutions avec des logiciels divers, mais j'aime bien rester sur XSane, le couteau Suisse du scan.
Si vous n'avez pas XSane :
$ sudo aptitude install xsane
Il est aussi nécessaire d'installer Image Magick, pour préparer les images avant de les passer à Tesseract : ne vous inquiétez pas, ça sera transparent pour vous :
$ sudo aptitude install imagemagick
Sous Ubuntu, il faut installer :
$ sudo aptitude install tesseract-ocr tesseract-ocr-fra
« tessertact-ocr » étant le moteur d'OCR, le paquet « tesseract-ocr-fra » permet de reconnaître les caractères français. Il y a aussi les paquets suivants avec d'autres langues :
Bref, il n'y en a pour presque tous les goûts !
Ouvrez votre éditeur de texte préféré et copiez-collez le contenu de ceci :
#!/bin/bash # # ############################################################################## # # xsane2tess 1.0 # # *** tesseract made simple *** # # ############################################################################## # # xsane2tess is a TesseractOCR wrapper to be able to use tesseract with xsane # # # TEMP_DIR=~/tmp/ # folder for temporary files (TIFF & tesseract data) ERRORLOG="xsane2tess.log" # file where STDERR goes if [[ -z "$1" ]] then echo "Usage: $0 [OPTIONS] xsane2tess converts files to TIF, scans them with TesseractOCR and outputs the text in a file. OPTIONS: -i <file1> define input file (any image-format supported) -o <file2> define output-file (*.txt) -l <lang> define language-data tesseract should use Progress- & error-messages will be stored in this logfile: $TEMP_DIR$ERRORLOG xsane2tess depends on - ImageMagick http://www.imagemagick.org/ - TesseractOCR http://code.google.com/p/tesseract-ocr/ Some coding was stolen from 'ocube' http://www.geocities.com/thierryguy/ocube.html " exit fi # get options... while getopts ":i:o:l:" OPTION do case $OPTION in i) # input filename (with path) FILE_PATH="$OPTARG" ;; o ) # output filename FILE_OUT="$OPTARG" ;; l ) # Language-selection TES_LANG="$OPTARG" ;; esac done # redirect STDOUT to FILE_OUT exec 1>>$FILE_OUT # redirect STDERR to ERRORLOG exec 2>>$TEMP_DIR$ERRORLOG # strip path from FILE_PATH, use filename only IN_FILE=${FILE_PATH##*/} TIF_FILE="$TEMP_DIR""${IN_FILE%.*}".tif TXT_FILE="$TEMP_DIR""${IN_FILE%.*}" # converting image into TIFF (ImageMagick) convert "$FILE_PATH" -compress none "$TIF_FILE" 1>&2 # start OCR (tesseract expands output with *.txt) tesseract "$TIF_FILE" "$TXT_FILE" -l "$TES_LANG" 1>&2 # STDOUT scanned text => FILE_OUT cat "$TXT_FILE".txt # delete graphic file after use rm "$TIF_FILE" # delete tesseract output rm "$TXT_FILE".txt
Enregistrez le avec comme nom xsane2tess, et rendez-le exécutable :
$ chmod +x xsane2tess
Copiez-le dans /usr/bin :
$ sudo cp xsane2tess /usr/bin
Comme ça, il est accessible directement dans un terminal, ce qui servira pour être appelé plus tard par XSane.
Le script à besoin d'un répertoire dans votre dossier personnel pour fonctionner, donc :
$ mkdir ~/tmp
Ouvrir XSane : Applications → Graphisme → Scanneur d'images XSane
Dans Préférences → Configuration → Onglet « OCR » :
Bien entendu, le « -l fra » précise que c'est du français.
Vous pouvez donc scanner un document, en chosissant comme type « TEXT ». On obtient de bons résultats en scannant à 300 ppi, noir et blanc (ou encore appelé « trait »).
Le gros avantage dans un document complexe (exemple : livre), vous pouvez sélectionner dans l'aperçu la zone précise que vous voulez analyser.
La souplesse d'XSane, avec la puissance de Tesseract : un joli duo !
J'ai passé une soirée à trouver une solution viable pour l'OCR d'un bouquin. Merci au wiki d'Ubuntu-Fr (et à Sorbus, l'auteur de l'article) !