1. Produkte
  2.   Parser
  3.   Python
  4.   EasyOCR
 
  

Moderne OCR für aktuelle Dokumenten-Herausforderungen

Präzise Textextraktion aus gescannten Dokumenten, Fotos und PDFs mit Deep-Learning-basierter Erkennung

Was ist EasyOCR?

EasyOCR ist eine Open-Source-OCR-Bibliothek (Optical Character Recognition) von Jaided AI, die Texte aus Bildern und gescannten Dokumenten mit hoher Genauigkeit extrahiert. Basierend auf PyTorch unterstützt es über 80 Sprachen, darunter Latein, Chinesisch, Arabisch und mehr. EasyOCR ist bekannt für seine einfache Handhabung - nur wenige Codezeilen sind für die Implementierung nötig, was es zur idealen Wahl für Entwickler und Forscher in Texterkennungsprojekten macht. Mit seinen vortrainierten Deep-Learning-Modellen kann es Texte in verschiedenen Schriftarten, Handschriften und komplexen Hintergründen effizient erkennen. Ob für automatisierte Dokumentenverarbeitung, Nummernschilderkennung oder Textextraktion aus Bildern - EasyOCR bietet eine leistungsstarke und schlanke Lösung. Das System kombiniert:

  • Multi-Modell-Erkennung: CRAFT-basierte Textlokalisierung mit ResNet-Backbone
  • Adaptive Erkennung: Skriptspezifische Modelle (CRNN für Latein, Transformer für CJK)
  • Kontextbewusste Verarbeitung: Absatzrekonstruktion und Lesereihenfolge-Erhaltung

Leistungsbenchmarks zeigen konsistente Ergebnisse über verschiedene Dokumenttypen:

DokumenttypGenauigkeitDurchsatzHardware
Geschäftsdokumente98,6%42 Seiten/MinNVIDIA T4
Handyfotos94,2%28 Bilder/MinGoogle Colab GPU
Historische Archive89,1%15 Seiten/MinCPU-Cluster

EasyOCR für OCR-Texterkennung und -extraktion

Die Architektur verarbeitet Dokumente in drei optimierten Stufen:

  1. Erkennung: Pixelgenaue Textbereichssegmentierung
  2. Identifikation: Sequenzvorhersage mit Sprachmodellierung
  3. Rekonstruktion: Räumliche Beziehungsabbildung
GitHub

GitHub-Statistiken

Name:
Sprache:
Sterne:
Gabeln:
Lizenz:
Das Repository wurde zuletzt aktualisiert unter

Technische Kernfähigkeiten

1. Erweiterte Texterkennung

Das Erkennungssystem bietet:

  • Zeichengenaue Heatmap-Generierung
  • Handhabung beliebig geformter Textbereiche
  • Mehrorientierungsunterstützung (0-360°)
  • Hintergrundrauschunterdrückung

2. Hybrides Erkennungssystem

Erkennungsmodelle sind pro Skripttyp optimiert:

  • Lateinisch/Kyrillisch: CRNN mit 7 CNN-Schichten + BiLSTM
  • Chinesisch/Japanisch/Koreanisch: Transformer mit 12 Attention Heads
  • Arabisch/Hebräisch: Rechts-nach-links BiLSTM mit angepasster Tokenisierung

3. Unternehmensfunktionen

  • Automatische Qualitätsbewertung
  • Konfigurierbare Präzision/Recall-Abwägungen
  • Hardwarebewusste Ressourcenzuteilung

Installation & Konfiguration

Systemanforderungen

KomponenteEntwicklungProduktion
Python3.6+3.8+
Arbeitsspeicher8GB16GB+
GPUOptionalNVIDIA (CUDA 11.8+)

Installationsoptionen

Basisinstallation


pip install easyocr  # Installiert CPU-only Abhängigkeiten

GPU-Unterstützung (Linux/Windows)


pip install easyocr torch torchvision --index-url https://download.pytorch.org/whl/cu118

Docker (Produktionsumgebung)


docker run -it --gpus all -v $(pwd):/data \
  -e LANG_LIST="en,fr,es" \
  jaidedai/easyocr

Praktische Implementierungsbeispiele

1. Produktions-Dokumentenpipeline

Kompletter OCR-Workflow mit Vorverarbeitung und Validierung:

Produktionsreife Verarbeitung


from easyocr import Reader
import cv2
import numpy as np

class DocumentOCR:
    def __init__(self, languages=['en']):
        self.reader = Reader(languages, gpu=True)
        
    def preprocess(self, image):
        # Kontrastverbesserung
        lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
        l, a, b = cv2.split(lab)
        clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8))
        limg = cv2.merge([clahe.apply(l), a, b])
        return cv2.cvtColor(limg, cv2.COLOR_LAB2BGR)
    
    def process(self, image_path):
        img = cv2.imread(image_path)
        processed = self.preprocess(img)
        results = self.reader.readtext(processed,
                                    batch_size=4,
                                    paragraph=True,
                                    min_size=50,
                                    text_threshold=0.8)
        return {
            'text': [r[1] for r in results],
            'confidence': np.mean([r[2] for r in results])
        }

# Verwendung
ocr = DocumentOCR(languages=['en','fr'])
result = ocr.process('legal_contract.jpg')
print(f"Durchschnittliche Genauigkeit: {result['confidence']:.2%}")

2. Stapelverarbeitung von Rechnungen

Wichtige Felder aus verschiedenen Rechnungsformaten extrahieren:

Rechnungsdatenextraktion


import easyocr
import re
from pathlib import Path

reader = easyocr.Reader(['en'])

INVOICE_PATTERNS = {
    'invoice_no': r'Invoice\s*Number[:#]?\s*([A-Z0-9-]+)',
    'date': r'Date[:]?\s*(\d{2}[/-]\d{2}[/-]\d{4})',
    'amount': r'Total\s*Due[:]?\s*\$?(\d+\.\d{2})'
}

def process_invoices(folder):
    results = []
    for invoice in Path(folder).glob('*.pdf'):
        text = '\n'.join(reader.readtext(str(invoice), detail=0))
        extracted = {field: re.search(pattern, text) 
                    for field, pattern in INVOICE_PATTERNS.items()}
        results.append({
            'file': invoice.name,
            'data': {k: v.group(1) if v else None 
                     for k, v in extracted.items()}
        })
    return results
invoices_data = process_invoices('/invoices/')

Leistungsoptimierung

GPU-Beschleunigung

  • Stapelverarbeitung: Optimale Batch-Größen (4-16 abhängig vom GPU-Speicher)
  • Speicherverwaltung: Automatische Aufteilung großer Dokumente
  • Mixed Precision: FP16-Inferenz mit Tensor Cores

Genauigkeitsoptimierung

  • Kontrastschwellen: contrast_ths für schlechte Scanqualität anpassen
  • Textgrößenfilter: min_size für kleine Texte setzen
  • Sprachpriorisierung: Sprachen nach erwarteter Häufigkeit ordnen

Ähnliche Produkte

 Deutsch