Maison  >  Article  >  développement back-end  >  Comment identifier le texte dans les images en utilisant Python

Comment identifier le texte dans les images en utilisant Python

尚
avant
2020-06-15 16:42:354640parcourir

Comment identifier le texte dans les images en utilisant Python

Tesseract

La reconnaissance de texte fait partie d'ORC signifie reconnaissance optique de caractères, communément connue sous le nom de reconnaissance de texte. Tesseract est un outil de reconnaissance de texte Nous pouvons rapidement implémenter la reconnaissance de texte en l'utilisant avec Python. Mais avant cela, nous devons accomplir une tâche fastidieuse.

(1) Installation et configuration de Tesseract

Téléchargez Tesseract sur https://digi.bib.uni-mannheim.de/tesseract/

Comment identifier le texte dans les images en utilisant Python

Il existe de nombreuses versions parmi lesquelles choisir, et vous pouvez choisir en fonction de vos propres besoins. Parmi eux, w32 signifie système 32 bits et w64 signifie système 64 bits. Vous pouvez simplement choisir la version appropriée. La vitesse de téléchargement peut être lente.

Lors de l'installation, nous devons connaître l'emplacement de notre installation et configurer le répertoire d'installation dans la variable de chemin système. Notre chemin est D:CodeFieldTesseract-OCR.

Comment identifier le texte dans les images en utilisant Python

Nous faisons un clic droit sur Poste de travail/Cet ordinateur->Propriétés->Paramètres système avancés->Variables d'environnement->Chemin->Modifier-> Créez-en un nouveau et copiez-y notre chemin. Après avoir ajouté les variables système, nous devons encore cliquer sur OK pour terminer la configuration.

(2) Téléchargez le pack de langue

Tesseract ne prend pas en charge le chinois par défaut. Si vous souhaitez reconnaître le chinois ou d'autres langues, vous devez télécharger le pack de langue correspondant. comme suit : https://tesseract -ocr.github.io/tessdoc/Data-Files, après être entré sur le site Web, nous faisons défiler vers le bas :

Comment identifier le texte dans les images en utilisant Python

Il existe deux langues chinoises packages, un chinois simplifié et un chinois traditionnel, ce sont du chinois simplifié et du chinois traditionnel, nous pouvons choisir celui que nous devons télécharger. Une fois le téléchargement terminé, nous devons le placer dans le répertoire tessdata sous le chemin de Tesseract. Notre chemin est D:CodeFieldTesseract-OCRtessdata.

(3) Autres téléchargements de modules

En plus des étapes ci-dessus, nous devons également télécharger deux modules :

pip install pytesseract
pip install pillow

Le premier est pour la reconnaissance de texte, le second one One est utilisé pour la lecture d’images. Ensuite, nous pouvons effectuer une reconnaissance de texte.

Reconnaissance de texte

(1) Reconnaissance d'une seule image

L'opération suivante est beaucoup plus simple Voici l'image que nous voulons reconnaître :

Comment identifier le texte dans les images en utilisant Python

L'étape suivante est notre code de reconnaissance de texte :

import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.jpg')
# 识别文字
string = pytesseract.image_to_string(im)
print(string)

Les résultats de la reconnaissance sont les suivants :

Do not go gentle into that good night!

Parce que la valeur par défaut est de prendre en charge l'anglais , Nous pouvons donc le reconnaître directement, mais lorsque nous voulons reconnaître le chinois ou d'autres langues, nous devons apporter quelques modifications :

import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.png')
# 识别文字,并指定语言
string = pytesseract.image_to_string(im,)
print(string)

Lors de la reconnaissance, nous définissons lang='chi_sim', c'est-à-dire définissons la langue en chinois simplifié, ce paramètre ne prendra effet que s'il existe un package en chinois simplifié dans votre répertoire tessdata. Voici l'image que nous avons utilisée pour la reconnaissance :

Comment identifier le texte dans les images en utilisant Python

Les résultats de la reconnaissance sont les suivants :

N'entrez pas docilement dans cette bonne nuit

Le contenu de l'image a été identifié avec précision. Une chose que nous devons savoir est que Tesseract peut toujours reconnaître les caractères anglais après avoir défini la langue sur le chinois simplifié ou d'autres langues.

(2) Reconnaissance d'images par lots

Maintenant que nous avons répertorié la reconnaissance d'images uniques, nous devons avoir la fonction de reconnaissance d'images par lots, ce qui nous oblige à préparer un fichier txt, comme celui que j'ai un fichier text.txt avec le contenu suivant :

sentenceComment identifier le texte dans les images en utilisant Python
sentenceComment identifier le texte dans les images en utilisant Python

Nous modifions le code pour qu'il soit comme suit :

import pytesseract
# 识别文字
string = pytesseract.image_to_string('text.txt',)
print(string)

Cependant, écrire nous-mêmes un fichier txt est un peu gênant, nous pouvons donc le modifier comme suit :

import os
import pytesseract
# 文字图片的路径
path = 'text_img/'
# 获取图片路径列表
imgs = [path + i for i in os.listdir(path)]
# 打开文件
f = open('text.txt', 'w+', encoding='utf-8')
# 将各个图片的路径写入text.txt文件当中
for img in imgs:
    f.write(img + '\n')
# 关闭文件
f.close()
# 文字识别
string = pytesseract.image_to_string('text.txt',)
print(string)

De cette façon, il suffit de passer dans le répertoire racine d'une image texte pour effectuer une reconnaissance par lots. Au cours du test, il a été constaté que Tesseract ne reconnaissait pas avec précision les polices élégantes telles que l'écriture manuscrite et l'écriture normale, et que la reconnaissance de certains caractères complexes doit également être améliorée.

Cependant, la précision de reconnaissance des polices avec des traits stricts tels que Song Dynasty et block script est très élevée. De plus, si l’inclinaison de l’image est supérieure à un certain angle, les résultats de la reconnaissance seront très différents.

Pour plus de connaissances connexes, veuillez prêter attention à la colonne tutoriel vidéo Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer