Yearly Archives

34 Articles

Posted by Elisabeth Heigl on

Language Models

Release 1.10.1

Wir haben in einem früheren Beitrag über die Verwendung von Wörterbüchern gesprochen und dabei erwähnt, dass – je besser ein HTR-Modell ist (CER besser als 7%) – der Nutzen eines Wörterbuches für das HTR-Ergebnis geringer wird.

Anders ist das beim Einsatz von Language Models, die seit Dezember 2019 in Transkribus verfügbar sind. Wie Wörterbücher werden auch Language Models bei jedem HTR-Training aus dem dort genutzten Ground Truth generiert. Anders als Wörterbücher zielen Language Models aber nicht auf die Identifizierung einzelner Wörter. Sie ermitteln stattdessen die Wahrscheinlichkeit für eine Wortfolge oder die regelmäßige Kombination von Wörtern und Ausdrücken in einem bestimmten Kontext.

Anders als bei Wörterbüchern führt der Einsatz von Language Models immer zu wesentlich besseren HTR-Ergebnissen. In unseren Tests verbesserte sich die durchschnittliche CER im Vergleich zum HTR-Ergebnis ohne Language Model bis zu 1 % – und zwar durchweg, auf allen Testsets.

Tipps & Tools: Das Language Model kann bei der Konfiguration der HTR ausgewählt werden. Anders als bei Wörterbüchern sind Language Models und HTR-Modell nicht frei kombinierbar. Es wird immer das zum HTR-Modell generierte Language Model genutzt.

Posted by Anna Brandt on

Tools im Layout-Reiter

Release 1.10.

Der Layout-Reiter hat zwei weitere Tools, auf die wir in unserem letzten Post noch nicht eingegangen sind. Sie sind vor allem bei der Layoutkorrektur sehr nützlich und ersparen lästige Kleinarbeit.

Das erste ist dazu da, um die Reading Order zu korrigieren. Wenn eine oder mehrere Textregions ausgewählt sind, werden durch dieses Tool Baselines („children of the selected element“) automatisch nach ihrer Position im Koordinatensystem der Seite geordnet. Also Baseline 1 beginnt links oben und von da weiterzählend bis rechts unten. In dem unten stehenden Beispiel wurde eine TR in mehrere zerschnitten, dabei ist aber die RO der Marginalien durcheinander gekommen. Das Tool erspart in so einem Fall die Arbeit, jede BL einzeln umbenennen zu müssen.

Das zweite Tool („assign child shapes“) hilft die BL der richtigen TR zuzuordnen. Dies kann nach dem Schneiden von Textregionen oder auch bei Baselines, die sich durch mehrere TRs ziehen, notwendig werden. Die BLs müssen dann einzeln im Layout-Reiter markiert und dort in die richtige TR geschoben werden. Alternativ markiert man die TR, in die die BL gehören und startet das Tool. Die Reading Order sollte anschließend noch einmal überprüft werden.

Posted by Dirk Alvermann on

„zwischen den Zeilen“ – Behandlung von Einfügungen

Mindestens genauso häufig wie Streichungen oder Schwärzungen kommen Überschreibungen oder zwischen die Zeilen geschriebene, eingefügte Textpassagen vor. Hier ist es in zweierlei Hinsicht nützlich, wenn man schon zu Anfang eines Projektes klärt, wie diese Fälle behandelt werden sollen.

In diesem einfachen Beispiel könnt Ihr sehen, wie wir solche Fälle handhaben.

Da wir Streichungen und Schwärzungen sowohl im Layout als auch im Text erfassen, ist es nur konsequent, wenn wir die Überschreibungen und Einfügungen ebenso behandeln. Meist werden solche Passagen schon bei der automatischen Layoutanalyse mit separaten Baselines versehen. Hin und wieder muss man da korrigieren. Auf jeden Fall wird jede Einfügung von uns als eigene Zeile behandelt und auch in der Reading Order entsprechend berücksichtigt.

Auf keinen Fall sollte man das transkribiren was über der Streichung steht, da diese Überschreibungen oder Einfügungen eine eigene Baseline haben. Auf diese Weise würde das Trainingsmaterial versfälscht, auch wenn die Präsentation des Textes für das menschliche Auge natürlich gefälliger wäre.

Posted by Dirk Alvermann on

Behandlung von Streichungen und Schwärzungen

HTR-Modelle behandeln gestrichenen Text genauso wie jeden anderen. Sie kennen da keinen Unterschied und bieten also immer ein Leseergebnis. Sie sind dabei sogar erstaunlich gut und lesen auch da noch sinnvolle Inhalte heraus, wo ein Transcriber längst aufgegeben hätte.

Das einfache Beispiel zeigt einen auch für das menschliche Auge noch lesbaren gestrichenen Text, den das HTR-Modell fast fehlerfrei gelesen hat. Richtig wäre die Lesung „billig vormeinet habe“.

Weil wir diese Fähigkeit der HTR-Modelle bereits in anderen Projekten kennenlernen durften, haben wir von Anfang an beschlossen, auch Streichungen und Schwärzungen, so gut es eben geht, zu transkribieren um dieses Potential der HTR ebenfalls auszunutzen. Die entsprechenden Passagen werden von uns im Text einfach als text-style „strike through“ getaggt und bleiben so auch für evtl. interne Suchabfragen kenntlich.

Möchte man diesen Aufwand nicht treiben, hat man schlicht die Möglichkeit, an den entsprechenden Textpassagen, die Streichungen oder Schwärzungen enthalten, in das Layout einzugreifen und bspw. die Baselines zu löschen oder entsprechend zu verkürzen. Dann „sieht“ die HTR solche Passagen nicht und kann sie auch nicht erkennen. Das ist aber nicht weniger aufwendig als der von uns gewählte Weg.

Auf keinen Fall sollte man an Streichungen generell mit dem „beliebten“ Ausdruck „[…]“ arbeiten. Die Transkriber wissen zwar was das Auslassungszeichen bedeutet, die HTR lernt hier aber, wenn viele solche Stellen ins Training kommen, etwas völlig Falsches.

Posted by Elisabeth Heigl on

Testsamples – die unparteiische Alternative

Wenn eine Projektkonzeption es nicht zulässt, den Aufbau von Testsets strategisch zu planen und zu organisieren, dann gibt es eine einfache Alternative: automatisch erstellte Samples. Sie stellen auch eine gute Ergänzung zu den von uns manuell erstellten Testsets dar, denn hier entscheiden nicht wir, sondern die Maschine, welches Material in das Testset kommt und welches nicht. Das läuft darauf hinaus, dass Transkribus einzelne Zeilen aus einer Menge von Seiten auswählt, die ihr natürlich zuvor zur Verfügung gestellt habt. Es handelt sich also um eine mehr oder weniger zufällige Auswahl. Das lohnt sich bei Projekten, die über sehr viel Material verfügen – also auch bei unserem.

Wir verwenden Samples als Gegenprobe zu unseren planmäßig manuell erstellten Testsets und weil Samples den statistischen Verfahren der Stichprobenerhebung vergleichbar sind, die die DFG in ihren Praxisregeln auch für die Überprüfung der Qualität der OCR empfiehlt.

Da HTR (anders als OCR) zeilenbasiert arbeitet, wandeln wir die Empfehlung der DFG etwas ab. Ich erkläre das am konkreten Beispiel: Für unser Modell Spruchakten_M-3K sollte eine Überprüfung der erzielten Lesegenauigkeit vorgenommen werden. Für unser Sample wurde zunächst eine Stichprobe von 600 Seiten gezogen, verteilt über den Gesamtzeitraum, für den das Modell arbeitet (1583-1627) und ausschließlich aus untrainiertem Material. Dafür wurde jede 20. Seite des Datensets ausgewählt. Bezogen auf das gesamte für diesen Zeitraum zur Verfügung stehende Material von 16.500 Seiten repräsentiert dieses Subset ca. 3,7%. All das geschieht auf dem eigenen Netzlaufwerk. Nachdem dieses Subset in Transkribus hochgeladen und mit der CITlab Advanced LA verarbeitet wurde (16.747 lines wurden insgesamt erkannt), ließen wir Transkribus ein Sample daraus erstellen. Es enthält 900 per Zufallsgenerator ausgewählte Zeilen. Das sind also ca. 5% des Subsets. Dieses Sample wurde nun mit GT versehen und als Testset zur Überprüfung des Modells genutzt.

Und so geht das in der Praxis: Im Menü „Tools“ wird die Funktion „Sample Compare“ aufgerufen. Unser Subset wird in der Collection ausgewählt und mit dem Button „add to sample“ zum Sample Set hinzugefügt. Dabei geben wir auch die Anzahl der Zeilen an, die Transkribus aus dem Subset auswählen soll an. Wir wählen hier mindestens so viele Zeilen, wie Seiten im Subset vorhanden sind, so dass rechnerisch auf jede Seite eine Testzeile kommt. In unserem Fall haben wir uns für den Faktor 1,5 entschieden, um sicher zu gehen. Das Programm wählt die Zeilen nun eigenständig aus und stellt daraus ein Sample zusammen, das als neues Dokument gespeichert wird. Dieses Dokument enthält keine pages, sondern ausschließlich Zeilen. Die müssen nun – wie gewohnt – transkribiert und so GT erzeugt werden. Anschließend kann jedes beliebige Modell über die Compare-Funktion an diesem Testset ausprobiert werden.

Posted by Elisabeth Heigl on

Auflösung

Ein technischer Parameter, der zu Beginn des Scanprozesses einheitlich festgelegt werden muss, ist die Auflösung der Digitalisate, d.h. wie viele Bildpunkte/dots per inch (dpi) das gescannte Bild aufweist.

Die DFG-Praxisregeln zur Digitalisierung empfehlen allgemein 300 dpi (S. 15). Für „Textdokumente mit dem kleinsten signifikanten Zeichen“ von bis zu 1,5 mm kann jedoch eine Auflösung von 400 dpi gewählt werden (S. 22). Tatsächlich können bei den Handschriften – insbesondere den Konzeptschriften – der frühen Neuzeit kleinste Zeichenbestandteile unterschiedliche Lesarten zur Folge haben und sollten also möglichst eindeutig zu erkennen sein. Wir haben uns daher für 400 dpi entschieden.

Neben den Vorteilen für das Entziffern der Schriften muss aber gleichzeitig auch das deutlich größere Speicherformat der 400er (rund 40.000 KB/img.) gegenüber den 300er (rund 30.000 KB/img.) Dateien bedacht und eingeplant werden!

Die gewählte dpi-Zahl hat darüber hinaus auch Auswirkungen auf den Prozess der automatischen Handschriftenerkennung. Unterschiedliche Auflösungen bringen unterschiedliche Ergebnisse der Layout Analyse und der HTR mit sich. Zur Überprüfung dieser These haben wir etwas willkürlich drei Seiten aus einer Spruchakte von 1618 ausgewählt, diese jeweils in 150, 200, 300 und 400 dpi gescannt, sämtliche Seiten in Transkribus bearbeitet und folgende CERs ermittelt:

Seite/dpi 150 200 300 400
2 3,99 3,5 3,63 3,14
5 2,1 2,37 2,45 2,11
9 6,73 6,81 6,52 6,37

Grob gesagt bedeutet eine geringere Auflösung also eine Verschlechterung der CER – wenn auch im Rahmen von unter einem Prozent.

Ehrlich gesagt, hinken solche Vergleiche der HTR-Ergebnisse aber. Schon die Grundlage der HTR – die Layout Analyse – kommt nämlich bei unterschiedlichen Auflösungen zu latent unterschiedlichen Ergebnissen die im Resultat dann die HTR-Ergebnisse (scheinbar gröbere Analysen erzielen schlechtere HTR-Ergebnisse) aber auch die GT-Produktion selbst beeinflusst (z.B. bei abgeschnittenen Wortbestandteilen).

In unserem Beispiel seht ihr dasselbe image in unterschiedlicher Auflösung. Hier verändert sich das Ergebnis der CITlab Advanced LA mit fortschreitend erhöhter Auflösung. Das initiale „V“ der ersten Zeile wird bei höherer Auflösung nicht mehr erkannt, während Zeile 10 bei höherer Auflösung zunehmend „auseinandergerissen wird“. Mit zunehmender Auflösung wird die LA sensibler – das kann Vor- und Nachteile zugleich haben.

Wichtig ist daher in erster Linie eine für das gesamte Projekt einheitliche dpi-Zahl, damit die durchschnittlichen CER-Werte sowie das gesamte statistische Material belastbar bleiben.

Posted by Dirk Alvermann on

Strukturtagging – wofür das noch gut ist (Layout and beyond)

Im einem der letzten Beiträge habt Ihr gelesen, wie bei uns ein Strukturtagging durchführt wird. Wie der gesamte Werkzeugkasten des Strukturtaggings funktioniert, könnt ihr hier nachlesen. In unserem Projekt dient es v.a. dazu, ein angepasstes LA-Modell für die mixed layouts zu erstellen. Aber da steckt noch mehr Potential drin.

Wer kennt das Problem nicht?

Wenn sich auf einer Seite mehrere, sehr unterschiedliche Handschriften befinden, wird es schwierig, gleichmäßig gute HTR-Ergebnisse zu bekommen. Am häufigsten kommt das vor, wenn eine ‚saubere‘ Handschrift von einem weiteren Schreiber in einer Konzeptschrift kommentiert worden ist. Hier seht ihr so ein Beispiel:

Der eigentliche Grund für das Problem ist, dass die HTR bislang ausschließlich auf der Ebene der Seite ausgeführt wird. Das heißt, ich kann die Seite oder Seiten entweder mit dem einen oder dem anderen HTR-Modell lesen lassen, aber nicht mit zwei verschiedenen, die den jeweils vorkommenden Handschriften angepasst wären.

Seit Version 1.10. ist es möglich,  HTR-Modelle auf der Ebene der Textregionen anzuwenden und nicht nur den Seiten zuzuweisen. Dadurch können die Inhalte einzelner spezifischer Textregionen auf einer Seite mit unterschiedlichen HTR-Modellen gelesen werden. Hier spielt das Strukturtagging eine wichtige Rolle, zum Beispiel bei Textregionen, mit vom Haupttext abweichenden Schriften. Diese erhalten einen bestimmten Strukturtag, dem wiederum ein spezielles HTR-Modell zugewiesen wird. Grund genug also, sich mit Strukturtagging auseinander zu setzen.

Posted by Anna Brandt on

P2PaLA – line detection und HTR

Release 1.9.1

Wie bereits in unserem vorherigen Post erwähnt, ist uns im Laufe unseres Projekts aufgefallen, dass die CITLabAdvanced-LA das Layout in unserem Material nicht optimal erkennt. Das geschieht nicht nur auf den optisch ’schlimmen‘ Seiten mit mixed Layouts, sondern auch bei einfachen Layouts; auf Seiten, die nur ein Textfeld benötigen, keine Notizen am Rand, großartige Streichungen im Text oder ähnliches aufweisen. Hier erkennt die automatische LA die TRs richtig, die Baselines sind jedoch meistens fehlerhaft.

Das ist nicht nur für die spätere Anzeige des Volltextes schlecht, die dadurch zum Teil verwirrend oder für den Leser unverständlich wird. Eine unzureichende LA beeinflusst auch das Ergebnis der HTR. Egal wie gut euer HTR-Modell auch ist: wenn die LA nicht eine adäquate Qualität bietet, ist das ein Problem.

Da die HTR nicht die einzelnen Zeichen liest, sondern zeilenbasiert arbeitet und Muster erkennen soll, kommen bei Zeilen, deren Anfang oder Ende von der line detection nicht richtig erkannt wurden (in denen also Buchstaben oder Wörter nicht von der LA erkannt wurden) oft falsche Ergebnisse heraus. Das hat zum Teil dramatische Auswirkungen auf die Accuracy Rate einer Seite oder eines ganzen Dokuments, wie unser Beispiel zeigt.


1587, page 41

Aus diesem Grund haben wir ein P2PaLA-Modell trainiert, welches auch BL erkennt. Das war sehr hilfreich. Es lassen sich für diese Modelle keine automatischen Statistiken wie für die CER errechnen, aber von der Ansicht her scheint es auf ‚reinen‘ Seiten fast fehlerfrei zu arbeiten. Außerdem ist der Schritt des Postprocessings in vielen Fällen nicht mehr nötig.

Das Trainigsmaterial wird ähnlich erstellt wie bei Modellen die nur TRs erkennen sollen. Man kann auch das dort verwendet Material quasi erweitern und erneut nutzen. Die einzelnen Baselines müssen für die Strukturanalyse nicht manuell getaggt werden, auch wenn das Modell es später tut, um sie den getaggten TRs zuzuordnen. Wir haben mit Unterstützung des Transkribus Teams und einem Trainingsmaterial von 2500 Seiten ein Strukturmodell trainieren können, das wir heute anstelle der Standard LA einsetzen.

Posted by Anna Brandt on

P2PaLA – Postprocessing

Release 1.9.1

Gerade am Anfang der Entwicklung eines Strukturmodells kam es bei uns vor, dass das Modell einfach jede Unregelmäßigkeit im Layout als eigene TR erkennen wollte. Das führt zu übermäßig – und überflüssig – vielen Textregions. Viele dieser TRs waren außerdem extrem klein.

Je mehr Trainingsmaterial man investiert, desto geringer wird dieses Problem. Bei uns verschwanden diese Mini-TRs, die überall auf der Seite zu finden waren, nachdem wir unser Modell mit etwa 1000 Seiten trainiert hatten. Bis dahin stören sie aber, denn sie alle von Hand zu entfernen ist mühsam.

Um diese Arbeit zu vermindern, habt ihr zwei Möglichkeiten. Einmal könnt ihr beim Start der P2PaLA schon festlegen, wie groß die kleinste TR sein darf. Dafür müsst ihr den entsprechenden Wert im „P2PaLA structure analysis tool“ vor dem Start des Jobs auswählen („Min area“).

Sollte diese Möglichkeit nicht den gewünschten Erfolg bringen, gibt es auf der linken Toolbar unter dem Punkt „other segmentation tools“ die Option „remove small textregions“. In dem geöffneten Fenster kann man die Seiten, auf denen der Filter laufen soll, einstellen und auch die Größe der zu entfernenden TRs. Die Größe wird hier in „Prozent des bestehenden Images“ gerechnet. Und hier lässt sich der Wert auch feiner kalibrieren als bei der oben genannten Möglichkeit. Wenn das Material, wie in unserem Fall, oftmals kleine Notizen oder auch nur einzelne Wörter in eigenen Textregions aufweist, dann sollte immer der kleinste oder zweitkleinste Wert gewählt werden. Wir verwenden in der Regel eine „Threshold percentage“ von 0,005.

Selbst mit einem guten Strukturmodell kann es immer noch möglich sein, dass einzelne TRs manuell verschmolzen, geteilt oder entfernt werden müssen – aber in einem deutlich geringeren Maße, als das bei der Standard LA notwendig wäre.

Tipps & Tools
Wichtig: Wenn man sicher sein will, dass man nicht zu viele TRs beseitigt, kann man mit einem „dry run“ starten. Dann wird zunächst die Anzahl der potentiell zu entfernenden TRs aufgelistet. Sobald man den Haken aus dem Kästchen entfernt, werden die betroffenen TRs beim Filtern unmittelbar gelöscht.

Posted by Anna Brandt on

P2PaLA – Training für Textregions

Release 1.9.1

An einer anderen Stelle dieses Blogs findet ihr Hinweise und Tipps zum Strukturtagging. Diese Art des Taggings kann für vieles gut sein – hier soll es um seinen Nutzen für eine verbesserte Layout Analyse gehen. Denn das Strukturtagging ist ein wichtiger Teil beim Training P2PaLA-Modelle.

Bei unseren Mixed Layouts musste die Standard LA einfach versagen. Für eine manuelle Erstellung des Layouts war das Material zu umfangreich. Also entschieden wir uns, es mit der P2PaLA zu versuchen. Dazu haben wir Trainingsmaterial erstellt, für das wir möglichst typische ’schwierige‘ Seiten aus unserem Material ausgewählt haben. Das waren Seiten, die neben dem eigentlichen Haupttext außerdem noch Randbemerkungen, Nachsätze und ähnliches enthielten.

 


coll: UAG Strukturtagging, doc. UAG 1618-1, image 12

Beim Trainingsmaterial sind nur die richtig gezogenen und getaggten Textregions wichtig. Line detection oder HTR interessieren an diesem Punkt noch nicht. Es können also auch bereits vollständig bearbeitete Seiten ins Training aufgenommen werden. Wenn man neue Seiten nimmt, auf denen nur die TR gezogen und getaggt werden muss, geht es allerdings schneller. So können in einer Stunde schon mal achtzig bis hundert Seiten für ein Training vorbereitet werden. 

Während wir bei unserem ersten Modell sieben unterschiedliche Strukturtypen getaggt hatten, haben wir die Zahl später auf fünf reduziert. Eine zu starke Differenzierung der Strukturtypen wirkt sich nach unserer Erfahrung eher negativ auf das Training aus.

Natürlich hängt der Erfolg des Trainings auch von der Menge des Trainingsmaterials ab, das man investiert. Nach unseren Erfahrungen (und bezogen auf unser Material) kann man mit 200 Seiten einen guten Anfang machen, mit 600 Seiten erhält man ein Modell mit dem man schon arbeiten kann, ab 2000 Seiten ist es sehr zuverlässig.

Tipps & Tools
Wenn man das Material für ein Strukturtraining erstellt ist es anfangs schwierig sich bewusst zu machen, dass es hier nicht um Inhalte geht. Das heißt egal welcher Inhalt dort steht, die TR in der Mitte ist immer der Paragraph. Auch wenn in der Mitte nur eine Notiz steht und das Konzept darunter viel länger ist und inhaltlich viel bedeutender. Nur so können im Training wirklich die nötigen Muster erkannt werden.