Ergebnis 1 bis 5 von 5
  1. #1
    W32.Lovgate Avatar von Mafio
    Registriert seit
    03.08.2008
    Beiträge
    346

    Pfeil OCR und Image Recognition unter Linux

    Guten Tag Free-Hack,

    in den letzten Tagen (Nächten um genau zu sein) habe ich mich intensiv mit Texterkennung und Bildverarbeitung beschäftigt und bin daran langsam am verzweifeln (wenn es nicht so ein spannendes Thema wäre).

    Die Idee ist, dass ich für meine Buchführung Quittungen, Rechnungen, Briefe usw. einscanne und die dann automatisch verarbeiten lasse.
    Die Verarbeitung soll so erfolgen, dass der Scan automatisch vom Drucker an ein Programm gesendet wird, welches dann zunächst so Standardsachen macht wie Rauschkorrektur, Ausrichtung, schwarze Ränder entfernen usw. und dann eine Texterkennung durchführt und die Ergebnisse einmal in eine Datenbank abspeichert (damit später danach gesucht werden kann) und einmal zusammen mit dem Scan als durchsuchbare PDF abspeichert.

    Gedacht, getan. Ich habe also ein schönes kleines Java Programm geschrieben was genau das leistet. Es startet einen eingebauten FTP Server und wartet darauf, dass mein Scanner was hochlädt. Dann splittet es die PDF Datei in einzelne Seiten auf, konvertiert diese ins PPM Format (pdf2ppm), sodass ich sie mit unpaper vernünftig nachbessern kann, dann werden sie mit ImageMagick zurecht geschnitten und als bmp zur Texterkennung an tesseract geschickt. tesseract gibt dann eine hOCR Datei und eine normale Text Datei aus. Die hOCR Datei verbinde ich dann mit hocr2pdf zu einer durchsuchbaren PDF Datei (oder auch Sandwichpdf) und speichere den Inhalt der Text Datei in eine Datenbank. Die PDF Datei wird vorher noch komprimiert, was (seltsamerweise tatsächlich) am effizientesten geht, in dem ich sie in eine ps Datei umwandle und dann wieder zurück in eine pdf Datei. Mit noch ein paar Anpassungen und Verbesserungen sind das ca. 400 Zeilen Code.

    Auch wenn diese Lösung recht aufwendig erscheint, so ist sie dennoch besser als einige Ideen die ich zuvor hatte. Verworfen habe ich z.B. den Einsatz von cuneiform, da das oftmals viel bis teilweise schlechtere Ergebnisse als tesseract geliefert hat. Auch umgeworfen hatte ich meine anfänglichen Bemühungen ein Programm zu schreiben, welches die Funkionen von unpaper übernimmt. Ich hatte es mit Skripten für ImageMagick versucht, aber da ImageMagick für so etwas scheinbar nicht konzipiert ist, jedenfalls nicht in diesem Umfang (es gibt z.B. ein einzelnes Skript was Bilder ausschneidet und dreht, aber versucht das mal so umzuschreiben, dass es auf Text OHNE einen Bildrand anwendbar ist ) hatte ich damit keinen Erfolg. Eine andere Idee war es, dass ganze mit einem Neuronalen Netzwerk zu implementieren, aber irgendwie bin ich der Auffassung, man müsste sich damit Jahrzehnte lang auseinander setzen bevor man das endgültig händeln könne... XD Jedenfalls war ich schon ganz dankbar, dass ich unpaper gefunden hatte.

    Zufrieden mit meinem Programm, was die Aufgabe eigentlich recht gut erledigte, hab ich mich eigentlich damit abgefunden, dass mal hier, mal dort einzelne Fehler auftraten. OCR kenne ich schließlich noch von den Anfängen her, als es schier unglaublich war, dass so etwas wirklich machbar war.

    Neugierig darauf wie mein Programm (bzw. mein Skript was viele verschiedene Programme nacheinander ausführt) wohl im Vergleich mit anderen Programmen abschneiden würde, habe ich einfach mal eine eingescannte Datei genommen und Adobe Acrobat X Pro dran gelassen.

    ...



    Wow... Das einzige was mein Programm besser konnte, war das zuschneiden und komprimieren der Dateien (was vermutlich daran lag, dass ich Acrobat nicht gesagt hab das es das auch machen soll), aber im Bereich der Texterkennung hatte mein Programm überhaupt keine Chance. Ich weiß nicht was schief gelaufen ist, Adobe hat gute 95% der Zeichen richtig erkannt und im Gegensatz zu meinem Programm alle samt exakt an die richtige Stelle gesetzt.

    Warum ist das Programm von denen um so vieles besser? Die Texterkennung mit tesseract wird von Google eingesetzt und entwickelt, und die digitalisieren ganze Bücher und machen sie durchsuchbar. hocr2pdf ist das einzige Programm überhaupt unter Linux um durchsuchbare PDF Dateien zu erzeugen. Getestet habe ich (unter anderem mit 600 dpi) und die Korrekturen von unpaper sahen optisch auch sehr gut aus. Ich arbeite hier also eigentlich mit dem Besten was ich kenne, erreiche aber dennoch unzulängliche Ergebnisse.
    Gut... man könnte jetzt sagen, dass sie für mich ausreichend waren, bevor ich es mit Adobe gemacht habe. Aber jetzt da ich weiß was möglich ist, will ich es auch so machen können!

    Um nach der ganzen Einleitung mal zu meiner eigentlichen Frage zu kommen: Wie kann ich die Texterkennung verbessern? Meine Anforderung ist im Prinzip, dass ich unter einem Linux Server vollautomatisch mit 300 dpi eingescannte PDF Dokumente durchsuchbar machen kann und zusätzlich auch den normalen Text abspeichern kann. Und das alles vollautomatisch von der Konsole aus.

    So wie es im Moment aussieht, wäre es sinnvoller (wenn es nicht so absurd wäre), dass ich einen Bot schreibe der in einer Virtuellen Maschine Adobe Acrobat X Pro laufen lässt und damit die Dateien bearbeitet. Aber das ist natürlich vollkommen lächerlich. Ich habe auch schon mal geschaut; es gibt keine API die Adobe anbietet, jedoch einen Enterprise Server der so etwas machen können sollte... aber ich glaube kaum, dass ich da als Privatperson einfach so ran komme (ohne ein Vermögen dafür ausgeben zu müssen). Was ich mir auch schon überlegt habe war nach anderen Programmen zu suchen die so etwas ähnliches leisten. Schließlich sollte man davon ausgehen, dass das eine übliche Aufgabe ist und ich dafür kein Programmierneuland betreten muss. Gestoßen bin ich dabei auf ABBYY für Linux welches (scheinbar) das machen kann was ich möchte. Aber ich weiß noch nicht wirklich ob das was vernünftiges ist. Zum einen scheint die Linux Version 2 Versionen hinter der Windows Version zu liegen, zum anderen kostet eine Lizenz 140€... Wenn ich schon so viel Geld für ein Programm ausgeben soll welches es auch in schlechterer Qualität kostenlos gibt, dann möchte ich wenigstens wissen, dass es die beste OCR anbietet die es gibt...

    Eure Meinungen dazu? Ideen? Bin ich vielleicht wieder (Vgl. upaper ) dabei das alles viel zu kompliziert zu machen weil es bereits ein Programm gibt, dass das alles viel einfacher kann?

    Danke schon mal für's lesen

    Mit freundlichen Gruß,

    Mafio
    [B] Web Programmierung und Design PhP, MySQL, JavaScript, AJAX, HTML 5, CSS 3.0 ...
    [B] Hosting eines Game-/Voice-/Webserver o.ä.
    [S] Jemanden der [B] gebrauchen kann

  2. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    tosski (21.08.2015)

  3. #2
    Trojaner
    Registriert seit
    16.01.2012
    Beiträge
    79

    Standard AW: OCR und Image Recognition unter Linux

    ich kann dir bei deiner eigentlichen Frage leider nicht weiterhelfen, aber dein Projekt ist so ziemlich genau das, was ich auch schon seit längerer Zeit plane aber bislang nie angefangen habe.

    Würde also was das angeht gerne auf dem Laufenden bleiben - und vielleicht, wenn du nichts dagegen hast, auch mal auf den Code gucken?
    ~feVer

    Was die Welt als geistige Gesundheit bezeichnet, hat uns in die derzeitigen planetarischen Krisen geführt [...] und die einzige lebensfähige Alternative ist der Wahnsinn.


    Jabber: fever@jabber.free-hack.com

  4. #3
    W32.Lovgate Avatar von Mafio
    Registriert seit
    03.08.2008
    Beiträge
    346

    Standard AW: OCR und Image Recognition unter Linux

    Gern, sobald ich eine vernünftige Lösung habe schicke ich dir den Code. Allerdings habe ich das alles für die Eigenbenutzung geschrieben, d.h. kaum Kommentare und ein kein Codingstyle der einer Veröffentlichung angemessen wäre

    Im Übrigen: Ich habe jetzt mal diese Trail Version von ABBYY installiert und bin nicht gerade so begeistert wie von dem Adobe Resultat... Soll aber nicht heißen, dass das zu nichts taugt, denn ich habe mich noch nicht vollständig mit der Konfiguration befasst.
    [B] Web Programmierung und Design PhP, MySQL, JavaScript, AJAX, HTML 5, CSS 3.0 ...
    [B] Hosting eines Game-/Voice-/Webserver o.ä.
    [S] Jemanden der [B] gebrauchen kann

  5. #4
    Sobig Wurm
    Registriert seit
    18.03.2007
    Beiträge
    200

    Standard AW: OCR und Image Recognition unter Linux

    Hilft dir jetzt wohl nicht wirklich weiter, aber dein "programm" klingt einfach nach hin und her pipen verschiedener tools, ich glaube das man das mit einem shellscript in maximal 10% der codezeilen schreiben kann. Dann sparste dir schonmal das laden der JVM.
    nuffing

  6. #5
    W32.Lovgate Avatar von Mafio
    Registriert seit
    03.08.2008
    Beiträge
    346

    Standard AW: OCR und Image Recognition unter Linux

    Ja, Shell war natürlich mein erster Ansatz, aber da ich auch einiges mit der Java Advanced Imaging API mache und ursprünglich ja meine ganze Bildoptimierung in Java realisieren wollte (bis ich dann unpaper gefunden hatte) habe ich mich dafür entschieden. (Ganz davon abgesehen, dass ich dann ohnehin noch ein Programm schreiben müsste was am Ende des Shell Skriptes ausgeführt wird und die Sachen in die Datenbank schreibt )

    Aber du hast schon recht, jetzt nachdem ich das Programm fertig habe hilft es wirklich nicht weiter
    [B] Web Programmierung und Design PhP, MySQL, JavaScript, AJAX, HTML 5, CSS 3.0 ...
    [B] Hosting eines Game-/Voice-/Webserver o.ä.
    [S] Jemanden der [B] gebrauchen kann

Ähnliche Themen

  1. Programmieren unter Linux ?
    Von ticox im Forum Linux und UNIX-Systeme
    Antworten: 31
    Letzter Beitrag: 15.05.2010, 23:13
  2. Voice Recognition
    Von Der_apfel im Forum Windows
    Antworten: 0
    Letzter Beitrag: 29.04.2010, 21:58
  3. C++ unter Linux
    Von Bullterrier im Forum C, C++
    Antworten: 15
    Letzter Beitrag: 28.04.2010, 12:45
  4. Antworten: 2
    Letzter Beitrag: 10.06.2009, 11:26
  5. VPN unter Linux
    Von Hu5eL im Forum Linux und UNIX-Systeme
    Antworten: 0
    Letzter Beitrag: 07.09.2008, 18:26

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •