Die Datenextraktion aus Bildern ist ein spannendes Gebiet mit einem breiten Spektrum an Anwendungen. Von der Erkennung von Orientierungspunkten und der Beschriftung von Bildern bis hin zur Erstellung von Suchmaschinen für die Suche nach ähnlichen Bildern auf der Grundlage ihres Inhalts gibt es viele Möglichkeiten für die Erstellung spannender Dienste für unsere Kunden. In diesem Blog wird erörtert, wie man mit Python Bilder in Text umwandeln kann.

Was ist OCR?

Optische Zeichenerkennung, kurz OCR, ist der Prozess der Umwandlung eines Textbildes in maschinencodierten Text. Dies ist einer der wichtigsten Bereiche des maschinellen Lernens. Und es ist nicht nur etwas für nerdige Enthusiasten des maschinellen Lernens, sondern hat eine Vielzahl von Anwendungen. Eine sehr nützliche Anwendung ist die Verarbeitung von Textbildern für die Verwendung in E-Books und anderen digitalen Medien. In diesem Blogbeitrag zeigen wir Ihnen, wie Sie Tesseract und easyocr für genau diese Zwecke einsetzen können.

Wie extrahiert man Text für Bilder mit Tesseract?

Tesseract:

Tesseract ist eine leistungsstarke, genaue und effiziente Open-Source-Engine zur optischen Zeichenerkennung für verschiedene Betriebssysteme. Sie unterstützt eine Vielzahl von Sprachen. Tesseract kann auch als Systembibliothek verwendet werden, um neue Bildanalyseanwendungen zu entwickeln. 

Um tesseract unter Linux zu installieren, führen Sie den folgenden Code im Terminal aus:

sudo apt install tesseract-ocr

Um tesseract unter Windows zu installieren, benutzen Sie den folgenden Link, um auf die tesseract GitHub Seite zu gelangen. Dort finden Sie den Link zum Download des Setups und können die Datei einfach installieren

https://github.com/UB-Mannheim/tesseract/wiki

Hinweis: Bitte überprüfen Sie den Pfad, in dem Tesseract installiert ist, und merken Sie sich diesen. Da Tesseract keine Python-Bibliothek ist, müssen auch einige Python-Module installiert werden, die Sie mit dem folgenden Code installieren können:

pip3 install pytesseract
pip3 install tesseract
pip3 install opencv-python

Schritt -1: Installation des Pakets

Zu Beginn haben wir eine Python-Datei erstellt und alle notwendigen Module importiert, die oben stehen.

# text recognition
import cv2
import pytesseract

Schritt 2: Lesen des Bildes

Wenn Sie das Testbild im gleichen Ordner gespeichert haben, können Sie die Funktion imread() verwenden, um das Bild zu importieren.

# read image
img = cv2.imread('photo.jpg')

Schritt 3: Konfiguration

Hier müssen wir benutzerdefinierte Optionen konfigurieren.

# configurations
config = ('-l eng --oem 1 --psm 3')

Schritt 4: Pfad festlegen

Wenn Sie bei der Installation von Tesseract den Pfad zur ausführbaren Datei nicht konfiguriert haben, verwenden Sie den folgenden Pfad: (wenn Sie den Installationspfad konfiguriert/geändert haben, geben Sie diesen Pfad hier an)

# pytesseract path
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files/Tesseract-OCR/tesseract.exe'

Schritt 5: Umwandlung des Bildes in Text

Anschließend müssen wir das Bild mit der Methode image_to_string() in eine einzelne Zeichenkette umwandeln.

text = pytesseract.image_to_string(img, config=config)

Schritt 6: Drucken der Ergebnisse von Convert Image to Text using Python

Und als Letztes müssen wir den aus dem Bild extrahierten Text drucken

# print results
text = text.split('\n')
print(text)

Ausgabe:

Dies ist das Bild, das ich für den Prozess verwendet habe

Nach der Ausführung des Codes können Sie den extrahierten Text in der Ausgabe sehen, und wie Sie sehen können, sind die Ergebnisse ziemlich genau.

Wie man mit easyocr Text für Bilder extrahiert:

EasyOCR ist ein Python-Paket, das die Extraktion von Text aus beliebigen Dokumenten mittels optischer Zeichenerkennung ermöglicht. Es kann mehr als 70 Sprachen erkennen und weitere werden in diesem Moment hinzugefügt! EasyOCR wird von Jaidai Industries hergestellt – der führenden Aktualisierungsmaschine in der Branche, die in der Lage ist, eine riesige Menge an Informationen aufzunehmen und diese Informationen durch ihre effizienten Produktionsfähigkeiten auf den neuesten Stand zu bringen.

Voraussetzungen:

Pytorch:

Es ist wichtig, die PyTorch-Bibliothek vor der Installation von easyocr zu installieren. PyTorch ist eine Open-Source-Bibliothek für maschinelles Lernen in Python, die von Facebook entwickelt wurde. Sie basiert auf TensorFlow, einer Open-Source-Bibliothek für numerische Berechnungen. Pytorch kann genau wie TensorFlow auf GPUs laufen. Es handelt sich um eine Bibliothek für schnelles, flexibles Deep Learning, die auf Torch aufbaut.

Um PyTorch mit conda zu installieren, verwenden Sie den folgenden Befehl:

conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

Um PyTorch mit pip unter Linux zu installieren, verwenden Sie den folgenden Befehl

pip3 install torch torchvision torchaudio

Hinweis: Vor der Installation von easyocr ist es wichtig, PyTorch zu installieren, da es sonst nicht funktionieren wird.

Um PyTorch mit pip unter Windows zu installieren, verwenden Sie den folgenden Befehl

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:

Um easyocr zu installieren, verwenden Sie den folgenden Befehl

Pip install easyocr

Wir benötigen auch matplotlib für den Prozess, um sie zu installieren, verwenden Sie den folgenden Befehl

pip install matplotlib 

Jupyter notebook:  

Jupyter notebook ist eine webbasierte, interaktive Computing-Plattform. Es handelt sich um eine Open-Source-Software, die mit der Programmiersprache Python ausgeführt wird. Es kann den Analyseprozess Schritt für Schritt veranschaulichen, indem es Dinge wie Code, Bilder, Text, Ausgaben usw. anordnet. Sie können das Jupyter-Notebook mit dem folgenden Befehl in Ihrem Terminal installieren.

pip install jupyter notebook

Für den Zugriff auf das Notebook können Sie diesen Befehl verwenden:

Jupyter notebook

Schritt -1: Importieren von Abhängigkeiten

# 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

Schritt 2: Einrichten von Sprache und Landessprache

# here you can use any other language you want
Reader = easyocr.Reader(['en'])

Nach dem Ausführen dieser Codezeile wird das Sprachpaket auf Ihr System heruntergeladen, was einige Zeit in Anspruch nehmen wird.

Schritt -3: Anhängen des Bildes

Sehen wir uns ein Bild an, das wir für die Textextraktion verwenden 

Image("photo.png")

Schritt -4: Drucken der Ausgabe

# using the read text function generating the text from image
output = reader.readtext('photo.jpg')
print(output)

In der gegebenen Ausgabe können Sie sehen, wie der Code erfolgreich eine Vielzahl von Ausgaben aus Bildern generiert hat. Der erste Abschnitt der Ausgabe zeigt die Koordinaten für jeden Begrenzungsrahmen, dann wird angezeigt, welchem Satz der Text laut Vorhersage am nächsten liegt, gefolgt von einer Schätzung, wie sicher es ist, dass der Satz innerhalb der angegebenen Begrenzungsrahmen generiert wurde.

Schritt 5: Einblenden des Begrenzungsrahmens auf dem Bild

# 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))

Wie Sie auf dem Bild sehen können, wird ein roter Begrenzungsrahmen um den Text herum erzeugt. 

Letzte Worte

In diesem Artikel haben wir uns zwei Möglichkeiten angeschaut, wie man Text aus einem Bild extrahieren kann: mit EasyOCR und mit Tesseract. Der Unterschied zwischen den beiden Bibliotheken besteht darin, dass Tesseract schon etwas älter ist und EasyOCR neu ist, mehr Sprachen unterstützt und visuelle Ergebnisse auf Bildern anzeigen kann.

Aber beide sind sehr leistungsfähige Bibliotheken, und es ist eine großartige Möglichkeit, gescannte Dokumente, Faxe, Fotos und andere Bilder schnell in bearbeitbaren Text zu konvertieren, den Sie in Ihren Dokumenten und Tabellen verwenden können. Bitte lassen Sie es uns wissen, wenn Sie Fragen oder Kommentare zu diesem Verfahren oder Tipps für andere Benutzer haben. Wir würden uns freuen, von Ihnen zu hören!