Hallo zusammen,
leider muss ich das beliebte Thema "OCR unter Java" wieder aufgreifen...
Viel zu lesen, entschuldigt...
Ich versuche, Fahrzeugscheine ("Zulassungsbescheinigung Teil1") von einem Scan zu digitalisieren.
Nach dem ich die Einträge hier im Forum gelesen habe [somit fällt wohl euer erster Tipp weg ] und mich auch per Google schlau gemacht hab, hätte ich gerne noch eine Meinung von euch dazu.
Begonnen habe ich mit "Asprise OCR", was aber kostenpflichtig ist, und mit der "Free-Trial-Demo" konnte ich nicht viel anfangen.
Durch die Suche auf Google stieß ich auf "oscarklee-javaocr", die Texterkennung erfolgt durch den vergleich eines Vorlagenbildes (zb mit A-Z,a-z,0-9) mit dem Scan.
Obwohl ich verschiedene Scans versucht habe, 200dpi, 300dpi jeweils in s/w und Farbe, wurden Buchstaben falsch erkannt. Zahlen funktionieren super!
Da im Fahrzeugschein die Schriftart "Courier new" verwendet wird (meiner Meinung nach muss das diese Schriftart sein, habs mehrmals verglichen), "bastelte" ich auch eine neue Vorlagendatei in dieser.
Zahlen werden nach wie vor super erkannt, doch die Buchstaben sind eine Katastrophe. N oder H, O oder o, manchmal überspringt er ganze "Teile" eines Wortes. Aus 17ECAN65 wurde "17E65", da sich die Serifen von "CAN" "berühren" und "CAN" somit als EIN Zeichen erkannt wird, welches nicht in der Vorlagendatei auftaucht.
Durch längeres stöbern hierzu wurde ich auf einen Post aufmerksam, in dem von "oscarklee-javaocr" abgeraten wird, man solle lieber "Tesseract" bzw. in meinem Fall "Tess4J" verwenden.
Eclipse auf, neues Projekt, Jar-Dateien als Bibliotheken eingebunden, Erstellungspfad angepasst, externe DLL geladen,
alles kein Problem.
Test von Tess4J
lief einwandfrei!
Lese ich den Fahrzeugschein im ganzen ein (egal ob S/W- oder Farbscan) kommt nur quark raus.
Überlegung: Zerlegen des Scheins in Zonen, wie beim "Zone OCR".
Also schnell ein paar einzelne Zeilen herausgeschnitten, Erkennung viel besser als bei "oscarklee",
Jedoch taucht nun ein neues Problem auf:
Aus "PERSONENKRAFTWAGEN" wird nun nicht "PERNKFTWAN" (wie in oscarklee javaocr) sondern
"P ERS O N ENKRAFT WAGE N" zwar sind alle Zeichen da, aber mit Leerzeichen.
ReplaceAll(" ","") wäre Quark, da ich in manchen Zeilen die Leerzeichen benötige.
Habt ihr nun Idee, Erfahrungen, Vorschläge oder Projekte für mich, die mich evtl etwas weiter bringen könnten?
leider muss ich das beliebte Thema "OCR unter Java" wieder aufgreifen...
Viel zu lesen, entschuldigt...
Ich versuche, Fahrzeugscheine ("Zulassungsbescheinigung Teil1") von einem Scan zu digitalisieren.
Nach dem ich die Einträge hier im Forum gelesen habe [somit fällt wohl euer erster Tipp weg ] und mich auch per Google schlau gemacht hab, hätte ich gerne noch eine Meinung von euch dazu.
Begonnen habe ich mit "Asprise OCR", was aber kostenpflichtig ist, und mit der "Free-Trial-Demo" konnte ich nicht viel anfangen.
Durch die Suche auf Google stieß ich auf "oscarklee-javaocr", die Texterkennung erfolgt durch den vergleich eines Vorlagenbildes (zb mit A-Z,a-z,0-9) mit dem Scan.
Obwohl ich verschiedene Scans versucht habe, 200dpi, 300dpi jeweils in s/w und Farbe, wurden Buchstaben falsch erkannt. Zahlen funktionieren super!
Da im Fahrzeugschein die Schriftart "Courier new" verwendet wird (meiner Meinung nach muss das diese Schriftart sein, habs mehrmals verglichen), "bastelte" ich auch eine neue Vorlagendatei in dieser.
Zahlen werden nach wie vor super erkannt, doch die Buchstaben sind eine Katastrophe. N oder H, O oder o, manchmal überspringt er ganze "Teile" eines Wortes. Aus 17ECAN65 wurde "17E65", da sich die Serifen von "CAN" "berühren" und "CAN" somit als EIN Zeichen erkannt wird, welches nicht in der Vorlagendatei auftaucht.
Durch längeres stöbern hierzu wurde ich auf einen Post aufmerksam, in dem von "oscarklee-javaocr" abgeraten wird, man solle lieber "Tesseract" bzw. in meinem Fall "Tess4J" verwenden.
Eclipse auf, neues Projekt, Jar-Dateien als Bibliotheken eingebunden, Erstellungspfad angepasst, externe DLL geladen,
alles kein Problem.
Test von Tess4J
lief einwandfrei!
Lese ich den Fahrzeugschein im ganzen ein (egal ob S/W- oder Farbscan) kommt nur quark raus.
Überlegung: Zerlegen des Scheins in Zonen, wie beim "Zone OCR".
Also schnell ein paar einzelne Zeilen herausgeschnitten, Erkennung viel besser als bei "oscarklee",
Jedoch taucht nun ein neues Problem auf:
Aus "PERSONENKRAFTWAGEN" wird nun nicht "PERNKFTWAN" (wie in oscarklee javaocr) sondern
"P ERS O N ENKRAFT WAGE N" zwar sind alle Zeichen da, aber mit Leerzeichen.
ReplaceAll(" ","") wäre Quark, da ich in manchen Zeilen die Leerzeichen benötige.
Habt ihr nun Idee, Erfahrungen, Vorschläge oder Projekte für mich, die mich evtl etwas weiter bringen könnten?