16 Juni 2008

cellwriter

...ich bin begeistert. Vor ein paar Tagen habe ich die Software cellwriter entdeckt, die einzelne, in ein Kammfeld geschriebene Buchstaben (ich vermeide den Begriff Glyphe, da z.B. keine Ligaturen aufgelöst werden) den entsprechenden Charactern (Graphemen) im angegebenen und trainierten Zeichensatz zuordnen. Es geht also um Schriftzeichenerkennung. Die Software benutzt ein paar Algorithmen, die in einem beiliegenden Text erklärt werden und ist natürlich hauptsächlich zur Verwendung auf PDAs gedacht. Als freie Software auf diesem Gebiet kannte ich bislang nur STIHRS und die Bibliothek LipiTk, hatte beide jedoch noch nicht wirklich getestet.
Natürlich hoffe ich weiter auf eine (freie) Software zur Handschriftenerkennung - dieser im Weg stehen natürlich Segmentierungsprobleme (wie so oft).
Will man sich auf dem Gebiet weiter informieren, empfehle ich den Forschungsüberblick von Bianca Feldmann (PDF, auf dem Dokumentenserver der Uni Göttingen) und z.B. die Artikel und Vorträge, die rund um die ICDAR entstanden sind. Zur Handschriftenerkennung per HMM gab es dort einen wohl sehr interessanten Vortrag von G. Fink und T. Plotz (Uni Dortmund). Mit Handschriftenerkennung mittelalterlicher Texte und der Schreiberidentifikation anhand der Handschrift beschäftigt sich Marius Balacu (Uni Groningen).
Mit der Rechenleistung heutiger Rechner wird so einiges möglich, wovon ich damals, als ich den ersten Handheld-Scanner an einen 386er anschloß, nur träumen konnte und was demnächst die Textdigitalisierung und den täglichen Gebrauch des Rechners als Textverarbeitungsmaschine erleichtern wird - da freu ich mich jetzt schon drauf.

Labels: , , ,

30 April 2008

OCRopus

...letzten Oktober hatte ich mich ja nochmal an einer line segmentation handschriftlicher Texte versucht und wollte mir hierzu auch noch OCRopus ansehen, wenn es dann fertig ist (bzw. ich es auf meinem Rechner zum laufen bekomme). Heute war es dann soweit: Nachdem sich OCRopus hier vorgestern noch nicht bauen ließ, wurde praktisch über Nacht der Bug gefixt und die derzeitige Revision 800 (http://ocropus.googlecode.com/svn/trunk/) funktioniert bestens mit Tesseract in der Revision 169 ( http://tesseract-ocr.googlecode.com/svn/trunk/). Nur kurz, wie man beides (z.B.) zieht und installiert, erst Tesseract:
svn co http://tesseract-ocr.googlecode.com/svn/trunk/ tesseract-ocr
Und in tesseract-ocr dann
./configure
make
make install

Prüfen, ob Tesseract funktioniert:
tesseract eurotext.tif test
test sollte nun den Text enthalten, den man in dem Bild eurotext.tif sieht. Nun noch OCRopus ziehen und bauen:
svn co http://ocropus.googlecode.com/svn/trunk/ ocropus
Und in ocropus dann
./configure
jam

Wenn alles ordentlich durchlief dann z.B. mit
ocrocmd/ocrocmd data/pages/alice_1.png
testen, ob die Zeichenerkennung auf dem Testbild (Alice im Wunderland) funktioniert.
Bestenfalls erhält man html mit der segmentation des Bildes und dem Text. Ich habe das Ganze mal so, wie es ist, auf ein Stück aus der Trierer HS30 losgelassen. Das Ergebnis sieht man auf dem Bild (die unterschiedlichen Farben haben keine Bedeutung). Mal sehen, was man noch alles mit dem netten Programm anfangen kann.

Labels: , ,

10 Oktober 2007

line segmentation mal wieder

...vor fast zwei Jahren habe ich mich ein wenig mit der Zeilensegmentierung handschriftlicher Texte beschäftigt - hauptsächlich spielte ich mit Filtern, also Pixel- und Kantenorientierten Verfahren rum. Irgendwann möchte ich mal Handschriften deren Transkription zeilenweise gegenüberstellen.
Neulich fiel mir die OCR-Software GOCR in die Hände, die ich natürlich gleich gegen ihren ursprünglichen Verwendungszweck auf eine Handschrift loslassen musste. Das Schöne an GOCR ist, daß man sich die Koordinaten der gefundenen Zeilen und Zeichen als XML ausgeben lassen kann. Den Ausschnitt (ein paar Zeilen) der Handschrift (als jpeg) schicken wir zuerst durch djpeg, um ihn in ein graustufiges pbm umzuwandeln, danach lassen wir gocr darauf los und lassen uns das Ergebnis als xml ausgeben:
djpeg -pnm -gray hs30.jpg | gocr -o hs30.xml -f XML -v 48 -m 256
Mit dem Parameter -v >=32 gibt uns GOCR das Ergebnis zudem noch als png aus. Für das XML kann man sich nun recht einfach ein XSL schreiben, um aus den Koordinaten der gefundenen Zeichen eine Imagemap zu erstellen. Die Links in der Imagemap sollten dann auf die entsprechende Zeile in der Transkription verweisen. So viel zur Idee...
Hier kann man sich das Resultat ansehen (oder hier als statisches html - mit xsltproc gebaut). Die Auszeichnungen von GOCR: Blaue Linien für die Zeilen, rote Rechtecke für die Zeichen. Die Koordinaten der Zeichen und die jeweilige Zeilennummer sind in den area-Tags im title-Attribut hinterlegt. Das XSL sieht so aus.
Gut, die Zeilensegmentierung ist alles andere als optimal - GOCR ist dafür nicht gedacht und funktioniert bei gedruckten Zeilen auch super. Vorgefilterte Bilder (Sobel-Filter etc.?) habe ich auf die Segmentierung von GOCR noch nicht losgelassen.
Gespannt sein darf man aber auch auf OCRopus des DFKI - ausprobiert habe ich es noch nicht, da ich keine Doku gefunden habe und es wohl (noch) kein fertiges Paket gibt.
Vielleicht kann ich ja über die nächsten kleinen Ergebnisse noch vor September 2009 berichten. :)

Labels: , ,