
Sofort einsatzbereite OCR mit über 80 unterstützten Sprachen und allen gängigen Schriftsystemen, einschließlich Lateinisch, Chinesisch, Arabisch, Devanagari, Kyrillisch usw.
Einsatzbereite OCR mit 80+ unterstützten Sprachen und allen gängigen Schriftsystemen, darunter: Lateinisch, Chinesisch, Arabisch, Devanagari, Kyrillisch usw.
Demo auf unserer Website ausprobieren
Integriert in Huggingface Spaces 🤗 mit Gradio. Probier die Web-Demo aus:



Installation mit pip
Für die neueste stabile Version:
pip install easyocr
Für die neueste Entwicklungsversion:
pip install git+https://github.com/JaidedAI/EasyOCR.git
Hinweis 1: Für Windows installiere bitte zuerst torch und torchvision gemäß den offiziellen Anweisungen hier https://pytorch.org. Achte auf der PyTorch-Website darauf, die richtige CUDA-Version auszuwählen, die du hast. Wenn du nur im CPU-Modus ausführen möchtest, wähle CUDA = None.
Hinweis 2: Wir stellen auch ein Dockerfile hier bereit.
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # dies muss nur einmal ausgeführt werden, um das Modell in den Speicher zu laden
result = reader.readtext('chinese.jpg')
Die Ausgabe erfolgt im Listenformat, wobei jedes Element eine Begrenzungsbox, den erkannten Text bzw. das Konfidenzniveau darstellt.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
Hinweis 1: ['ch_sim','en'] ist die Liste der Sprachen, die du lesen möchtest. Du kannst
mehrere Sprachen gleichzeitig angeben, aber nicht alle Sprachen können zusammen verwendet werden.
Englisch ist mit jeder Sprache kompatibel, und Sprachen, die gemeinsame Zeichen haben, sind normalerweise miteinander kompatibel.
Hinweis 2: Anstelle des Dateipfads chinese.jpg kannst du auch ein OpenCV-Bildobjekt (numpy-Array) oder eine Bilddatei als Bytes übergeben. Eine URL zu einem Rohbild ist ebenfalls akzeptabel.
Hinweis 3: Die Zeile reader = easyocr.Reader(['ch_sim','en']) dient zum Laden eines Modells in den Speicher. Das dauert etwas, muss aber nur einmal ausgeführt werden.
Du kannst auch detail=0 setzen, um eine einfachere Ausgabe zu erhalten.
reader.readtext('chinese.jpg', detail = 0)
Ergebnis:
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
Die Modellgewichte für die gewählte Sprache werden automatisch heruntergeladen, oder du kannst sie manuell vom Model Hub herunterladen und im Ordner '~/.EasyOCR/model' ablegen.
Falls du keine GPU hast oder deine GPU wenig Speicher hat, kannst du das Modell im Nur-CPU-Modus ausführen, indem du gpu=False hinzufügst.
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
Für weitere Informationen lies das Tutorial und die API-Dokumentation.
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
Für das Erkennungsmodell hier lesen.
Für das Detektionsmodell (CRAFT) hier lesen.
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
Die Idee ist, jedes State-of-the-Art-Modell in EasyOCR einbinden zu können. Es gibt viele Genies, die versuchen, bessere Detektions-/Erkennungsmodelle zu entwickeln, aber wir versuchen hier nicht, Genies zu sein. Wir wollen ihre Arbeiten der Öffentlichkeit schnell zugänglich machen ... kostenlos. (nun, wir glauben, die meisten Genies wollen, dass ihre Arbeit so schnell/groß wie möglich eine positive Wirkung entfaltet) Die Pipeline sollte etwa wie im folgenden Diagramm aussehen. Graue Felder sind Platzhalter für austauschbare hellblaue Module.

Dieses Projekt basiert auf Forschung und Code aus mehreren Papieren und Open-Source-Repositories.
Die gesamte Deep-Learning-Ausführung basiert auf Pytorch. ❤️
Die Detektionsausführung verwendet den CRAFT-Algorithmus aus diesem offiziellen Repository und ihrem Paper (Danke @YoungminBaek von @clovaai). Wir verwenden auch ihr vortrainiertes Modell. Das Trainingsskript wird von @gmuffiness bereitgestellt.
Das Erkennungsmodell ist ein CRNN (Paper). Es besteht aus 3 Hauptkomponenten: Merkmalsextraktion (wir verwenden derzeit Resnet) und VGG, Sequenzmarkierung (LSTM) und Dekodierung (CTC). Die Trainingspipeline für die Erkennungsausführung ist eine modifizierte Version des deep-text-recognition-benchmark-Frameworks. (Danke @ku21fan von @clovaai) Dieses Repository ist ein Juwel, das mehr Anerkennung verdient.
Der Beam-Search-Code basiert auf diesem Repository und seinem Blog. (Danke @githubharald)
Die Datensynthese basiert auf TextRecognitionDataGenerator. (Danke @Belval)
Und einen guten Artikel über CTC von distill.pub gibt es hier.
Lass uns die Menschheit gemeinsam voranbringen, indem wir KI für alle verfügbar machen!
3 Möglichkeiten, mitzuwirken:
Coder: Bitte sende einen PR für kleine Fehler/Verbesserungen. Bei größeren sprich zuerst mit uns, indem du ein Issue eröffnest. Es gibt eine Liste möglicher Fehler-/Verbesserungs-Issues, die mit 'PR WELCOME' gekennzeichnet sind.
Benutzer: Erzähl uns, wie EasyOCR dir/deiner Organisation nützt, um die weitere Entwicklung zu fördern. Poste auch Fehlerfälle im Issue-Bereich, um zukünftige Modelle zu verbessern.
Tech-Leiter/Guru: Wenn du diese Bibliothek nützlich findest, verbreite bitte die Nachricht! (Siehe Yann Lecuns Post über EasyOCR)
Um eine neue Sprache anzufragen, müssen wir dich bitten, einen PR mit den folgenden 2 Dateien zu senden:
Wenn deine Sprache besondere Elemente hat (wie 1. Arabisch: Zeichen ändern ihre Form, wenn sie miteinander verbunden werden + Schreiben von rechts nach links 2. Thailändisch: Einige Zeichen müssen über der Zeile stehen und andere darunter), kläre uns bitte nach bestem Wissen auf und/oder gib nützliche Links an. Es ist wichtig, auf die Details zu achten, um ein System zu erreichen, das wirklich funktioniert.
Bitte verstehe außerdem, dass unsere Priorität bei beliebten Sprachen oder Sprachgruppen liegen muss, die einen großen Teil ihrer Zeichen miteinander teilen (teile uns auch mit, ob das auf deine Sprache zutrifft). Die Entwicklung eines neuen Modells dauert mindestens eine Woche, daher musst du möglicherweise eine Weile warten, bis das neue Modell veröffentlicht wird.
Siehe Liste der Sprachen in Entwicklung
Aufgrund begrenzter Ressourcen wird ein Issue, das älter als 6 Monate ist, automatisch geschlossen. Bitte öffne ein Issue erneut, wenn es kritisch ist.
Für Enterprise-Support bietet Jaided AI einen Full-Service für kundenspezifische OCR/KI-Systeme von der Implementierung über Training/Feinabstimmung bis zur Bereitstellung. Klicke hier, um uns zu kontaktieren.