Comment faire de l'OCR avec Tesseract ?

Article publié le mercredi 22 mai 2024 et mis à jour le lundi 8 juillet 2024.

Comment faire de l'OCR avec Tesseract ?

Vous essayez de récupérer le texte d’une image en OCR mais le texte est difficile à lire ? Quelles sont les différentes options pour reconnaître du texte avec Tesseract ?

Tesseract est un logiciel de Reconnaissance Optique de Caractères OCR qui permet de lire du texte à partir d’une image ou d’un document. Il s’utilise en ligne de commande ou dans du code comme en Python avec PyTesseract. Tesseract est personnalisable et supporte plus de 100 langues dont le français.

D’ailleurs si vous voulez en apprendre plus sur PyTesseract, j’ai fait une vidéo pour vous expliquer la reconnaissance optique de caractères.

Découvrons comment lire correctement vos images avec Tesseract !

Comment installer Tesseract ?

Vous pouvez trouver toutes les options d’installation sur la documentation officielle de Tesseract.

Voici un résumé de l’essentiel en français, que vous soyez sur Windows, Linux ou macOS pour installer Tesseract.

Comment installer Tesseract sur Windows ?

Pour installer Tesseract sur Windows, il faut télécharger le fichier executable que vous trouverez sur le GitHub de UB Mannheim (installateurs .exe 64 ou 32 bits).

Lancer l’installateur :

Installer Tesseract sur Windows

Acceptez la license :

License de Tesseract

Choisissez le chemin d’installation (copiez le dans le presse-papier, on va en avoir besoin juste après) :

Installation Tesseract chemin d'installation

Ajoutez les fichiers de langues si vous voulez lire du texte en français (additional language data) :

Tesseract composants fichiers langues etc

Suivant :

Installation Tesseract utilisateurs

Suivant :

Ajouter Tesseract au menu démarrer Windows

Suivant :

Installation terminée Tesseract

Fermer :

Fin de l'installation de Tesseract

Maintenant si vous lancer tesseract dans un terminal, vous aurez sûrement cette erreur.

Erreur dans le powershell, tesseract n'est pas dans le path

C’est parce qu’une fois Tesseract d’installé sur votre machine, vous devrez l’ajouter à vos variables d’environnement.

Pour ouvrir vos variables d’environnement, aller dans l’explorateur et tapez “environ”.

Panneau de configuration pour modifier les variables d'environnement système

Puis dans Propriétés Système puis dans Avancé et en bas de fenêtre vous trouverez Variables d’Environnements.

alt text

Cliquez dessus et dans la deuxième partie de la nouvelle fenêtre, Variables système, rendez-vous sur la ligne Path puis appuyez sur Modifier.

Modifier variable environnement path

Ensuite faites Parcourir

Modifier la variable d'environnement Path : parcourir

… et allez chercher le dossier de votre installation Tesseract-OCR (sûrement dans C:\Program Files\Tesseract-OCR).

Choisir le dossier d'installation de Tesseract

Et vous devriez avoir le chemin listé dans vos variables d’environnement Path.

Vérifier le chemin d'installation de Tesseract

Si tout s’est bien passé, vous pouvez maintenant utiliser Tesseract en ligne de commande 🎉.

Tesseract en ligne de commande avec PowerShell

Comment installer Tesseract sur macOS ?

Sur Mac, vous pouvez installer Tesseract avec Homebrew ou MacPorts:

Avec Homebrew :

brew install tesseract

Et si vous voulez faire de l’OCR sur des images en différentes langues, vous pouvez télécharger les packs de langues avec :

brew install tesseract --all-languages

Avec MacPorts :

sudo port install Tesseract

Et pour installer une langue en spécifique, comme le français, vous pouvez faire :

sudo port install tesseract-fra

Comment installer Tesseract sur Linux ?

Pour installer Tesseract sur Ubuntu, on peut simplement utiliser apt.

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev

Et si apt ne trouve pas le package, ajoutez deb http://archive.ubuntu.com/ubuntu bionic universe en fin de fichier /etc/apt/sources.list :

sudo vi /etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu bionic universe

Comment utiliser Tesseract ?

Pour utiliser Tesseract, on tape tesseract suivi du chemin vers une image et éventuellement des options de lecture :

tesseract mon_image.jpg
tesseract mon_image.png
tesseract mon_document.pdf

tesseract mon_image.jpg -l fra
tesseract mon_image.jpg --oem 2
tesseract mon_image.jpg --psm 2
tesseract mon_image.jpg -l fra --oem 1 --psm 8

Comment lire du texte en français avec Tesseract ?

Pour aider Tesseract à reconnaître les mots en français, vous pouvez télécharger un fichier de langue sur le GitHub de Tesseract.

Voici le lien direct vers le fichier pour le français : https://github.com/tesseract-ocr/tessdata/blob/main/fra.traineddata

Ensuite, vous pourrez utiliser l’option langue avec le flag -l suivi de fra pour le français.

Ce qui donne :

tesseract <chemin_vers_l_image> -l fra

Quelles sont les options de lecture avec Tesseract ?

Tesseract prend différentes option dans sa ligne de commande en lui passant des arguments. Il est par exemple possible de définir le moteur OCR avec —oem, le mode de segmentation avec —psm, la langue avec -l ou encore le nombre de pixels distincts avec —dpi suivi des valeurs numériques voulues.

Toutes ces options fonctionnent aussi avec les bibliothèques basées sur Tesseract comme PyTesseract.

On peut découvrir tout ça en explorant l’aide de tesseract avec la commande tesseract --help-extra.

Tesseract dispose de plusieurs options qu’on peut lui passer comme :

--tessdata-dir PATH Spécifier l'emplacement du chemin tessdata.
--user-words PATH Spécifier l'emplacement du fichier des mots utilisateurs.
--user-patterns PATH Spécifier l'emplacement du fichier des modèles utilisateurs.
--dpi VALUE Spécifier le DPI de l'image d'entrée.
--loglevel LEVEL Spécifier le niveau de journalisation. LEVEL peut être
ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL ou OFF.
-l LANG[+LANG] Spécifier la ou les langues utilisées pour l'OCR.
-c VAR=VALUE Définir la valeur des variables de configuration. (Plusieurs arguments -c sont autorisés.)
--psm NUM Spécifier le mode de segmentation de page
--oem NUM Spécifier le mode du moteur OCR
REMARQUE : Ces options doivent apparaître avant tout fichier de configuration.

Comment changer le mode de segmentation de page avec Tesseract ?

Et aussi d’un flag de segmentation -psm qui prend les modes de segmentation suivants :

  • 0 Détection de l’orientation et du script (OSD) uniquement.
  • 1 Segmentation de page automatique avec OSD.
  • 2 Segmentation de page automatique, mais sans OSD ni OCR. (non implémenté)
  • 3 Segmentation de page entièrement automatique, mais sans OSD. (Par défaut)
  • 4 Supposer une seule colonne de texte de tailles variables.
  • 5 Supposer un seul bloc uniforme de texte aligné verticalement.
  • 6 Supposer un seul bloc uniforme de texte.
  • 7 Traiter l’image comme une seule ligne de texte.
  • 8 Traiter l’image comme un seul mot.
  • 9 Traiter l’image comme un seul mot dans un cercle.
  • 10 Traiter l’image comme un seul caractère.
  • 11 Texte clairsemé. Trouver autant de texte que possible sans ordre particulier.
  • 12 Texte clairsemé avec OSD.
  • 13 Ligne brute. Traiter l’image comme une seule ligne de texte, en contournant les astuces spécifiques à Tesseract.
tesseract <chemin_vers_l_image> --psm 12

Quels sont les moteurs de reconnaissance optique de caractères ?

En passant le flag --oem et un nombre à Tesseract, vous pouvez choisir quel moteur OCR choisir.

Vous pouvez passer à Tesseract le nombre :

  • 0 est pour utiliser le moteur legacy seulement
  • 1 est pour utiliser le moteur de reseau neuronal LSTM seulement
  • 2 est pour utiliser le moteur legacy et les moteurs LSTM
  • 3 est l’option par défaut, Tesseract va prendre ce qu’il trouve

Pour vous retrouver avec une commande comme ceci :

tesseract <chemin_vers_l_image> --oem 1

Les options de lecture image_to_string en Python avec PyTesseract

Avec PyTesseract, on peut aussi utiliser ces options dans la fonction presserait.image_to_string avec le paramètre optionnel config.

import pytesseract

mon_texte = pytesseract.image_to_string(image, config="--psm 4")
Comment Coder

Je m'appelle Thomas. J'ai commencé à coder dans mon enfance. Depuis ma sortie de la première promo de l'École 42, j'ai développé des centaines d'applications et sites web. Sur ce blog, je vous donne les meilleurs conseils et astuces pour apprendre comment apprendre à coder efficacement.