iOS Tesseract: schlechte Ergebnisse

Habe ich nur angefangen, um meine Hände schmutzig mit der Tesseract-Bibliothek, aber die Ergebnisse sind wirklich, wirklich schlecht.

Folgte ich den Anweisungen in dem Git-repository ( https://github.com/gali8/Tesseract-OCR-iOS ). Meine ViewController verwendet die folgende Methode, um beginnen zu erkennen:

Tesseract *t = [[Tesseract alloc] initWithLanguage:@"deu"];
t.delegate = self;

[t setVariableValue:@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" forKey:@"tessedit_char_whitelist"];
[t setImage:img];

[t recognize];

NSLog( @"Recognized text: %@", [t recognizedText] );

labelRecognizedText.text = [t recognizedText];

t = nil;

Dem Beispiel-Bild aus dem Projekt tempalte iOS Tesseract: schlechte Ergebnisse

gut funktioniert (was mir sagt, dass das Projekt selbst ist richtig eingestellt), aber immer wenn ich versuche andere Bilder, die den erkannten text ist ein komplettes Chaos. Zum Beispiel, ich versuchte, ein Bild von meinem finder anzeigen die Beispiel-Bild:

https://dl.dropboxusercontent.com/u/607872/tesseract.jpg (1,5 MB)

Aber Tesseract erkennt:

Recognized text: s f l TO  if v   Ysssifss f

 ssqxizg ss sfzzlj z

s N T IYIOGY Z I l EY s s

k Es ETL ZHE s UEY

z xhks Fsjs Es z VIII c 

s I   XFTZT c s  h V Ijzs

L s sk  sisijk J

s f s ssj Jss sssHss H VI

s s  H 

i s H st xzs
s s k 4  is x2 IV
Illlsiqss sssnsiisfjlisszxiij s
K

Sogar, wenn der Charakter whitelist enthält nur zahlen, die ich nicht ein Ergebnis erhalten, sogar in der Nähe, wie das Bild aussieht:

Recognized text:       3          74 211  

    1             

         1 1    1    

  3  53 379     1  

3  1   33  5    3 2 
      3          9 73
    1  61 2 2  
    3   1  6   5 212   7 
       1 
4     9 4  
           1  17
 111  11    1 1  11  1 1 1 1

Ich nehme an, es ist etwas falsch mit der Art und Weise fotos stammen aus der iPad mini Kamera, die ich derzeit benutze, aber ich kann nicht herausfinden, was und warum.

Irgendwelche Tipps?


Update #1

In Reaktion auf Tomas:

Ich folgte der Anleitung in deinem post stieß dabei aber auf einige Fehler entlang der Weise...

  • die UIImage+OpenCV Kategorie nicht verwendet werden, in meiner ARC-Projekt
  • Kann ich nicht importieren <opencv2/...> in meinem Controller, auto-Vervollständigung nicht bieten (und daher [UIImage CVMat] ist nicht definiert)

Ich glaube, es gibt etwas falsch mit meinem integration von OpenCV, obwohl ich folgte der Hallo-tutorial Hinzugefügt und den Rahmen. Bin ich verpflichtet zu bauen OpenCV auf meinem Mac so gut oder ist es ausreichend, nur sind die Rahmen in meinem Xcode Projekt?

Da ich nicht wirklich weiß, was Sie überlegen könnten, wie "wichtig" an diesem Punkt (ich habe schon gelesen einige Beiträge und tutorials und versucht, verschiedene Schritte), fühlen Sie sich frei zu Fragen 🙂


Update #2

@Tomas: danke, den ARC-Teil wesentlich war. Meine ViewController bereits umbenannt wurde, um .mm. Vergessen Sie den Teil über "nicht importieren können, opencv2/" da ich bereits eingeschlossen in meinem TestApp-Prefix.pch (wie es in der Hallo-tutorial).

Sich auf die nächste Herausforderung 😉

Bemerkte ich, dass wenn ich Bilder mit der Kamera aufgenommen, die Grenzen für die roi Objekt nicht erfolgreich berechnet. Ich habe gespielt, um mit dem Gerät die Orientierung und setzen einen UIImage aus meiner Sicht zu sehen, das Bild, die Verarbeitung der Schritte, aber manchmal (auch wenn das Bild richtig ausgerichtet ist), die Werte sind negativ, weil die if-Bedingung in der bounds.size()-for-Schleife nicht erfüllt. Der Schlimmste Fall, den ich hatte: minX/Y und maxX/Y wurden nie berührt. Lange Geschichte kurz: die Zeile beginnend mit Mat roi = inranged(cv::Rect( wirft eine Ausnahme (assertion ist fehlgeschlagen, weil die Werte waren < 0 ). Ich weiß nicht, ob die Anzahl der Konturen Sache, aber ich nehme Sie so, weil die größer die Bilder, desto wahrscheinlicher ist die Geltendmachung Ausnahme ist.

Um ehrlich zu sein: ich hatte noch nicht die Zeit zum Lesen OpenCV-Dokumentation und zu verstehen, was dein code tut, aber nun, ich glaube nicht, dass es einen Weg gibt, um. Scheint so, leider für mich, meine erste Aufgabe (scan-Eingang, OCR ausführen, zeigen Sie Elemente in einer Tabelle) erfordert mehr Ressourcen (=Zeit), als ich dachte.

InformationsquelleAutor Dennis | 2014-05-13
Schreibe einen Kommentar