Tesseract

Alles rund um die Programmierung mit Qt
Antworten
Jordy
Beiträge: 22
Registriert: 15. August 2005 17:22

Tesseract

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Kann man das nicht über QProcess ansteuern?
Jordy
Beiträge: 22
Registriert: 15. August 2005 17:22

Tesseract (OCR, Texterkennung)

Beitrag 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?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Tesseract (OCR, Texterkennung)

Beitrag 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.
Jordy
Beiträge: 22
Registriert: 15. August 2005 17:22

Beitrag 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.
ralli
Beiträge: 45
Registriert: 28. September 2004 06:05

Beitrag 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:

Code: Alles auswählen

lpstat -v
Ich habe Dir das gesamte Projekt angehangen, es ist natürlich wie alles noch verbesserungswürdig, aber es funktioniert!
Viel Spaß damit. :D Vielleicht kann der eine oder andere das auch gebrauchen. :D
Dateianhänge
ocrmaker.zip
OcrMaker ist ein kleines Programm um eine DIN A4 Seite einzuscannen, in eine TIF Datei umzuwandeln und danach die Texterkennung durchzuführen. Der Text kann dann geladen und nach der Weiterbearbeitung auch neu gespeichert werden. Auch die Druckfunktion
(135.36 KiB) 197-mal heruntergeladen
Arch Linux - Openbox: CPU: P4 3,0 - RAM: 2048 MB - Graka: Nvidia Geforce 9500 GT 1024 MB mit aktuellem Nvidia Treiber - HDD: 250 GB und 1 TB - Qt 4.7.0 - QtCreator 2.01
Jordy
Beiträge: 22
Registriert: 15. August 2005 17:22

Beitrag 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.
ralli
Beiträge: 45
Registriert: 28. September 2004 06:05

Beitrag 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.
Arch Linux - Openbox: CPU: P4 3,0 - RAM: 2048 MB - Graka: Nvidia Geforce 9500 GT 1024 MB mit aktuellem Nvidia Treiber - HDD: 250 GB und 1 TB - Qt 4.7.0 - QtCreator 2.01
Antworten