Lesen Sie Text aus Bildern mit Tesseract in Python

Rana Hasnain Khan 15 Februar 2024
  1. Tesserakt in Python
  2. Lesen Sie Text aus Bildern mit Tesseract in Python
Lesen Sie Text aus Bildern mit Tesseract in Python

Wir werden vorstellen, wie man ein Programm erstellt, das mit Tesseract in Python Text aus Bildern lesen kann.

Tesserakt in Python

Wir verwenden Tesseract in Python, wenn wir an Systemen mit Funktionen arbeiten, in denen wir Texte aus Bildern lesen müssen. Es bietet leistungsstarke Funktionen, die uns helfen, Text aus Bildern genauer und effizienter zu lesen.

In diesem Artikel wird auch das Extrahieren von Text aus einem Bild mit der beliebten OpenCV-Bibliothek vorgestellt.

Tesseract ist ein computerbasiertes System zur optischen Zeichenerkennung (OCR) und anderen Bild-zu-Text-Prozessen. Es wird hauptsächlich zur Texterkennung in Sprachen verwendet, die nicht das lateinische Alphabet verwenden.

Das System wird für verschiedene Zwecke verwendet, darunter Text- und Data-Mining, Bildung, Übersetzung und maschinelle Übersetzung.

Tesseract ist auch der Name der Open-Source-Version der Software. Es wird häufig in der Verarbeitung natürlicher Sprache und beim maschinellen Lernen für die Textklassifizierung und andere textbezogene Aufgaben verwendet.

Lassen Sie uns zunächst das Tesseract-Tool in Python mit der folgenden Codezeile installieren.

pip install pytesseract

Sobald wir das Tesseract-Tool installiert haben, werden wir andere wichtige Bibliotheken installieren, die wir in unseren Beispielen verwenden werden, um Text aus Bildern zu lesen. Zuerst installieren wir OpenCV mit dem folgenden Befehl.

pip install opencv-python

Jetzt installieren wir die ArgParse-Bibliothek, mit der wir eine benutzerfreundliche Befehlszeilenschnittstelle erstellen. Wir können es einfach mit dem folgenden Befehl installieren.

pip install argparse

Wir werden jetzt die Pillow-Bibliothek installieren, eine Python-Imaging-Bibliothek. Diese Bibliothek fügt die Bildverarbeitungsfunktionen zu unserem Python-Interpreter hinzu.

Wir können diese Bibliothek mit dem unten gezeigten Befehl installieren.

pip install Pillow

Lesen Sie Text aus Bildern mit Tesseract in Python

Lassen Sie uns nun Tesseract verwenden, um Text aus Bildern in Python zu lesen. Wir müssen die folgenden Schritte ausführen, damit es funktioniert.

Zunächst importieren oder laden wir das Bild aus unserer Galerie, aus dem wir den Text lesen möchten, und wenn wir es nicht haben, können wir es von Chrome herunterladen und dann laden.

Sobald wir unsere Bilder importiert haben, konvertieren wir das geladene Bild in eine Binärdatei. Im letzten Schritt senden wir die Binärdatei an Tesseract, das darauf nach Text sucht und den Text aus den Bildern zurückgibt.

Wir werden alle zuvor installierten Bibliotheken importieren.

# python
import cv2
import os
import argparse
import pytesseract
from PIL import Image

Wir werden den Argumentparser mit der ArgParse-Funktion ArgumentParser() konstruieren, wie unten gezeigt.

# python
imgArg = argparse.ArgumentParser()
imgArg.add_argument("-i", "--image", required=True, help="Enter path of image folder")
imgArg.add_argument(
    "-p", "--pre_processor", default="thresh", help="the preprocessor usage"
)
arguments = vars(imgArg.parse_args())

Wir werden nun das Bild mit dem Text lesen, indem wir die OpenCV-Bibliothek mit dem folgenden Code verwenden.

# python
imageRead = cv2.imread(arguments["image"])

Jetzt konvertieren wir das Bild mit der OpenCV-Bibliothek in Graustufen, wie unten gezeigt.

# python
imgGray = cv2.cvtColor(imageRead, cv2.COLOR_BGR2GRAY)

Dann prüfen wir mit der Anweisung if-else, ob das Bild gedroschen oder unscharf ist. Wenn dies der Fall ist, können wir den Schwellenwert und die Unschärfe wie unten gezeigt ändern.

# python
if arguments["pre_processor"] == "thresh":
    cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
if arguments["pre_processor"] == "blur":
    cv2.medianBlur(gray, 3)

Wie unten gezeigt, fügen wir dem Speicher mithilfe der OpenCV- und Tesseract-Bibliotheken ein Bild hinzu.

# python
nameImg = "{}.jpg".format(os.getpid())
cv2.imwrite(nameImg, gray)
imgText = pytesseract.image_to_string(Image.open(nameImg))
os.remove(nameImg)
print(imgText)

Jetzt zeigen wir die Bildausgabe mit dem folgenden Code.

# python
cv2.imshow("Images Uploaded", imageRead)
cv2.imshow("Images Converted In Grayscale", imgGray)
cv2.waitKey(0)

Lassen Sie uns nun den obigen Code mit dem folgenden Code ausführen und prüfen, wie er funktioniert und wie gut er Text aus Bildern liest.

# python
python main.py --image img/read.jpg

Das von uns gesendete Bild ist unten dargestellt:

Python Tesseract - Bild gesendet

Sobald das Bild verarbeitet ist, wird es wie unten dargestellt in Graustufen gespeichert:

Python Tesseract - Bild in Graustufen gesendet

Wir werden die folgende Ausgabe in der Eingabeaufforderung haben:

Python Tesseract - Ausgabe

Wie Sie im obigen Beispiel sehen können, können wir die Bilder einfach verwenden und ihren Text lesen. Und wir können sie speichern, wenn wir wollen, oder sie in der Konsole anzeigen.

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn