L’extraction de données à partir d’images est un domaine passionnant qui a un large éventail d’applications. De la détection de points de repère et de l’étiquetage des images à la création de moteurs de recherche pour trouver des images similaires en fonction de leur contenu, il existe de nombreuses possibilités pour créer des services passionnants pour nos clients. Ce blog explique comment convertir une image en texte en Python.
Qu’est-ce que l’OCR :
La reconnaissance optique de caractères, ou OCR en abrégé, est le processus de conversion d’une image de texte en texte codé par machine. C’est l’un des domaines les plus importants de l’apprentissage automatique. Et ce n’est pas seulement pour les passionnés d’apprentissage automatique, il a une tonne d’applications. Une application très utile est le traitement d’images de texte à utiliser dans des livres électroniques et d’autres supports numériques. Dans cet article de blog, nous allons vous montrer comment utiliser Tesseract et easyocr pour y parvenir.
Comment extraire du texte pour des images à l’aide de Tesseract :
Prérequis:
Tesseract :
Tesseract est un moteur open source de reconnaissance optique de caractères puissant, précis et efficace pour divers systèmes d’exploitation. Il prend en charge une grande variété de langues. Tesseract peut également être utilisé comme bibliothèque système pour développer de nouvelles applications d’analyse d’images.
Pour installer tesseract sous Linux, exécutez le code suivant dans le terminal
sudo apt install tesseract-ocr
Pour installer tesseract dans Windows, utilisez le lien suivant pour accéder à la page GitHub de tesseract et vous y trouverez le lien pour télécharger la configuration et simplement installer le fichier
https://github.com/UB-Mannheim/tesseract/wiki
Remarque : veuillez vérifier et mémoriser le chemin d’installation de Tesseract.
Parce que tesseract n’est pas une bibliothèque Python, nous devons également installer quelques modules Python, vous pouvez installer les modules en utilisant le code suivant.
pip3 install pytesseract
pip3 install tesseract
pip3 install opencv-python
Code:
Étape 1:
Pour commencer, nous avons créé un fichier Python et importé tous les modules nécessaires en haut.
# text recognition
import cv2
import pytesseract
Étape 2:
Si l’image de test est stockée dans le même dossier, vous pouvez utiliser la fonction imread() pour importer l’image.
# read image
img = cv2.imread('photo.jpg')
Étape 3:
Ici, nous devons configurer des options personnalisées.
# configurations
config = ('-l eng --oem 1 --psm 3')
Étape 4:
Si vous n’avez pas configuré le chemin exécutable de Tesseract lors de l’installation sur votre système, utilisez le chemin suivant : (si vous avez configuré/modifié le chemin d’installation, incluez ce chemin ici)
# pytesseract path
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files/Tesseract-OCR/tesseract.exe'
Étape 5 :
Ensuite, nous devons convertir l’image en une seule chaîne en utilisant la méthode : image_to_string().
text = pytesseract.image_to_string(img, config=config)
Étape 6 :
Et dans le dernier, nous devons imprimer le texte extrait de l’image
# print results
text = text.split('\n')
print(text)
Sortir:
C’est l’image que j’ai utilisée pour le processus
Après avoir exécuté le code, vous pouvez voir le texte extrait dans la sortie et comme vous pouvez le voir, les résultats sont assez précis.
Comment extraire le texte des images à l’aide d’easyocr :
EasyOCR est un package Python qui permet d’extraire du texte de n’importe quel document à l’aide de la reconnaissance optique de caractères. Il absorbe plus de 70 langues et d’autres sont ajoutées au moment même où nous parlons ! EasyOCR est produit par Jaidai Industries – la principale machine de mise à jour du secteur, ce qui la rend tout à fait capable d’absorber une grande quantité d’informations et de mettre ces informations à jour grâce à ses capacités de production efficaces.
Prérequis:
Pytorche :
Il est important d’installer la bibliothèque PyTorch avant d’installer easyocr. PyTorch est une bibliothèque d’apprentissage automatique open source pour Python, développée par Facebook. Il est basé sur TensorFlow qui est une bibliothèque open-source pour le calcul numérique. Pytorch est capable de fonctionner sur des GPU, tout comme TensorFlow. Il s’agit d’une bibliothèque pour un apprentissage en profondeur rapide et flexible, construite au-dessus de Torch.
Pour installer PyTorch à l’aide de conda, utilisez la commande suivante
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
Pour installer PyTorch à l’aide de pip sous Linux, utilisez la commande suivante
pip3 install torch torchvision torchaudio
Remarque : Avant d’installer easyocr, il est important d’installer PyTorch sinon cela ne fonctionnera pas
Pour installer PyTorch en utilisant pip dans Windows, utilisez la commande suivante
pip3 install torch==1.10.2+cu102 torchvision==0.11.3+cu102 torchaudio===0.10.2+cu102 -f https://download.pytorch.org/whl/cu102/torch_stable.html
Easyocr :
Pour installer easyocr, utilisez la commande suivante
Pip install easyocr
Nous aurons également besoin de matplotlib pour le processus, pour les installer utilisez la commande suivante
pip install matplotlib
Bloc-notes Jupyter :
Le bloc-notes Jupyter est une plate-forme informatique interactive basée sur le Web. il s’agit d’un logiciel open source exécuté à l’aide du langage de programmation Python. Il peut illustrer le processus d’analyse étape par étape en organisant les éléments tels que le code, les images, le texte, la sortie, etc. Vous pouvez installer le bloc-notes Jupyter à l’aide de la commande suivante dans votre terminal.
Pip install jupyter notebook
Pour accéder au bloc-notes, vous pouvez utiliser cette commande.
Jupyter notebook
Code:
Étape 1:
# importing all the necessary modules to run the code
import matplotlib.pyplot as plt
import cv2
import easyocr
from pylab import rcParams
from IPython.display import Image
rcParams['figure.figsize'] = 8,16
Étape 2:
# here you can use any other language you want
Reader = easyocr.Reader(['en'])
Après avoir exécuté cette ligne de code, le pack de langue sera téléchargé sur votre système, ce qui prendra un certain temps.
Étape 3:
Voyons une image que nous utilisons pour l’extraction de texte
Image("photo.png")
Sortir:
Étape 4:
# using the read text function generating the text from image
output = reader.readtext('photo.jpg')
output
Sortir:
Dans la sortie donnée, vous remarquerez comment le code a généré avec succès une variété de sorties à partir d’images. Dans la sortie, la première section affiche les coordonnées de chaque cadre de délimitation, puis montre de quelle phrase le texte était censé être le plus proche, suivi d’une estimation de la certitude que la phrase a été réellement générée à partir de ces cadres de délimitation spécifiés.
Étape 5 : Affichage de la boîte englobante sur l’image
# here we are only using first text form the image to show the bounding boxcord = output[-1][0
x_min, y_min = [int(min(idx)) for idx in zip(*cord)]
x_max, y_max = [int(max(idx)) for idx in zip(*cord)]
# using matplotlib to show the bounding box rectangle around the text in image
image = cv2.imread('photo.png')
cv2.rectangle(image,(x_min,y_min),(x_max,y_max),(0,0,255),2)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
Sortir:
Comme vous pouvez le voir sur l’image, un cadre de délimitation rouge est généré autour du texte.
Conclusion:
Dans cet article, nous avons examiné deux manières d’extraire du texte d’une image à l’aide d’EasyOCR et de Tesseract. La différence entre les deux bibliothèques est que tesseract est un peu ancien maintenant et easyocr est nouveau, il prend en charge plus de langues et peut afficher des résultats visuels sur des images. Mais les deux sont des bibliothèques très performantes et c’est un excellent moyen de convertir rapidement des documents numérisés, des fax, des photos et d’autres images en texte modifiable à utiliser dans vos documents et feuilles de calcul. Veuillez nous faire savoir si vous avez des questions ou des commentaires sur le processus ou des conseils pour les autres utilisateurs. Nous aimerions recevoir de vos nouvelles!