OCR

Reconnaissance de caractères: utiliser Tesseract avec OpenCV

Nous avons vu la semaine dernière comment utiliser tesseract dans un invité de commande. Nous avons également vu que de petites modifications pouvaient diminuer les performances de la reconnaissance de caractères. Il nous est alors venu à l’idée de réaliser un traitement de l’image afin d’améliorer le résultat. Nous allons donc utiliser OpenCV pour effectuer les prétraitements avant d’utiliser la reconnaissance de caractères.

Sans prétraitements ….

Il sera nécessaire pour cela d’utiliser pytesseract, une librairie qui permet d’appeler Tesseract depuis Python. Une des problématiques rencontrée dans l’utilisation de cette librairie avec OpenCV est que pyTesseract accepte comme entrée une image au format PIL (Picture Imaging Library) et non une image Numpy. Il sera donc nécessaire de convertir notre image afin de pouvoir l’exploiter avec OpenCV.

Installation de pytesseract

L’installation de pytesseract se fait sans problème grâce à la commande:

pip3 install pytesseract

Pendant l’installation, Pillow sera installé. Il s’agit d’un fork de PIL, car cette librairie n’est plus maintenue depuis 2009 et surtout non disponible avec Python3.

Reconnaissance de caractères avec OpenCV

Nous pouvons donc passer au programme !
Nous commençons par importer les librairies nécessaires: cv2, PIL et pytesseract

import cv2
from PIL import Image
import pytesseract

image = cv2.imread('bienvenue.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

L’étape qui suit est logiquement le chargement de l’image (ligne 5), puis de convertir l’image en niveau de gris (ligne 6).

Afin d’enlever le trait, nous réalisons un seuillage binaire afin d’enlever toute partie dont la valeur des pixels est supérieure à zéro (ligne 7)

_, gray = cv2.threshold(gray, 10, 255,cv2.THRESH_BINARY)

Pour l’instant rien de nouveau.

Il est maintenant nécessaire de passer notre image qui est de type ‘numpy.ndarray’ en une image lisible par pytesseract, c’est-à-dire une image de type ‘PIL.Image’. Pour ce faire, nous appelons la fonction ‘fromarray’ de PIL (ligne 9). Cette fonction permet d’importer une image depuis une matrice. Ça tombe bien c’est ce que nous voulons!

Notre image au bon format, nous pouvons appeler Tesseract (ligne 10).

img = Image.fromarray(gray)
txt = pytesseract.image_to_string(img)
print(txt)

Comme son nom l’indique, cette fonction convertie une image vers une chaine de caractères. Il nous reste plus qu’à afficher les caractères extraits (ligne 11).

Mission accomplie !

Nous avons vu aujourd’hui comment utiliser tesseract en python avec l’utilisation de pytesseract. Cette librairie nous a permis de pouvoir utiliser OpenCV afin de réaliser des prétraitements permettant d’améliorer la reconnaissance de caractères. Il est alors possible d’utiliser cette bibliothèque dans d‘autres projets

Florent

Share
Published by
Florent

Recent Posts

Installer OpenCV 5 sur MacOS

Vous avez commencé un projet de vision par ordinateur ou de traitement d'images ? Alors,…

3 semaines ago

[Étape 3] Création d’un Photobooth – Finalisation

Nous avons vu dans les précédents articles de quel matériel nous avions besoin pour créer…

4 semaines ago

[Étape 2] Création d’un photobooth – Logiciel

Nous avons préparé la semaine dernière toute la partie matérielle du photobooth. Maintenant nous allons…

1 mois ago

[Étape 1] Création d’un photobooth – Hardware

J'avais il y a quelques années réalisé un photobooth, afin de permettre aux convives de…

1 mois ago

Conduite autonome : comment détecter les lignes d’une route

Détecter les voies de circulation est une étape incontournable pour la réalisation d’un système de…

2 mois ago

Installez OpenCV 4 sur macOs

Vous avez commencé un projet de vision par ordinateur ou de traitement d'images ? Alors,…

4 mois ago