Tesseract, OpenCV’s EAST oder doch lieber Google Vision API?
tarent Blog

Tesseract, OpenCV's EAST oder doch lieber Google Vision API?

16.07.2020 Posted 3 Jahren ago Marissa Elble

Optical Character Recognition (OCR) – automatische Texterkennung in Bildern: 3 Deep Learning Tools im Praxistest.

Wer einen OCR-Use Case lösen möchte, muss sich irgendwann auf eines oder eine Kombination der vielen unterschiedlichen OCR-Tools festlegen. Sich hier einen Überblick zu verschaffen, ist nicht unbedingt leicht.

In diesem Blogartikel stellen wir drei dieser Tools und unsere Erfahrungen mit ihnen vor, um die Entscheidung zu vereinfachen.

Optical Character Recognition (OCR) bzw. ‘optische Zeichenerkennung’ wird heutzutage in vielen praktischen Anwendungen genutzt. Fast jeder von uns hatte damit schon Berührungspunkte, ob bewusst oder unbewusst. In manchen Parkhäusern wird z. B. das Auto-Kennzeichen über eine Videokamera erfasst, um die Wartezeit an den Schranken zu verringern. Und wer viel reist, hat vielleicht schon einmal eine Überstezungs-App mit Fotofunktion genutzt, um Speisekarten oder Fahrpläne zu verstehen.

Man sieht hier schon deutlich: Es gibt viele Prozesse mit unterschiedlichsten Anforderungen, in denen Texterkennung nötig ist. Diese können durch OCR-Technologie automatisiert und damit effizienter gestaltet werden. Dabei werden die entsprechenden Tools kontinuierlich weiterentwickelt und präziser. In den letzten Jahren wurden die Modelle erfolgreich durch Deep Learning Methoden erweitert, d. h. zur Berechnung der Ergebnisse werden nun komplexe neuronale Netze genutzt. In diesem Blogartikel werden die populären Deep Learning Tools Tesseract, OpenCV’s EAST und Google Vision API vorgestellt.

 

OCR – was ist das jetzt eigentlich genau?

Allgemein ausgedrückt: Moderne OCR-fähige Software kann Textelemente in Bilddateien automatisch identifizieren und so extrahieren, dass sie elektronisch verwertbar sind. Dabei kann es sich um maschinell erstellten Text (hier im Artikel der Einfachheit halber ‘Druckerschrift’ genannt) oder auch um Handschrift, Logos, etc. handeln. Kern dieser Technologie bilden vorab trainierte (Deep Learning) Algorithmen, die einzelne Zeichen bzw. Wörter erkennen und diese auch im Hinblick auf den gesamten Text bewerten. Durch weitere Funktionen wie eine Kontextanalyse wird das Gesamtergebnis der Zeichenerkennung deutlich verbessert und präzisiert. Viele Tools haben solche zusätzlichen Funktionen oder werden im OCR-Prozess auch nur unterstützend herangezogen, verbessern die Ergebnisse je nach Use Case aber deutlich.

 

3 sehr unterschiedliche OCR Tools – eine Übersicht:

Tesseract wurde schon seit 1984 von Hewlett-Packard entwickelt und sollte ursprünglich in Scannern eingesetzt werden. 1994 wurde die Entwicklung allerdings eingestellt und erst seit 2005 von Google wieder aufgenommen. Google setzt seit der Tesseract Version 4 auf neuronale LSTM-Netze (Long short-term memory). Die Open Source Software ist unter der Apache-Lizenz frei verfügbar und hier auf GitHub (github.com/tesseract-ocr/tesseract) zu finden. Tesseract wird typischerweise lokal installiert, über die Kommandozeile bedient und nutzt die OCR-Engine libtesseract. Mittels einiger weniger Parameter lässt sich der Algorithmus in Hinblick auf die Input-Dateien optimieren. So kann man z. B. aus über 100 Sprachen wählen und vor der Ausführung Informationen über Text- und Seitenelemente mitgeben. Für Python-Entwickler empfiehlt sich ein Blick in die library pytesseract (pypi.org/project/pytesseract).

OpenCV (CV steht für ‘Computer Vision’) wurde von Intel ins Leben gerufen und ist eine beliebte library für Bildverarbeitung und maschinelles Sehen. OpenCV wird als freie Software unter der BSD-Lizenz für die Programmiersprachen C, C++, Python und Java entwickelt.

OpenCV’s EAST (efficient accurate scene text detector) ist ein robustes und schnelles Deep Learning Modell für ’natural scenes‘. Das bedeutet, dass EAST sehr gerne dafür genutzt wird, Text in Landschaftsbildern, z. B. von Straßenschildern, zu erkennen. Es wurde 2017 in diesem Paper beschrieben: https://arxiv.org/abs/1704.03155v2. Die Autoren setzen dabei auf ein FCN (fully convolutional network) zur effizienten Textlokalisierung. EAST selbst erkennt also nur, wo Textelemente im Bild vorliegen. Zur Extraktion wird der Bildausschnitt dann an ein Erkennungstool wie Tesseract weitergegeben. Seit der OpenCV Version 3.4.2 ist EAST Bestandteil der library.

Google Vision API (cloud.google.com/vision) bietet neben OCR mit zusätzlichen Features eine ganze Palette an nützlichen CV Services. Über eine REST bzw. RPC API können Bilder an Googles Cloud Services gesendet werden. Mögliche Response-Parameter sind u. a. Erkennung von Objekten, Gesichtern, Logos und Sehenswürdigkeiten. Google kann die Sprache von Texten automatisch erkennen und Textelemente verschiedener Granularität lokalisieren. Dazu gehören z. B. Textblöcke, Wörter oder einzelne Buchstaben. Anders als bei Tesseract oder EAST handelt es sich hier um einen kostenpflichtigen Service, für den eine Verbindung zur Google Cloud aufgebaut werden muss. Die Berechnung der Ergebnisse erfolgt also nicht lokal, sondern innerhalb der Google Cloud.

 

Tesseract, EAST und Google Vision im Praxistest

Handschrift

Um es auf den Punkt zu bringen: Tesseract kann Handschrift nicht zuverlässig erkennen. Nur Handschrift in sehr sauber geschriebener Druckschrift wird erkannt. Weicht man davon jedoch nur gering ab, extrahiert Tesseract leider nur inkorrekte Inhalte. Nutzt man das deutsche Sprachpaket für Tesseract, werden einzelne Wörter besser erkannt, andere dafür aber nicht mehr.

Die Hoffnung, dass EAST erst Wörter lokalisiert und diese dann mit Tesseract besser ausgelesen werden können, wird leider nicht erfüllt. Einzelne handschriftliche Wörter werden zwar erkannt, allerdings meist nur unvollständig und teilweise auch gar nicht. Für Handschrift führt das sogar zu einem schlechteren Output als mit Tesseract alleine.

Google Vision schneidet bei unserem Test am besten ab und gibt beeindruckende Ergebnisse zurück. Es werden fast alle Inhalte korrekt ausgelesen, alle Zahlen wurden korrekt erkannt. Nur sehr unleserliche Handschrift, die auch für ein menschliches Auge schwer zu entziffern ist, bereitet der API Probleme. Zusammenhängende Textblöcke werden erkannt, aber die leichte Rotation der Handschrift führt dazu, dass Google die Texte nicht ganz korrekt den zugehörigen Zeilen zuordnet. Insgesamt aber ein sehr gutes Ergebnis.

Druckerschrift & Logoerkennung

Tesseract erkennt einen Großteil der Texte, vernachlässigt aber die Textstruktur in unserem Lieferschein (Absätze, etc.). Besonders groß gedruckte Buchstaben und Zahlen werden richtig erkannt, aber je kleiner die Schrift bzw. je schlechter die Auflösung wird, desto mehr Probleme hat Tesseract. Das deutsche Sprachpaket sorgt dafür, dass z. B. Umlaute auch ausgegeben werden. Dafür werden wiederum andere in der Standardversion korrekt ausgelesene Buchstaben nicht mehr richtig erkannt. Große Probleme hat Tesseract beim Auslesen des Firmennamens aus Logos oder beim generellen Erkennen von Schrift auf farbigem Untergrund. Diese wurden in unserem Test von Tesseract komplett ignoriert. Die abgeschnittenen Textinhalte konnte Tesseract nicht korrekt auslesen.

Generell funktioniert die Textlokalisierung durch EAST hier deutlich besser als bei der Handschrift. Trotzdem bleiben einige Wörter oder auch einzelne Buchstaben bzw. Ziffern auf der Strecke. EAST kann allerdings Text auf farbigem Hintergrund sowie die Schrift innerhalb des Logos lokalisieren. Werden diese von Tesseract prozessiert, erhalten wir tatsächlich sehr gute Ergebnisse. EAST zeigt hier deutlich seine Vorteile es beim Auslesen einzelner anspruchsvollerer Textelemente.

Google Vision kann gedruckte Schrift auf weißem sowie farbigem Hintergrund sehr gut erkennen. Auch Schrift aus Logos abzulesen bereitet Google keine Probleme. Absätze und zusammengehörige Text wie Adressen etc. werden meist erkannt. Deutsch wird automatisch als verwendete Sprache erkannt und muss nicht als Parameter mitgegeben werden. Beeindruckend ist, dass Google auch die halb abgeschnittene Textzeile sehr zuverlässig auslesen kann. Insgesamt ein wirklich gutes Ergebnis, bei dem der Text inklusive Textstruktur (Absatz, Wort, Buchstabe) entsprechender Bildkoordinaten zurückgegeben werden.

 

Beispiele

Handschrift

Handschrift

Tesseract:
Yoln Dos fr [hve Barklles
Shawst Lisle ai [e
LWACL

Google Vision AP:
Vielen Dank für Ihre Bestellung!
Fement liefern
Putke
nir de

 

Druckerschrift

Tesseract:
NextioRte
Büro-Straße 42 – 01010 Möbelstadt Next Office
Büro-Straße 42
tarent solutions GmbH 01010 Möbelstadt
Rochusstraße 2-4
2
53123 Bonn Tel: 0421 21213xxx
LIEFERSCHEIN
tiafar-Nr – 19712annn Bestell-Nr: 4564412 Kıunrlan-Nr- 2201 Natum- 15.11 9n2n

Google Vision AP:
Next Woff ce – Büro-Straße 42 -01010 Möbelstadt
tarent solutions GmbH
Rochusstraße 2-4
53123 Bonn
Next-Office
Büro-Straße 42
01010 Möbelstadt
Tel .: 0421 21213xxx
LIEFERSCHEIN
Liefer-Nr. 12123000
Bestell-Nr.: 456441
Kunden-Nr. 2201
Datum: 15 01 2020

 

Logo und Text auf farbigem Hintergrund:

Logo und Text auf farbigem Hintergrund

Tesseract:
XT\NOI

Tesseract + EAST:
NEXT\ \OFFICE
Pos. Artikel Bezeichnung

Google Vision AP:
NEXT \ OFFICE
Pos. Artikel Bezeichnung

 

Fazit

Tesseract ist nur zu empfehlen für dunkle Druckerschrift auf hellem Hintergrund mit möglichst guter Auflösung. Es gibt zwar Sprachpakete, diese sind allerdings mit Vorsicht zu genießen. Für anspruchsvollere Texte wie z. B. Logos lohnt sich eine Implementierung von EAST. Ist die Textstruktur wichtig beim Auslesen oder handelt es sich um komplexe Dokumente wie unseren Lieferschein, empfehlen wir weitere Preprocessing Schritte (OpenCV bietet hier viele Möglichkeiten). Möchte man eine schnelle und zuverlässige Lösung und ist bereit, dafür zu zahlen und die Daten in die Cloud zu laden, ist von diesen Tools Google Vision API die erste Wahl. Reine Texterkennung in Bildern ist für 1000 Anfragen pro Monat sogar kostenlos. Danach werden bis zu 1,50 $ pro 1000 Anfragen berechnet. Möchte man nicht nur reinen Text auslesen, lässt sich Google zusätzliche Dienste wie Logo- oder Labelerkennung allerdings extra vergüten.