Seite 1 von 1
Tesseract
Verfasst: 17. Mai 2010 15:28
von Jordy
Hi allerseits!
Hat schonmal jemand von Euch Tesseract (die OCR Software) in einer Qt Anwendung benutzt?
Ich suche einen Wrapper oder auch Bespielprojekte für Qt/Tesseract oder zur Not C++/Tesseract.
Hat jemand einen Einstiegspunkt für mich?
Verfasst: 17. Mai 2010 16:44
von upsala
Kann man das nicht über QProcess ansteuern?
Tesseract (OCR, Texterkennung)
Verfasst: 19. Mai 2010 12:07
von Jordy
Naja, das ginge schon, wäre aber sehr langsam. Das würde ich gerne vermeiden. Ich hatte gehofft jemand hätte schonmal einen Wrapper geschrieben.
Wobei ich jetzt gelesen habe, dass selbst die aktuelle Tesseract Version unter massiven Memory-Leaks leidet. Damit könnte es sowieso nötig sein, Tesseract als Prozess zu starten - damit die Speicherleichen sich nicht kummulieren.
Sehr, sehr unschön. Damit wird mir Tesseract echt unsympathisch :-/ Es gibt nur leider nicht viele frei verfügbare Alternativen.
Hat niemand das Ding mal unter Qt benutzt? Oder eine andere OCR SW?
Re: Tesseract (OCR, Texterkennung)
Verfasst: 19. Mai 2010 12:27
von franzf
Jordy hat geschrieben:Naja, das ginge schon, wäre aber sehr langsam.
Äh- warum das? Es dauert wohl Tausendfach länger, ein .tiff zu analysieren, als die Textausgabe deines QProcess zu empfangen. Der Overhead ist nicht so gewaltig gegenüber einem direkten Einbinden.
Auf der HomePage war doch auch irgendwo zu lesen, dass ein Frontend Tesseract direkt linked, such danach und du kannst es auch linken.
Auch Wikipedia weiß immer wieder etwas:
http://de.wikipedia.org/wiki/Texterkennung#OCR-Software
Da stehen freie Alternativen.
Wenn dich die MemoryLeaks stören (hast du nen Link, wo das steht?) -> selber fixen, ist OpenSource! valgrind ist ein guter Einstieg.
Verfasst: 20. Mai 2010 15:57
von Jordy
Andere freie OCRs gibts, klar, aber fast keine, die als DLL eingebunden werden könnten.
Was die Geschwindigkeit anbelangt... das macht schon einen Unterschied, wenn man vor hat, viele kleine Bildabschnitte zu verarbeiten - und das werde ich müssen. Darum möchte ich QProcess gerne vermeiden, ich fürchte das würde eine echte Bremse.
OpenSource, ja. Aber wenn ich mir die Zeit zum Leak-Debugging auch noch nehmen muss, wirds halt aufwändig - und offenbar wäre ich nicht der erste, der das Versucht hat. Der Author des Tesseract .NET Wrappers hat es auch schon versucht und ist gescheitert. Das macht mir nicht grade Lust, da viel Zeit reinzustecken.
Verfasst: 25. Mai 2010 09:17
von ralli
Das funktioniert einwandfrei. Ich habe mir ein kleines Programm geschrieben, was scanimage und tesseract benutzt.
Du solltest hier in mainwindowimpl.cpp diese Zeile anpassen, weil da ja Dein Scannerdevice eingetragen werden muß:
Code: Alles auswählen
QString Device = "scanimage -d hpaio:/usb/Photosmart_C4100_series?serial=MY6A9G11T204J7";
Also was nach dem -d steht..
Was Dein Scannerdevice ist, kannst Du mit folgendem Befehl auf der Konsole rausfinden:
Ich habe Dir das gesamte Projekt angehangen, es ist natürlich wie alles noch verbesserungswürdig, aber es funktioniert!
Viel Spaß damit.

Vielleicht kann der eine oder andere das auch gebrauchen.

Verfasst: 25. Mai 2010 11:55
von Jordy
Interessant. Vielen Dank!
Hast Du mal probiert, das eingabe.tif irgendwie durch einen Qt Puffer zu ersetzen (also die standard ein- und ausgabe dafür zu benutzen)? Das müßte doch eigentlich auch irgendwie gehen, oder? Ich vermute mal das ginge dann nicht mehr mit dem system() aufruf, sondern man bräuchte wohl explizite QProcess() Objekte, wobei ich das noch nie versucht habe.
Verfasst: 25. Mai 2010 13:04
von ralli
Gerne. Nein das habe ich noch nicht. Für mich stand erst Mal im Vordergrund, das es funktioniert. Aber es führen ja bekanntermaßen viele Wege nach Rom und Du kannst es gerne verbessern.