C ++ - Enttäuschende Leistung mit Tesseract

8

Das Unternehmen, an dem ich arbeite, erwägt, seine aktuelle OCR-Engine (Nuances OmniPage) auf eine Open-Source-Alternative wie Tesseract umzustellen.

In der Hoffnung, einige Leistungsbenchmarks (Ausführungsgeschwindigkeit und Genauigkeit) zu bekommen, um beide zu vergleichen, habe ich ein sehr einfaches Programm bekommen, um nur eine Vorstellung davon zu bekommen, wie gut die Tesseract 3.2 C API funktionieren würde.

Meine ersten Beobachtungen (einige von ihnen sind vielleicht aus, fühlen Sie sich frei, meine Interpretationen in den Kommentaren zu korrigieren):

  • Die Genauigkeit war gut. Es passt sehr gut zu unserem aktuellen Motor.
  • Die Ausgabeformate bieten nur den erkannten Text anstelle einer Vorschau, wo sich der Text im Originalbild befand. Dort ist die Möglichkeit, das hOCR-Format zu verwenden und es optisch etwas ansprechender zu machen, aber ich habe Open-Source-Konverter unter Windows nicht gefunden, die für kommerzielle Zwecke geeignet sind (ich konnte es nicht finden) die Quelle oder die ausführbare Datei von ExactCODEs hocr2pdf ). I könnte ein einfaches Skript schreiben, das die erkannte bbox für jeden Absatz konvertiert und einfach ein style -Element hinzufügt, das die left , right , width , height und position Attribute des HTML-Tags, diese Einschränkung ist also gering.
  • Leptonica (die Bildbibliothek von Tesseract) scheint das Lesen komplexer PDF-Dateien nicht zu unterstützen . Obwohl dies der Migration einen geringen Entwicklungsaufwand hinzufügt (da es nicht out-of-the-box ist), ist es kein so großes Problem, da wir bereits Module in unserem Produkt haben, um die Bilder aus PDF-Dateien zu extrahieren / li>
  • Die Ausführungsgeschwindigkeit war extrem langsam (zumindest im Vergleich zu OmniPage von Nuance). Es dauerte Tesseract ein wenig mehr als 2 Minuten auf meinem Rechner, um die Datei am Ende dieser Frage zu konvertieren. Nuance OmniPage benötigte weniger als 3 Minuten 30 Sekunden, um 10 große Dokumente (einschließlich des bereitgestellten Bildes) zu konvertieren. (Ich erinnere mich nicht genau, wie lange, aber es war eindeutig weniger als ~ 15 Sekunden für das bereitgestellte Bild)

Wenn es nur um die anderen Faktoren geht, könnte die Migration wahrscheinlich ohne zu viel Problem durchgeführt werden. Diese Leistungseinschränkung ist jedoch ein Mörder.

Dann dachte ich mir: Wie konnte Tesseract im Vergleich zu seinen kommerziellen Äquivalenten so schlecht arbeiten? Google würde sicherlich nach Leistung streben.

Also, ich bin mir fast sicher, dass das Problem von mir kommt. Ich benutze die API entweder nicht richtig, ich ändere nicht die Einstellungen, die ich sollte oder etwas anderes, das ich gerade vermisse.

Hier ist der Abschnitt meines Testprogramms zu Tesseract:

%Vor%

Ich habe versucht mit verschiedenen Seitensegmentierungsmodi und ohne die Erstellung des Hocr-Formats aktiviert zu haben, nur um genauso enttäuscht zu sein wie zuvor. Ich habe auch versucht, einige Vorverarbeitungsskripte auf das Bild anzuwenden, um zu sehen, ob es ein wenig für die Erkennung helfen würde, aber ohne Erfolg. Ich habe es mit nur einem Wörterbuch zu Testzwecken versucht, aber es hatte keine großen Auswirkungen auf die Performance. Ich hatte die gleichen Leistungsprobleme mit mehrseitigen TIF-Dateien und Einzelseiten-TIF-Bildern und versuchte noch keine anderen Formate.

Das schnelle Profiling der Anwendung mit VerySleepy zeigte, dass die meiste Ausführungszeit für new s und delete s für Begrenzungsrahmen ausgegeben wurde.

Ich würde wirklich gerne zu einer Open-Source-Bibliothek anstatt zu einem kommerziellen Produkt wechseln, daher würde ich es begrüßen, wenn mir jemand helfen könnte, eine bessere Leistung mit der API zu erzielen. Wenn ich keine dramatischen Verbesserungen erzielen kann, um Leistungsergebnisse zu erhalten, die denen der aktuellen Engine ähneln, wird die Migration nicht stattfinden.

Vielen Dank für Ihre wertvolle Zeit.

Hier ist ein Bild von meinem Testset:

    
Jesse Emond 11.07.2013, 17:26
quelle

1 Antwort

9

Ich glaube nicht, dass Sie etwas dagegen tun können. Das ist richtig, Tessect ist unglaublich langsam im Vergleich zu kommerziellen Motoren wie OmniPage oder ABBYY. Jeder Vergleichstest zeigt das. Diese Unternehmen machen OCR, um ihren Lebensunterhalt zu verdienen, und legen großen Wert auf Geschwindigkeit, Genauigkeit und andere Faktoren.

    
Tomato 18.07.2013, 07:25
quelle

Tags und Links