Top 7 Python OCR-Bibliotheken zur Textextraktion aus Bildern

Optische Zeichenerkennung (OCR) ist eine Technologie, die lesbaren Text aus Bildern, gescannten Dokumenten und sogar handschriftlichen Notizen extrahiert. In Python haben sich OCR-Tools im Laufe der Jahre erheblich weiterentwickelt, und mit der neuesten Version bieten diese Bibliotheken nun noch leistungsstärkere, effizientere Lösungen.

Dieser Artikel behandelt die sieben besten OCR-Bibliotheken in Python, hebt ihre Stärken, einzigartigen Funktionen und Codebeispiele hervor, um Ihnen den Einstieg zu erleichtern.

1. Tesseract OCR (pytesseract)

Tesseract ist zweifellos die beliebteste und am weitesten verbreitete OCR-Bibliothek im Python-Ökosystem. Ursprünglich von HP entwickelt und jetzt von Google gepflegt, bietet Tesseract hochwertige OCR-Fähigkeiten für über 100 Sprachen.

Wichtige Funktionen:

  • Open-Source und kostenlos nutzbar.
  • Unterstützt mehrere Sprachen, einschließlich nicht-lateinischer Alphabete.
  • Erkennt Text in Bildern, gescannten Dokumenten und PDFs.
  • Kann mit benutzerdefinierten Trainingsdaten für spezialisierte Anwendungsfälle angepasst werden.
  • Arbeitet gut mit Vorverarbeitungswerkzeugen wie OpenCV zusammen, um die Genauigkeit zu verbessern.

Um Tesseract OCR auf Linux zu installieren, befolgen Sie diese Schritte je nach Ihrer Distribution:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

Nach der Installation von Tesseract, wenn Sie es mit Python verwenden möchten, müssen Sie das pytesseract Paket mit dem pip Paketmanager installieren.

pip3 install pytesseract
OR
pip install pytesseract

Hier ist ein Beispiel für Python-Code, um Tesseract OCR mit der pytesseract Bibliothek zu verwenden, um Text aus einem Bild zu extrahieren.

import pytesseract
from PIL import Image

# Load an image
img = Image.open("image_sample.png")

# Use Tesseract to extract text
text = pytesseract.image_to_string(img)

# Print the extracted text
print(text)

2. EasyOCR

EasyOCR ist eine weitere ausgezeichnete Python OCR-Bibliothek, die mehr als 80 Sprachen unterstützt und für Anfänger leicht zu verwenden ist. Sie basiert auf Deep-Learning-Techniken und ist eine ausgezeichnete Wahl für diejenigen, die moderne OCR-Technologie nutzen möchten.

Hauptmerkmale:

  • Hohe Genauigkeit mit Deep-Learning-Modellen.
  • Unterstützt eine Vielzahl von Sprachen.
  • Kann Text in vertikalen und mehrsprachigen Bildern erkennen.
  • Einfache und leicht verständliche API.

Um EasyOCR auf Linux zu installieren, können Sie den folgenden pip Befehl entsprechend Ihrer Distribution verwenden.

pip3 install easyocr
OR
pip install easyocr

Sobald die Installation abgeschlossen ist, können Sie EasyOCR verwenden, um Text aus einem Bild zu extrahieren.

import easyocr

# Initialize the OCR reader
reader = easyocr.Reader(['en'])

# Extract text from an image
result = reader.readtext('image_sample.png')

# Print the extracted text
for detection in result:
    print(detection[1])

3. OCRopus

OCRopus ist ein Open-Source-OCR-System, das von Google entwickelt wurde. Obwohl es hauptsächlich für historische Dokumente und Bücher verwendet wird, kann OCRopus auch auf eine Vielzahl von Textextraktionsaufgaben angewendet werden.

Funktionen:

  • Spezialisiert auf Dokumentenlayout-Analyse und Textextraktion.
  • Entwickelt mit Modularität im Sinn, ermöglicht einfache Anpassung.
  • Kann mit mehrseitigen Dokumenten und großen Datensätzen arbeiten.

Hier ist ein Beispiel für Python-Code, um Text aus einem Bild zu extrahieren.

import subprocess

# Use OCRopus to process an image
subprocess.run(['ocropus', 'identify', 'image_sample.png'])

4. PyOCR

PyOCR ist eine Python-Umgebung für mehrere OCR-Engines, einschließlich Tesseract und CuneiForm. Es bietet eine einfache Schnittstelle zur Integration von OCR-Funktionalität in Python-Anwendungen.

Funktionen:

  • Kann mit mehreren OCR-Engines kommunizieren.
  • Bietet eine einfache API für Textextraktion.
  • Kann mit Bildvorverarbeitungsbibliotheken für verbesserte Ergebnisse kombiniert werden.

PyOCR erfordert Tesseract (OCR-Engine) und Pillow (Bildverarbeitungsbibliothek). Sie können sie mit den folgenden Befehlen installieren:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

Jetzt können Sie die Bibliotheken pyocr und pillow mit pip installieren:

pip3 install pyocr pillow
OR
pip install pyocr pillow

Hier ist ein Python-Beispiel, das Text aus einem Bild mithilfe von PyOCR und Tesseract extrahiert:

import pyocr
from PIL import Image

# Choose the OCR tool (Tesseract or CuneiForm)
tool = pyocr.get_available_tools()[0]

# Load the image
img = Image.open('image_sample.png')

# Extract text from the image
text = tool.image_to_string(img)

# Print the extracted text
print(text)

5. PaddleOCR

PaddleOCR ist eine OCR-Bibliothek, die von PaddlePaddle, einem Deep-Learning-Framework, entwickelt wurde. Sie unterstützt mehr als 80 Sprachen und bietet dank der Verwendung von Deep-Learning-Modellen eine präzise Leistung.

Funktionen:

  • Hohe Leistung, besonders bei Bildern mit komplexen Hintergründen.
  • Unterstützt Texterkennung, -erkennung und Layoutanalyse.
  • Beinhaltet vorab trainierte Modelle für verschiedene Sprachen.

Um PaddleOCR in Linux zu installieren, verwenden Sie:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

Hier ist ein Python-Beispiel, das Text aus einem Bild mithilfe der paddleocr-Bibliothek extrahiert:

from paddleocr import PaddleOCR

# Initialize the OCR
ocr = PaddleOCR(use_angle_cls=True, lang='en')

# Perform OCR on an image
result = ocr.ocr('image_sample.png', cls=True)

# Print the extracted text
for line in result[0]:
    print(line[1])

6. Kraken

Kraken ist eine leistungsstarke OCR-Bibliothek, die speziell für historische und mehrsprachige Texte entwickelt wurde. Sie basiert auf OCRopus und bietet zusätzliche Funktionen für komplexe Layouts und Textextraktion.

Funktionen:

  • Am besten geeignet für alte Bücher und mehrsprachige OCR.
  • Verarbeitet komplexe Textlayouts und historische Schriftarten.
  • Verwendet maschinelles Lernen für eine bessere Erkennungsgenauigkeit.

Um Kraken unter Linux zu installieren, verwenden Sie:

pip3 install kraken
OR
pip install kraken

Hier ist ein Python-Beispiel, das Text aus einem Bild mithilfe der kraken-Bibliothek extrahiert:

import kraken

# Load the model and recognize text
text = kraken.binarize("image_sample.png")

# Print the recognized text
print(text)

7. Textract (AWS)

AWS Textract ist Amazons cloud-basierter OCR-Dienst, der Dokumente und Formulare analysieren und Texte mit hoher Genauigkeit extrahieren kann. Er integriert nahtlos mit anderen AWS-Diensten.

Wichtige Funktionen:

  • Cloud-basiertes OCR mit skalierbaren Lösungen.
  • Unterstützt die Analyse der Dokumentenstruktur, einschließlich Tabellen und Formulare.
  • Integration mit AWS-Diensten für weitere Datenverarbeitung.

Um Textract unter Linux zu installieren, verwenden Sie:

pip3 install boto3
OR
pip install boto3

Hier ist ein Beispiel-Python-Skript, das AWS Textract verwendet, um Text aus einem Dokument zu extrahieren (zum Beispiel aus einer gescannten PDF- oder Bilddatei).

import boto3

# Initialize a Textract client
client = boto3.client('textract')

# Path to the image or PDF file you want to analyze
file_path = 'path_to_your_file.png'  # Replace with your file path

# Open the file in binary mode
with open(file_path, 'rb') as document:
    # Call Textract to analyze the document
    response = client.detect_document_text(Document={'Bytes': document.read()})

# Print the extracted text
for item in response['Blocks']:
    if item['BlockType'] == 'LINE':
        print(item['Text'])
Fazit

Die Auswahl der richtigen OCR-Bibliothek in Python hängt vom spezifischen Anwendungsfall, den Sprachanforderungen und der Komplexität der von Ihnen verarbeiteten Dokumente ab. Egal, ob Sie an historischen Dokumenten, mehrsprachigen Texten oder einfachen gescannten PDFs arbeiten, diese Bibliotheken bieten leistungsstarke Tools zur Textextraktion.

Für Anfänger sind Tesseract und EasyOCR aufgrund ihrer Benutzerfreundlichkeit und weit verbreiteten Nutzung ausgezeichnete Ausgangspunkte. Für fortgeschrittenere oder spezialisiertere Aufgaben hingegen bieten Bibliotheken wie PaddleOCR, OCRopus und Kraken eine größere Flexibilität und Genauigkeit.

Source:
https://www.tecmint.com/python-text-extraction-from-images/