Monthly Archives

3 Articles

Posted by Dirk Alvermann on

Anwendungsfall: „Modell Booster“

Release 1.10.1

Unser Beispiel ist die Verbesserung unseres HTR-Modells für die Spruchakten. Das ist ein HTR-Modell, dass Kurrentschriften des 17. Jahrhunderts lesen kann. Auf der Suche nach einem möglichen Base Model findet man in den „public models“ von Transkribus zwei Kandidaten, die in Frage kommen: „German Kurrent M1+“ vom Transkribus Team und „German_Kurrent_XVI-XVIII_M1“ von Tobias Hodel. Beide könnten passen. Der Test auf dem Sample Compare ergibt allerdings, dass „German_Kurrent_XVI-XVIII_M1“ mit einer vorhergesagten mittleren CER von 9,3% auf unserem Sample Set die bessere Performance zeigte.

Für das Training wurde also „German_Kurrent_XVI-XVIII_M1“ als Base Model ausgewählt. Danach wurde der Ground Truth der Spruchakten (108.000 Wörter) und auch das Validation Set unseres alten Modells hinzugefügt. Die durchschnittliche CER unseres HTR-Modells hat sich nach dem Base Model Training erheblich verbessert, von 7,3% auf 6.6%. In der Grafik seht ihr, dass das Base Model auf dem Testset zwar wesentlich schlechter gelesen hat, als das Originalmodell, dass der Hybrid aus beiden aber besser ist als beide einzeln. Die Verbesserung des Modells ist in jedem einzelnen der getesteten Jahre zu beobachten und beträgt bis zu 1%.

Posted by Dirk Alvermann on

Modelle kombinieren

Release 1.10.1

Je länger man selbst HTR-Modelle trainiert, desto mehr beschäftigt man sich auch mit der Möglichkeit Modelle zu kombinieren. Es kann zum Beispiel sein, dass man mehrere Spezialmodelle für einzelne Schreiber oder auch Modelle, die auf besonderen Schriftarten oder Sprachen spezialisiert sind miteinander kombinieren möchte.

Ulm eine Kombination von Modellen zu erreichen gibt es verschiedenen Möglichkeiten. Hier möchte ich eine Technik vorstellen, die vor allem für sehr große generische Modelle aus meiner Erfahrung gut funktioniert – der „Model Booster“.

Dabei startet man ein Base Model Training und verwendet ein möglichst mächtiges fremdes HTR-Model als Base Model und den eigenen Ground Truth als Train Set. Bevor ihr startet aber noch zwei Ratschläge:

a) schaut euch genau die Eigenschaften des verwendeten Base Models an (für welche Zeit ist es Trainiert, für welchen Schriftstil und welche Sprache?) – sie müssen mit denen eures eigenen Materials möglichst übereinstimmen.

b) wenn möglich versucht die Performance des Base Models auf eurem eigenen Material vorherzusagen und entscheidet euch dann für das Base Model mit der besten Performance. Eine solche Vorhersage kann man recht über die Funktion Sample Compare machen. Eine andere Möglichkeit ist, das Basemodel mit dem Andvanced Compare auf dem eigenen Testset zu überprüfen.

Posted by Anna Brandt on

Transkribieren ohne Layoutanalyse?

Release 1.10.1

Wir haben in vorherigen Posts immer wieder betont wie wichtig die LA ist. Ohne sie hat ein HTR-Modell, und mag es noch so gut sein, keine Chance einen Text vernünftig zu transkribieren. Die Schritte von automatischer LA (oder einem P2PaLA-Model) und HTR löst man normalerweise getrennt voneinander aus. Jetzt ist uns aufgefallen, dass wenn ein HTR-Modell über eine komplett neue bzw. unbearbeitete Seite läuft, das Programm selbstständig eine LA ausführt.

Diese LA läuft mit den Default-Einstellungen von CITLab-Advanced LA. Dies bedeutet bei den reinen Seiten weniger Linien zu mergen und es werden zum Teil mehr als eine Textregion erkannt.

Es bedeutet jedoch auch, dass nur horizontale Schrift erkannt wird. Dasselbe Problem war bei uns auch bei unseren P2PaLA-Modellen aufgefallen. Alles was schräg steht oder gar vertikal kann so nicht erkannt werden. Dafür muss die LA manuell ausgelöst werden, mit der Einstellung ‚Text Orientation‘ auf ‚Heterogeneous‘.

Die HTR Ergebnisse sind bei dieser Methode interessanterweise besser als bei einer HTR die über eine korrigierte Layoutanalyse gelaufen ist. Wir haben dazu an bei einigen Seiten die CER ausgerechnet.

Damit ist diese Methode eine sehr gute Alternative, vor allem bei Seiten mit unkompliziertem Layout. Man spart Zeit, da man nur einen Vorgang auslösen muss und hat am Ende ein besseres Ergebnis.