Vous cherchez un outil capable de reconnaître des caractères dans une image (par exemple scannée) ? Vous êtes donc en recherche d’un OCR et nous allons voir comment utiliser dans cet article l’un des plus connu: Tesseract !
Qu’est-ce que Tesseract ?
Tesseract est un outil informatique de type O.C.R. (Optical Character Recognition).
Un OCR à pour rôle de convertir une image bidimensionnelle contenant du texte (texte imprimé ou manuscrit) à partir de sa représentation d’image en texte lisible et surtout exploitable par un ordinateur. D’un point de vue de son fonctionnement un OCR se décompose généralement en plusieurs sous-processus exécuter de manière séquentielle.
Voici les étapes courantes :
- Prétraitement de l’image
- Localisation de texte
- Segmentation des caractères
- Reconnaissance des caractères
- Post-traitement
A noter qu’un OCR (ici tesseract) peut analyser d’autres type de fichiers non structurés. L’objectif ici n’est pas d’expliquer le fonctionnement d’un OCR mais surtout de vous faire comprendre que son mode de fonctionnement peut être assez complexe. Donc soyez indulgent quand vous ne trouverez pas immédiatement le résultat attendu 😉

Pour la petite histoire (de tesseract) je me reporterai simplement à Wikipédia :
Conçu par les ingénieurs de Hewlett Packard de 1985 à 1995, son développement est abandonné pendant les dix années suivantes ; en 2005, les sources du logiciel sont publiées sous licence Apache et Google poursuit son développement. Initialement limité aux caractères ASCII, il reconnaît les caractères UTF-8 dans plus de 100 langues.
Wikipédia
Installation de l’environnement
Installation de Tesseract
Bien sur vous trouverez pleins d’informations sur la manière d’installer Tesseract sur GitHub (https://github.com/tesseract-ocr/tesseract) et son wiki officiel. Néanmoins et si vous êtes comme moi un fervent utilisateur d’Ubuntu je vais vous guider dans l’installation de Tesseract et de pytesseract (le wrapper Python pour Tesseract).
Pour commencer il faut télécharger les binaires des tesseract, rien de plus simple, ouvrez un terminal et lancez les deux commandes suivantes :
# sudo apt install tesseract-ocr
# sudo apt install libtesseract-dev
Avant d’installer pytesseract je vous propose d’installer les fichiers pays (data files). Personnellement je vais récupérer les langues Française, Anglaise (par défaut bien sur) et espagnole. pour cela lancez les commandes suivantes :
# wget https://github.com/tesseract-ocr/tessdata/archive/master.zip
# unzip master.zip
# cp tessdata-master/fra.traineddata /usr/share/tesseract-ocr/4.00/tessdata/
# cp tessdata-master/eng.traineddata /usr/share/tesseract-ocr/4.00/tessdata/
# cp tessdata-master/spa.traineddata /usr/share/tesseract-ocr/4.00/tessdata/
Installation de pytesseract
Voici tout d’abord le site officiel de cette API : https://pypi.org/project/pytesseract/
Une simple commande dans un terminal suffit alors pour installer la librairie (en utilisant PIP) :
# pip install pytesseract
Note : Les fichiers (notamment pour les langues sont pour la plupart copiés dans /usr/share/tesseract-ocr/4.00
Premier test !
Vérifions tout d’abord que notre installation est opérationnelle et lançons un premier test en utilisant la ligne de commande. Voici le fichier (vraiment très simple) que nous allons utiliser dans un premier temps :

Ouvrons un terminal et tapons dedans :
# tesseract /home/benoit/git/python_tutos/tesseract/image_1.png fichier_resultat -l fra
Tesseract Open Source OCR Engine v4.0.0 with Leptonica
Cette ligne de commande récupère le premier argument (fichier à traiter), et place le contenu interprété dans le second argument (ici le fichier fichier_resultat.txt) en utilisant la langue française.
Ouvrons donc le fichier résultat :
Ceci est un premier test
Utilisons Python
Initialisation avec pytesseract
Maintenant que tesseract est opérationnel nous allons faire notre premier test avec pytesseract pour voir comment nous pourrons exploiter des documents non structurés dans un programme Python.
Importons tout d’abord le module (installé préalablement via pip dans le paragraphe ci-dessus) :
try:
from PIL import Image
except ImportError:
import Image
import pytesseract
Premier test
Ensuite effectuons un premier test en demandant à tesseract d’analyser le même fichier (j’utilise ici Jupyter, ajoutez un print si ce n’est pas votre cas) :
print(pytesseract.image_to_string(Image.open('/home/benoit/git/python_tutos/tesseract/image_1.png')))
L’output doit vous dire :
'Ceci est un premier test'
Si c’est bien le cas cela veut dire que votre installation est totalement opérationnelle et que vous avez analysé votre première image.
Méthodes de pytesseract
Si vous avez une erreur vous disant que tesseract n’est pas installé ou que la commande ne trouve pas le fichier exécutable, celà signifie certainement que l’exécutable n’est pas dans votre Path. Vous devez alors précisez où se trouve tesseract explicitement via la commande préalable :
<pre class="wp-block-syntaxhighlighter-code">pytesseract.pytesseract.tesseract_cmd = r'<Chemin complet pour lancer l exécutable en ligne de commande>'</pre>
récupérons maintenant plus d’information en utilisant les autres méthodes possibles de l’objet pytesseract :
- get_tesseract_version() Renvoie la version de Tesseract installée dans le système.
- image_to_string() Renvoie le résultat d’un OCR Tesseract exécuté sur l’image en chaîne
- image_to_boxes() Retourne un résultat contenant des caractères reconnus et leurs limites de boîte
- image_to_data() Renvoie le résultat contenant les limites de la boîte, les confidences et d’autres informations. Nécessite Tesseract 3.05+. Pour plus d’informations, veuillez consulter la documentation Tesseract TSV
- image_to_osd() Renvoie un résultat contenant des informations sur l’orientation et la détection de script.
- run_and_get_output() Renvoie la sortie brute de Tesseract OCR. Donne un peu plus de contrôle sur les paramètres envoyés à tesseract.
Récupération des éléments détectés
Commençons par récupérer les coordonnées des éléments textuels de l’image :
print(pytesseract.image_to_data(Image.open('/home/benoit/git/python_tutos/tesseract/image_1.png')))
level page_num block_num par_num line_num word_num left top width height conf text
1 1 0 0 0 0 0 0 1920 1080 -1
2 1 1 0 0 0 469 458 738 60 -1
3 1 1 1 0 0 469 458 738 60 -1
4 1 1 1 1 0 469 458 738 60 -1
5 1 1 1 1 1 469 458 122 48 96 Ceci
5 1 1 1 1 2 621 461 89 45 95 est
5 1 1 1 1 3 737 470 67 36 95 un
5 1 1 1 1 4 835 458 207 60 96 premier
5 1 1 1 1 5 1051 461 156 45 96 test
Dorénavant vous pourrez non seulement traiter les éléments textuels mais aussi leur placement dans l’image en utilisant les coordonnées fournies par cette commande.
Quid de l’orientation
Pour récupérer d’autres informations comme l’orientation par exemple, utilisez cette commande :
print(pytesseract.image_to_osd(Image.open('/home/benoit/git/python_tutos/tesseract/image_2.png')))
Page number: 0
Orientation in degrees: 0
Rotate: 0
Orientation confidence: 2.01
Script: Latin
Script confidence: 11.11
Conclusion
Nous venons de voir comment utiliser tesseract dans un contexte extrêmement simple (sans bruits). Nous verrons dans un article ultérieur comment faire une utilisation plus avancée de tesseract dés lors que l’image n’est pas aussi parfaite que cet exemple.
En effet si tesseract est très efficace sur des images « propres » il n’en n’est pas de même dès lors que du bruit s’ajoute. Une image barrée, avec un quadrillage, ou même des changements de couleurs perturberons notre bel outil d’OCR pour produire des résultats erronés. Un travail préalable s’avérera donc nécessaire pour pouvoir retirer tous ces bruits et donc récupérer et interpréter les textes de nos images.
Aller plus loin avec tesseract ici >
Ingénieur en informatique avec plus de 20 ans d’expérience dans la gestion et l’utilisation de données, Benoit CAYLA a mis son expertise au profit de projets très variés tels que l’intégration, la gouvernance, l’analyse, l’IA, la mise en place de MDM ou de solution PIM pour le compte de diverses entreprises spécialisées dans la donnée (dont IBM, Informatica et Tableau). Ces riches expériences l’ont naturellement conduit à intervenir dans des projets de plus grande envergure autour de la gestion et de la valorisation des données, et ce principalement dans des secteurs d’activités tels que l’industrie, la grande distribution, l’assurance et la finance. Également, passionné d’IA (Machine Learning, NLP et Deep Learning), l’auteur a rejoint Blue Prism en 2019 et travaille aujourd’hui en tant qu’expert data/IA et processus. Son sens pédagogique ainsi que son expertise l’ont aussi amené à animer un blog en français (datacorner.fr) ayant pour but de montrer comment comprendre, analyser et utiliser ses données le plus simplement possible.
4 Replies to “Débuter avec Tesseract”