OCR ist eine Technologie zum Extrahieren von Zeichenketten aus Bildern. Es gibt eine Technologie, die den von Ihrem Smartphone gelesenen Bildschirm mit Google Translate übersetzt. Das ist OCR. Es extrahiert Text aus dem gescannten Bild und führt eine Verarbeitung in natürlicher Sprache durch.
Ich weiß, dass ich Text aus dem Bild ziehe, aber wofür kann ich ihn sonst noch verwenden? Es wird eine Geschichte sein. Sie können beispielsweise die erhaltenen Broschüren lesen, von Ihrem Unternehmen oder Ihrer Schule drucken und sie in Word-Dateien umwandeln. Sie können den Inhalt der Tafel oder des Whiteboards auch in Text konvertieren, ohne ihn aufschreiben zu müssen.
・ Installation von Python3 ・ Installation von Pyocr ・ Installation des Kissens ・ Installation von Tesseract OCR
Die Python3-Installation ist lang, daher werde ich sie weglassen Da ich ein Mac-Benutzer bin, werde ich nur diese Seite erklären.
Für Windows-Benutzer wenden Sie sich bitte an den Autor des unten stehenden Links.
https://qiita.com/henjiganai/items/7a5e871f652b32b41a18
Dann für Mac.
pip install Pillow
Oder
pip3 install pillow
pip install pyocr
Oder
pip3 install pyocr
brew install tesseract
Oben. Beachten Sie, dass eine Ausführung ohne sudo möglicherweise nicht möglich ist.
Es werden nur PNG-Bilder als Ziel ausgewählt. Ich weiß nichts über die Unterstützung für andere Formate.
import glob
import pyocr.builders
from PIL import Image
#Wenn Sie den Dateinamen des Bildes erhalten,Gibt txt zurück
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
Ich mag die bastelnden Namens-OCRs nicht, also gehe zum Inhalt. Erklärung des zuerst zu verwendenden Moduls.
glob ist ein Modul zum Abrufen des Pfads in einer Datei (einem Verzeichnis). pyocr ist ein Modul, das Python mit einer Engine namens tesseract verbindet, um OCR in Python durchzuführen. PIL ist ein Modul zum Laden von Bildern.
Und in init haben wir eine Reihe von Dingen wie tool und lang, die nur einmal verwendet werden (kein Aufruf erforderlich). Wenn res keine OCR-Engine hat, sollte es den Wert False haben, und wenn ja, sollte es den Wert True haben.
Ja, es ist die Hauptlesefunktion. Wir empfangen den Dateinamen als Argument, OCR (Extrahieren der Zeichenfolge) und geben ihn als Text zurück.
Stellen Sie zunächst fest, ob Sie eine OCR-Engine haben. Wenn nicht, wird der Zeichenfolgenfehler zurückgegeben. Stellen Sie danach das Bild und die Sprache usw. ein, empfangen Sie den Text in txt und geben Sie ihn zurück.
Ja, gehen wir zur Hauptfunktion.
if __name__ == '__main__':
cl = OCRs()
cl.__init__()
file_names = glob.glob('/Users/sa/Desktop/Programmierung/target_folder/*')
for file_name in file_names:
if cl.read(file_name) == 'error':
print('OCR-Software wurde nicht gefunden.')
break
else:
print(cl.read(file_name))
Lass uns einen Blick darauf werfen. Weisen Sie zuerst die vorherige Klasse cl zu und rufen Sie dann init auf. Die Grundeinstellung ist abgeschlossen. Verwenden Sie dann glob, um den Bildordner anzugeben, den Sie festlegen möchten (OCR). Ich habe meine Struktur für Leute ein wenig geändert, weil es immer noch schwierig ist, das Verzeichnis zu manipulieren. Sag nicht dumm? ??
#Verzeichnis, das Sie angeben möchten(Ordner)Einstellen.
filenames = glob.glob('hogehoge/*')
#Jetzt können Sie alle Dateinamen in hogehoge erhalten.
Dann werfen Sie mit einer sich wiederholenden for-Anweisung alle Elemente in die vorherige Funktion. Wenn ein Fehler zurückgegeben wird, ist die OCR-Software nicht enthalten.
das ist alles. Wenn Sie nur dieses eine Bild angeben möchten! !! In diesem Fall nennen Sie es wie folgt.
cl.read(filename)
Recommended Posts