07 September 2010

Character Recognition

Vor gut zwei Jahren hab ich ja hier schon mal etwas zur Schrifterkennung geschrieben, das Programm cellwriter vorgestellt und einige Links rausgehauen. Mindestens seit der Zeit (aber eigentlich schon etwas länger) beschäftige ich mich hin und wieder mit dem Thema und irgendwann ist mir sogar unter der Dusche ein kleines Kriterium eingefallen, das einigermaßen dazu geeignet ist, einzelne geschriebene Zeichen (Glyphen) einem vorher trainierten Sample (und damit einem Zeichen/Character) zuzuordnen.

Genauer geht es hierbei um eine On-line Recognition und wie bei cellwriter um einzelne Zeichen, also ohne Segmentierung. Ich darf schon behaupten in den letzten Jahren viel rumprobiert zu haben: Angefangen mit einem kleinen Zeichenfeld in php-gtk, das einzelne svg-Bildchen auswarf, zwischendurch (weil es mit der Handschrift nicht so klappte) einige Tests mit Zeichen aus einem ttf, umgewandelt in bmp und svg, hier mal eine Änderung, da mal eine neue (Verbesserungs-)Idee (wieder unter der Dusche), schließlich dann mit xournal als Zeichenfläche, dessen xoj-Dateien ich in svg übersetzte, irgendwann dann mal HMMs probiert und in die Ecke geworfen, über CRM114 gestoplert, ein paar Verteilungen mit R berechnet, über SVMs nachgedacht und schließlich (wieder) bei Bayes gelandet. Gebastel, Gefrickel, ganz schlimm!

Inzwischen habe ich mir mit ruby und gtk ein kleines Programm zusammengestrickt um mein Kriterium zu testen. Für die Bayes-Klassifikation benutze ich den classifier von Lucas Carlson, meine kleine (beta, beta, beta!) Oberfläche dient sowohl zum Erstellen und Speichern der Samples als auch zur Klassifikation der eingegebenen Zeichen. Und, was soll ich sagen? Gegen eine aufwendigere Analyse (wie z.B. in cellwriter) stinkt mein kleines, allein betrachtetes Kriterium natürlich ab, aber - die richtigen Samples vorausgesetzt - kann man so schon den ein oder anderen gekritzelten Buchstaben klassifizieren.

Es geht hier ja auch nicht um eine vollständige Handschriftenerkennung sondern nur darum, meine Idee zu testen - und gegenüber den sehr sehr ernüchternden Ergebnissen von anno dazumal macht das Ding heute schon einiges her. Wie man auf dem Bild (schlecht) erkennen kann (siehe im linken Fenster ganz unten in der Statuszeile bzw. im rechten Fenster das Zeichen, das in der Liste ganz oben steht), ordnet mein Programm der geschriebenen Glyphe immerhin das richtige Zeichen (a) zu - und das bei einem Sample-Bestand von 26 Kleinbuchstaben. Die Grenzen meines Analysekriteriums sind mir auch einigermaßen klar: Ein ä wird sich damit z.B. von einem a nicht unterscheiden lassen. Für eine ordentliche Handschriftenerkennung muß man schon noch ein paar andere Kriterien bemühen. Meine (inzwischen alte) Idee ist jedenfalls erstmal umgesetzt und für mich damit wieder ein kleiner Abschnitt in Sachen "Gebastel an Handschriftenerkennung" abgeschlossen.

Labels: , , , ,