Frage

Nun, ich verwende eine kompilierte .NET-Version dieser OCR, die unter @ zu finden ist. http://www.pixel-technology.com/freeware/tessnet2/

Ich habe es zum Laufen gebracht, aber das Ziel besteht darin, Nummernschilder zu übersetzen. Leider übersetzt die Engine einige Buchstaben nicht genau. Hier ist zum Beispiel ein Bild, das ich gescannt habe, um die Zeichenprobleme zu ermitteln

enter image description here

Ergebnis:

12345B7B9U ABCDEFGHIJKLMNUPIJRSTUVHXYZ

Daher werden folgende Zeichen falsch übersetzt:

1, O, Q, W

Das scheint nicht so schlimm zu sein, aber auf meinen Nummernschildern ist das Ergebnis nicht so toll:

enter image description here = H4 ODM

enter image description here = LDH IFW

Fake-Test

enter image description here = NR4 y2k

Wie Sie vielleicht sehen können, habe ich versucht, das Rauschen zu reduzieren, den Kontrast zu erhöhen und Pixel zu entfernen, die nicht absolut schwarz sind, ohne wirkliche Verbesserungen.

Anscheinend kann man der Engine neue Schriftarten „lernen“, aber ich denke, ich müsste die Bibliothek für .NET neu kompilieren, außerdem scheint dies auf einem Linux-Betriebssystem durchgeführt zu werden, das ich nicht habe.

http://www.scribd.com/doc/16747664/Tesseract-Trainingfor-Khmer-LanguageFor-Posting

Da ich nicht weiß, was ich als Nächstes ausprobieren soll, habe ich eine kurze Konsolenanwendung geschrieben, die nur zu Testzwecken dient, falls jemand sie ausprobieren möchte.Wenn jemand irgendwelche Ideen/Grafikmanipulationen/Bibliotheksgedanken hat, würde ich mich freuen, sie zu hören.

War es hilfreich?

Lösung

Ich habe Tesseract kürzlich über Tessnet2 verwendet (Tessnet2 ist ein VS2008 C ++ - Wrapper um Tesseract 2.0 von Rémy Thomas, wenn ich mich recht erinnere). Lassen Sie mich versuchen, Ihnen mit dem geringen Wissen zu helfen, das ich über dieses Tool habe:

  • 1. Wie oben erwähnt, ist dieser Wrapper nur für Tesseract 2.0 und den > Die neueste Tesseract-Version in Google Code ist 3.00 (der Code wird nicht mehr in Source Forge gehostet). Es gibt regelmäßige Mitwirkende: Ich habe gesehen, dass Version 3.01 oder so geplant ist. Sie profitieren also nicht von den letzten Verbesserungen, einschließlich der Analyse des Seitenlayouts, die hilfreich sein können, wenn Ihre Nummernschilder nicht zu 100% horizontal sind.

  • Ich habe Rémy nach einem Tessnet2 .NET-Wrapper für Version 3 gefragt, er plant derzeit keinen. Also müssen Sie es wie ich selbst tun!

  • Wenn Sie also die neueste Version der Quellen erhalten möchten, können Sie diese von der Subversion Repository (alles ist auf der dedizierten Site-Seite beschrieben) und Sie ' Sie können sie kompilieren, wenn Sie über Visual Studio 2008 verfügen, da die Quellen eine VS2008-Lösung im Unterordner vs2008 enthalten. Diese Lösung besteht aus VS2008 C ++ - Projekten. Um also Ergebnisse in C # zu erzielen, müssen Sie .NET P / Invoke mit dem vom Projekt erstellten tessDll verwenden. Wenn Sie dies erneut benötigen, habe ich Codebeispiele, die Sie vielleicht interessieren, aber Sie möchten möglicherweise bei C ++ bleiben und beispielsweise Ihre eigenen neuen WinForm-Projekte ausführen!

  • Wenn Sie das Kompilieren erreicht haben (es sollte keine größeren Probleme geben, aber sagen Sie mir, wenn Sie einige treffen, habe ich sie möglicherweise auch getroffen :-)), haben Sie in der Ausgabe mehrere Binärdateien, die ermöglicht es Ihnen, ein bestimmtes Training zu machen! Auch hier gibt es eine Seite, die speziell dem Tesseract 3-Training gewidmet ist . Dank dieser Schulung können Sie:

    • Beschränken Sie Ihren Zeichensatz, wodurch die Interpunktion automatisch entfernt wird (z. B. '/ - \' anstelle von 'A').

    • geben Sie die Mehrdeutigkeiten an, die Sie festgestellt haben ('D' anstelle von 'O', wie Sie sehen konnten, 'B' anstelle von '8' usw.), die bei der Verwendung Ihres Trainings berücksichtigt werden.

    • Ich habe auch gesehen, dass Tesseract-Ergebnisse besser sind, wenn Sie das Bild auf die Zone beschränken, in der sich die Buchstaben befinden (dh kein Gesicht, keine Landschaft): In meinem Fall musste ich nur eine bestimmte Zone von erkennen Karten Fotos, die von einer Webcam aufgenommen wurden, daher habe ich die Zone mithilfe der Bildverarbeitung eingeschränkt. Das war natürlich lang, aber meine Bilder stammten aus vielen verschiedenen Quellen, so dass ich keine andere Wahl hatte. Wenn Sie Bilder erhalten, die auf ein Minimum beschränkt sind, ist das großartig!

      Ich hoffe, es hat geholfen, zögern Sie nicht, mir Ihre Bemerkungen und Fragen zu geben!

Andere Tipps

Hallo, ich habe viel OCR mit Tesseract gemacht und hatte auch einige Ihrer Probleme.Sie fragen nach BILDVERARBEITUNGS-Tools, und ich würde sie empfehlen „Papier ausziehen“ (Es gibt auch Windows-Ports, siehe Google) Das ist ein nettes Programm zum Entzerren, Entdrehen, Entfernen von Rändern und Rauschen usw.Ideal zum Laufen vor dem Training.

Wenn Ihre Bilder eine (etwas) variable Hintergrundfarbe haben, würde ich die empfehlen Imagemagick-Skript „textcleaner“.Ich denke, es geht um die Kantenerkennung und das Ausbleichen aller nicht kantigen Dinge.

Und wenn Sie komplexen Text haben, dann „Okropus“ könnte von Nutzen sein.Syntax ist (unter Linux):„ocroscript rec-tess“

Mein Setup ist 1.textcleaner 2.Unpaper 3.ocroups

Mit diesen drei Schritten kann ich fast alles lesen.Selbst ziemlich verschwommene und verrauschte Bilder, die bei ungleichmäßiger Beleuchtung aufgenommen wurden und zwei Spalten mit dicht gepacktem Text enthalten, sind sehr gut lesbar.Okay, vielleicht besteht Ihr Bedarf nicht aus so viel Text, aber Schritt 1) ​​und 2) könnten für Sie von Nutzen sein.

Ich baue derzeit eine Kennzeichenerkennungs-Engine für ispy - Ich habe mit tesseract viel bessere Ergebnisse erzielt, als ichTeilen Sie das Nummernschild in einzelne Zeichen auf und erstellen Sie ein neues Bild, das vertikal mit Leerzeichen angezeigt wird:

W

4

O

O

M

Ich denke, ein großes Problem, das Tesseract hat, ist, dass es versucht, Wörter aus den horizontalen Buchstaben und Zahlen zu machen, und im Fall von Nummernschildern mit Buchstaben und Zahlen wird es entscheiden, dass eine Zahl ein Buchstabe ist oder umgekehrt.Wenn Sie ein Bild mit vertikal angeordneten Zeichen eingeben, werden diese als einzelne Zeichen anstelle von Text behandelt.

Eine gute Lektüre! http://robotics.usc.edu/publications/downloads/pub/635/

Informationen zu Ihrem Schräglaufproblem bei Nummernschildern:

Problem: Wenn die OCR-Eingabe von einer Handkamera stammt oder ein anderes Bildgebungsgerät, dessen Perspektive nicht wie festgelegt ist Bei einem Scanner können Textzeilen vom Original abweichen Orientierung [13]. Basierend auf unseren Experimenten wurde die Fütterung eines solchen Das gedrehte Bild zu unserer OCR-Engine erzeugt extrem schlechte Ergebnisse Ergebnisse. Vorgeschlagener Ansatz: Ein Prozess zur Erkennung von Schräglauf ist erforderlich bevor Sie die Erkennungs-Engine aufrufen. Wenn ein Versatz festgestellt wird, Ein automatischer Rotationsvorgang wird durchgeführt, um den Versatz zu korrigieren bevor Sie den Text weiter verarbeiten. Während der Identifizierung des Algorithmus Um für die Erkennung von Schrägstellungen verwendet zu werden, haben wir festgestellt, dass viele Ansätze wie der in [13] erwähnte basieren auf die Annahmen, dass Dokumente einen gewissen Rand haben. Jedoch, Diese Annahme gilt nicht immer in unserer Bewerbung. Darüber hinaus basieren traditionelle Methoden auf morphologischen Operationen und Projektionsmethoden sind extrem langsam und neigen dazu, bei Vorhandensein von mit der Kamera aufgenommenen Bildern zu versagen. In diesem Arbeit wählen wir einen robusteren Ansatz basierend auf Branchand- Algorithmus zur Suche gebundener Textzeilen (RAST-Algorithmus) [25] zur Schräglauferkennung und automatischen Drehung. Die Grundidee davon Der Algorithmus besteht darin, jede Zeile unabhängig zu identifizieren und die zu verwenden Steigung der besten Bewertungslinie als Schräglaufwinkel für die gesamte Textsegment. Nach dem Erkennen des Schräglaufwinkels beträgt die Drehung entsprechend durchgeführt. Basierend auf unseren Experimenten haben wir gefunden Dieser Algorithmus soll sehr robust und äußerst effizient sein und schnell. Es litt jedoch unter einer geringfügigen Einschränkung in das Gefühl, dass es keine Rotation von mehr als 30 erkennen konnte. Wir haben auch einen alternativen Ansatz versucht, der jeden erkennen kann Schräglaufwinkel bis 90. Dieser Ansatz basierte jedoch bei Vorhandensein eines Kreuzes auf dem Bild. Durch Aufgrund der mangelnden Erweiterbarkeit haben wir uns entschlossen, bei RAST zu bleiben Algorithmus.

Tesseract 3.0x bestraft standardmäßig Kombinationen, die keine Wörter und keine gebräuchlichen Wörter sind.Die FAQ beschreibt eine Methode, um die Abneigung gegen solchen Unsinn zu erhöhen.Es kann hilfreich sein, die Strafe für seltene oder nicht vorhandene Wörter auszuschalten, wie hier (umgekehrt) beschrieben: http://code.google.com/p/tesseract-ocr/ wiki / FAQ # Wie kann man das Vertrauen in / die Stärke des Wörterbuchs erhöhen?

ABCocr .NET verwendet Tesseract3, sodass dies möglicherweise angemessen ist, wenn Sie den neuesten Code unter .NET benötigen.

Wenn jemand aus der Zukunft auf diese Frage stößt, gibt es ein Tool namens jTessBoxEditor, mit dem das Unterrichten von Tesseract zum Kinderspiel wird.Sie müssen es nur auf einen Ordner mit Beispielbildern richten, dann auf eine Schaltfläche klicken und Ihre * .learneddata-Datei für Sie erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top