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?
Tesseract
Tesseract (OCR, Texterkennung)
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?
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)
Ä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.Jordy hat geschrieben:Naja, das ginge schon, wäre aber sehr langsam.
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.
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.
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.
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ß:
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. 
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";
Was Dein Scannerdevice ist, kannst Du mit folgendem Befehl auf der Konsole rausfinden:
Code: Alles auswählen
lpstat -vViel Spaß damit.
- 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
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.
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.
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