OCR est une technologie permettant d'extraire des chaînes de caractères à partir d'images. Il existe une technologie qui traduit l'écran lu par votre smartphone avec Google Translate. C'est l'OCR. Il extrait le texte de l'image numérisée et effectue un traitement du langage naturel.
Je sais que je retire du texte de l'image, mais à quoi d'autre puis-je l'utiliser? Ce sera une histoire. Par exemple, vous pouvez lire les brochures que vous avez reçues, les impressions de votre entreprise ou école et les transformer en fichiers Word. De plus, vous pouvez convertir le contenu du tableau noir ou du tableau blanc en texte sans avoir à les écrire.
・ Installation de Python3 ・ Installation de pyocr ・ Installation d'oreiller ・ Installation de tesseract OCR
L'installation de Python3 est longue, je vais donc l'omettre Puisque je suis un utilisateur Mac, je n'expliquerai que ce côté.
Pour les utilisateurs de Windows, veuillez vous référer à l'auteur du lien ci-dessous.
https://qiita.com/henjiganai/items/7a5e871f652b32b41a18
Ensuite, pour Mac.
pip install Pillow
Ou
pip3 install pillow
pip install pyocr
Ou
pip3 install pyocr
brew install tesseract
Ci-dessus. Notez qu'il peut ne pas être possible d'exécuter sans sudo devant.
Seules les images png sont ciblées. Je ne connais pas la prise en charge d'autres formats.
import glob
import pyocr.builders
from PIL import Image
#Lorsque vous recevez le nom de fichier de l'image,Renvoie txt
class OCRs:
def __init__(self):
self.tools = pyocr.get_available_tools()
self.tool = self.tools[0]
self.langs = self.tool.get_available_languages()
self.lang = self.langs[0]
self.res = False
print(self.tools)
if len(self.tools) != 0:
self.res = True
def read(self, file_name):
if not self.res:
return 'error'
else:
txt = self.tool.image_to_string(
Image.open(file_name),
lang=self.lang,
builder=pyocr.builders.TextBuilder()
)
return txt
Je n'aime pas le nom bricolé OCR, alors allez au contenu. Déclaration du module à utiliser en premier.
glob est un module pour obtenir le chemin dans un fichier (répertoire). pyocr est un module qui relie Python à un moteur appelé tesseract pour effectuer l'OCR en Python. PIL est un module requis pour charger des images.
Et dans init, nous avons un ensemble de choses telles que tool et lang qui ne sont utilisées qu'une seule fois (pas besoin d'appeler). Si res n'a pas de moteur OCR, il doit avoir la valeur False, et si c'est le cas, il doit avoir la valeur True.
Oui, c'est la fonction de lecture principale. Ce que nous faisons, c'est recevoir le nom du fichier comme argument, OCR (extraire la chaîne de caractères) et le renvoyer sous forme de texte.
Tout d'abord, déterminez si vous disposez d'un moteur OCR. Sinon, l'erreur de chaîne de caractères est renvoyée. Après cela, définissez l'image et la langue, etc., recevez le texte en txt, puis renvoyez-le.
Oui, passons à la fonction principale.
if __name__ == '__main__':
cl = OCRs()
cl.__init__()
file_names = glob.glob('/Users/sa/Desktop/la programmation/target_folder/*')
for file_name in file_names:
if cl.read(file_name) == 'error':
print('Le logiciel OCR est introuvable.')
break
else:
print(cl.read(file_name))
Nous allons jeter un coup d'oeil. Tout d'abord, affectez la classe précédente à cl, puis appelez init. Le réglage initial est terminé. Ensuite, utilisez glob pour spécifier le dossier d'image que vous souhaitez définir (OCR). J'ai un peu modifié ma structure pour les gens car il est encore difficile de manipuler le répertoire. Ne dis pas stupide? ??
#Répertoire que vous souhaitez spécifier(dossier)Mettez dedans.
filenames = glob.glob('hogehoge/*')
#Vous pouvez maintenant obtenir tous les noms de fichiers dans hogehoge.
Ensuite, à l'aide d'une instruction for répétitive, lancez tous les éléments dans la fonction précédente. Si une erreur est renvoyée, le logiciel OCR n'est pas inclus.
c'est tout. Si vous ne souhaitez spécifier qu'une seule image! !! Dans ce cas, appelez-le comme suit.
cl.read(filename)
Recommended Posts