Update planung authored by Robert Sachunsky's avatar Robert Sachunsky
...@@ -820,87 +820,56 @@ Inhalt: ...@@ -820,87 +820,56 @@ Inhalt:
### 7. - 8. August 2018 (am CIS in München mit Florian und Tobias) ### 7. - 8. August 2018 (am CIS in München mit Florian und Tobias)
#### Multi-OCR-Alignierung #### Multi-OCR-Alignierung
Vor der Alignierung wird die Interpunktion entfernt. Es sollen mehrere OCR-Ergebnisse (von unterschiedlichen Modellen oder Engines) einundderselben Vorlage abgeglichen werden, um schon vor der Nachkorrektur den Hypothesenraum zu erweitern. Die Lösung vom CIS funktioniert wie folgt:
Alle OCRs werden paarweise mit der Master-OCR aligniert, dann zu einer einzelnen
Eingabe für den Profiler kombiniert.
Tokenisierung findet auf Basis der Master-OCR statt.
Diese einzelnen Tokens bilden die Grundlage für die Nachkorrektur.
Ursprünglich wurde erst auf Zeilenebene und dann auf Zeichenebene alignieren,
aber auf Zeilenebene ist nun nicht mehr notwendig, da wir das als gegeben
voraussetzen dürfen (Zeilen-ID im PageXML).
Uwe Springmann hat Tests zu Multi-OCR-Nachkorrektur mit einfachen Vor der Alignierung wird die Interpunktion entfernt und an den verbliebenen Leerräumen segmentiert (Tokenisierung). Dann wird eine der OCR-Annotationen als Leitlinie (Master-OCR) festgelegt – vom Anwender/Aufrufer durch die Reihenfolge. Nun werden wortweise alle anderen OCR-Annotationen jeweils mit der Master-OCR aligniert, es entsteht also ein gerichteter Graph mit Wortkandidaten als Kanten. Für den Profiler (also die CIS-Nachkorrektur) wird dieser in eine Folge von Wortkandidaten (mit möglichen leeren Symbolen) reduziert, aber auch eine allgemeinere Ausgabe wäre möglich. Beim Ergebnis kann die Interpunktion wiederhergestellt werden.
Voting-Verfahren gemacht, was relativ gut funktioniert hat. So entstand die
Idee, auch bei OCR-D Multi-OCR einzusetzen.
Wenn ein Wort über eine Wortgrenze der Master-OCR hinweggeht, wird es Die Idee für eine Annotation in PAGE besteht darin, die Zuordnungen auf Wortebene in den indexierten, numerierten Varianten von Word:TextEquiv unterzubringen… Dabei ist die Tokenisierung der Master-OCR maßgeblich:
ignoriert/weggeworfen. (Merge) - Wenn in einer Hilfs-OCR ein Token genau mehreren Wörtern der Master-OCR entspricht, so wird mit leeren Token aufgefüllt (Merge / n:1)
- Wenn in einer Hilfs-OCR mehrere Token genau einem Wort der Master-OCR entsprechen, so wird einfach ein Leerzeichen eingefügt. (Split / 1:n)
- Wenn in einer Hilfs-OCR ein Token anderweitig über eine Wortgrenze der Master-OCR hinweggeht, wird es ignoriert/verworfen. (n:m)
Wenn die Master-OCR ein Wort an einer Stelle vorgibt, wo eine Hilfs-OCR Ursprünglich wurde zusätzlich vor der Zeilen-Ebene (welche Wörter mit welchen) noch auf Seiten-Ebene (welche Zeilen mit welchen) aligniert, aber dies ist in OCR-D nicht mehr notwendig, da wir es als gegeben
zwei Wörter erkennt, wird auch getestet, ob es zwei Wörter sein können. voraussetzen dürfen (Zeilen-ID im PageXML).
(Split)
Uwe Springmann hatte Tests zu Multi-OCR-Nachkorrektur mit einfachen
Voting-Verfahren gemacht, was relativ gut funktioniert hat. So entstand die Idee, auch bei OCR-D Multi-OCR einzusetzen, aber mit einem datengetriebenen Klassifikator.
#### METS/PageXML-Adapter #### METS/PageXML-Adapter
Die Alignierung wurde im PageXML so dargestellt, dass es für jedes Wört Die Alignierung wird in PageXML jetzt so dargestellt, dass für jedes `Word` alle Kandidaten in `TextEquiv` stehen (mit `dataType` für den Namen der Quelle).
mehrere Alternativen in TextEquivs gibt.
Im Fall von Splits in der Hilfs-OCR enthält der Eintrag Whitespaces.
Im Fall von Merges steht momentan das lange (gemergte) Wort zweimal im - Im Fall von Splits in der Hilfs-OCR enthält der Eintrag Leerzeichen.
PageXML, nämlich für jeder der Einzelwörter der Master-OCR. - Im Fall von Merges steht momentan das lange (zusammengezogene) Wort mehrfach im PageXML, also einmal für jedes der Einzelwörter der Master-OCR. Da hierbei Verwechslungsgefahr mit tatsächlich _als Wiederholung_ erkannten Token besteht, wird dies noch so geändert, daß stattdessen alle außer dem ersten Token leer sind.
Das wird auf unseren Wunsch hin noch so geändert, dass das eine Wort dann
stattdessen leer ist.
Ansonsten lässt sich die Eingabe nicht daraus rekonstruieren.
Auf Zeilenebene wurde die Alignierung so dargestellt, dass Epsilons durch Zusätzlich wird das Ergebnis der Alignierung auf der Ebene von `TextLine` durch alternative `TextEquiv` so dargestellt, dass Epsilons durch Unterstriche dargestellt sind. Das kann problematisch sein, da im Eingabestring theoretisch jedes Sonderzeichen vorkommen kann.
Unterstriche dargestellt sind.
Das kann problematisch sein, da im Eingabestring theoretisch jedes Sonderzeichen
vorkommen kann.
Beide Darstellungen können also nicht alle Information erhalten (Fall n:m, Interpunktion). (Hier ein [Gegenvorschlag](https://github.com/OCR-D/spec/issues/72) ebenfalls mittels PageXML.)
#### RNN-Sprachmodelle #### RNN-Sprachmodelle
Mögliche Ausgaben unseres Sprachmodells Sprachmodelle brauchen als Eingabe den _Verlaufskontext_ (Symbolfolge), und RNN-Sprachmodelle teilweise sogar den Gesamtverlauf. Dieser muß aus dem gesamten Suchraum der Nachkorrektur extrahiert werden, also i.A. einem _Graphen_ mit lokalen Alternativen (den zu expandieren zu teuer wäre). Dabei entsteht ein Verlaufspfad-Baum mit den kombinierten Bewertungen aus der Eingabe (Fehlermodell und Lexikon) und dem Sprachmodell. Damit dieser Baum nicht zu groß wird, kann man (per Aggregation oder History Clustering oder Push Forward) versuchen, Kanten auch wieder zusammenlaufen zu lassen. Oder man berechnet von vornherein nur einen besten Pfad (per Iterative-Viterbi-Decoding).
1. Reranking vom Suchraum
2. Ausgabe 1-bester Pfad
Wir würden das Sprachmodell auf die Ausgabe des Profilers anwenden. Mögliche Ausgaben eines Sprachmodells wären also:
1. Rescoring des Suchraumes (also wieder ein Graph)
2. 1-bester Pfad
Wir haben verschiedene Verfahren, um das Sprachmodell auf Graphen Das Sprachmodell und dessen Graph-Eingabe und Ausgabe wäre in unser Verantwortung.
anzuwenden, diskutiert (z.B. History Clustering).
Unser Sprachmodell verlangt Kontextvariablen als Input. Es ist unklar, ob Option 1 überhaupt sinnvoll ist, also dem CIS-Entscheider die Ausgabe des Sprachmodells in Form eines Graphen als zusätzlich Eingabe zu geben. Wenn doch, so paßt sie zumindest nicht in PageXML. Hier könnte man ein eigenes Format oder ein übliches FST-Format zum METS hinzufügen.
Da diese im PageXML stehen, können sie dadurch einfach ans Sprachmodell
gegeben werden.
Es ist unklar, ob es überhaupt sinnvoll ist, dem Entscheider die Ausgabe Vielleicht ist Option 2 am besten, also dem Sprachmodell die Entscheidung zu überlassen. (So wird es in der ASV-Lösung sein.) Dann würde aber der CIS-Entscheider nicht mehr benötigt werden bzw. wird durch das Sprachmodell ersetzt. Denn auch die für den Entscheider übrig bleibende Aufgabe der Rückweisung gehört ja mittlerweile zu einem eigenen Modulprojekt (nämlich QS).
des Sprachmodells als zusätzlich Eingabe zu geben.
Vielleicht ist es am besten, dem Sprachmodell die letztendliche
Entscheidung zu überlassen, dann würde aber der Entscheider nicht mehr
benötigt werden bzw. wird durch das Sprachmodell ersetzt.
Die Ausgabe des Sprachmodells passt nicht ins PageXML. Wenn man weder Option 1 noch Option 2 haben möchte, bleibt noch eine andere sinnvolle Anwendung für ein zeichenbasiertes Sprachmodell: die Bewertung potentieller neuer Wörter für die Entscheidung, ob diese zum dynamischen Lexikon hinzugefügt werden sollen. Dies wäre bei 1 und 2 aber implizit mit enthalten.
Hier könnte man ein eigenes Format oder ein übliches FST-Format
zum METS hinzufügen.
Eine sinnvolle Anwendung für ein zeichenbasiertes Sprachmodell ist bei der
Entscheidung, ob potentielle neue Wörter zum dynamischen Lexikon
hinzugefügt werden sollen.
Unser Sprachmodell verlangt später Kontextvariablen als Input.
Da diese im PageXML stehen (müssen), können sie einfach ans Sprachmodell übergeben werden.
#### Ansatz des CIS #### Ansatz des CIS
Zeichensetzung wird nicht mitkorrigiert, sondern so belassen, wie sie in Zeichensetzung wird nicht mitkorrigiert, sondern so belassen, wie sie in der Eingabe ist. Auch Zahlen ignoriert der Profiler und lässt sie unkorrigiert. Wörter mit 3 oder weniger Zeichen werden auch nicht korrigiert.
der Eingabe ist.
Der Profiler ignoriert auch Zahlen und lässt sie, wie sie sind.
Buchstaben mit 3 oder weniger Zeichen werden auch nicht korrigiert.
Die Korrektur findet auf Basis der einzelnen Tokens der Master-OCR in Die Korrektur findet auf Basis der einzelnen Tokens der Master-OCR in
3 Schritten statt: 3 Schritten statt:
...@@ -909,35 +878,29 @@ Die Korrektur findet auf Basis der einzelnen Tokens der Master-OCR in ...@@ -909,35 +878,29 @@ Die Korrektur findet auf Basis der einzelnen Tokens der Master-OCR in
2. Korrekturkandidaten des Profilers reranken 2. Korrekturkandidaten des Profilers reranken
3. Entscheider: wird korrigiert oder nicht? 3. Entscheider: wird korrigiert oder nicht?
Der Profiler braucht ca. 15 Minuten für ein Dokument (ca. 100 Seiten im Der Profiler braucht ca. 15 Minuten für ein Dokument (geschätzt durchschnittlich 100 Seiten).
Durchschnitt).
Da Verschlimmbesserungen im Impact-Projekt (mit Abbyy ohne Frakturmodell) Da Verschlimmbesserungen im Impact-Projekt (mit Abbyy ohne Frakturmodell)
ein riesiges Problem waren, will man möglichst vorsichtig korrigieren. ein riesiges Problem waren, will man möglichst vorsichtig korrigieren.
Mit den aktuelleneren OCR-Modellen ist das vermutlich kein so großes Mit den aktuelleren OCR-Modellen ist das vermutlich kein so großes
Problem mehr. Problem mehr.
Die Entscheidung, ob ein Wort ins Lexikon aufgenommen werden soll, ist zu Die Entscheidung, ob ein Wort neu ins Lexikon aufgenommen werden soll, ist zu etwa 95% korrekt.
etwa 95% korrekt.
Features des Entscheiders: Features des Entscheiders:
- OCR-Fehler, historische Pattern (Ausgabe des Profilers) - OCR-Fehler, historische Patterns (Ausgabe des Profilers)
- Multi-OCR (Ausgabe des Aligners) - Multi-OCR (Ausgabe des Aligners)
- Konfidenz der OCR - Konfidenz der OCR
Der Profiler korrigiert auch über Zeilengrenzen hinweg (fügt halbe Wörter Der Profiler korrigiert auch über Zeilengrenzen hinweg (fügt halbe Wörter zu einem zusammen).
zu einem zusammen).
Das Lexikon ist komplett kleingeschrieben. Das Lexikon ist komplett kleingeschrieben.
Der Profiler merkt sich für jedes Wort, ob das erste Zeichen der OCR großgeschrieben Der Profiler merkt sich für jedes Wort, ob das erste Zeichen der OCR großgeschrieben war. (Eine sinnvolle Erweiterung wäre, sich das für jedes Zeichen zu merken.)
war.
#### Wörterbuch-Suche #### Wörterbuch-Suche
Lexika umfassen ca. 200k Wörter (Vollformen), werden mit Hilfe der DTA-Daten und weiterer CIS-Lexika umfassen ca. 200k Wörter (Vollformen), werden aber demnächst mit Hilfe der DTA-Daten und weiterer Lexika noch erweitert. Es gibt verschiedene verschiedene Lexika (modern, historisch,
Lexika noch erweitert. Es gibt verschiedene verschiedene Lexika (modern, historisch, Eigennamen, geographisch, ...), in denen nacheinader gesucht wird.
Eigennamen, geografisch, ...), in denen nacheinader gesucht wird.
Das größte Lexikon beinhaltet etwa 100k Zustände. Das größte Lexikon beinhaltet etwa 100k Zustände.
Bei der Erstellung der Lexikon-Automaten werden die Wörter nacheinander Bei der Erstellung der Lexikon-Automaten werden die Wörter nacheinander
...@@ -949,31 +912,23 @@ Skripts zum Kurs Finite-State Technologien beim Indizieren und Suchen der LMU). ...@@ -949,31 +912,23 @@ Skripts zum Kurs Finite-State Technologien beim Indizieren und Suchen der LMU).
Als Fehlerautomat wird ein spezieller Levenshtein-Automat verwendet, Als Fehlerautomat wird ein spezieller Levenshtein-Automat verwendet,
der exponentiell mit Anzahl der Abstände/Fehler wächst. der exponentiell mit Anzahl der Abstände/Fehler wächst.
Das Verfahren ist beschrieben in Mihov und Schulz (2004): Fast Approximate Search in Large Dictionaries. Das Verfahren ist beschrieben in [Mihov und Schulz (2004): Fast Approximate Search in Large Dictionaries](https://www.mitpressjournals.org/doi/pdf/10.1162/0891201042544938).
Eine Implementierung findet sich zusammen mit der des Profilers auf Github. Eine Implementierung findet sich zusammen mit der des Profilers auf [Github](https://github.com/cisocrgroup/Profiler).
Es wird eine vollständige Komposition von Eingabe, Levenshtein-Automat und Es wird eine vollständige Komposition von Eingabe, Levenshtein-Automat und Lexikon durchgeführt. Alle Dabei gefundenen Wörter werden ausgegeben. Es werden auch Edits der Form 1 zu 2 Zeichen und 2 zu 1 Zeichen zugelassen.
Lexikon durchgeführt. Alle Dabei gefundenen Wörter werden ausgegeben.
Es werden auch Edits der Form 1 zu 2 Zeichen und 2 zu 1 Zeichen Die Suche findet allerdings stufenweise statt: Erst ohne Fehler, dann nach und nach mit mehr Fehlern (bis zu 3).
zugelassen. Auch in den Lexika wird nacheinander gesucht (erst in modernem Lexikon, dann in historischem, dann in Spezial-Lexika).
Die Suche findet stufenweise statt: Erst ohne Fehler, dann nach und nach
mit mehr Fehlern (bis zu 3).
Auch in den Lexika wird nacheinander gesucht (erst in modernem Lexikon, dann in historischem, dann in
Spezial-Lexika).
Bei Erfolg wird nicht weitergesucht. Bei Erfolg wird nicht weitergesucht.
#### OCR-Daten-Erzeugung #### OCR-Daten-Erzeugung
Wir haben die Daten dta-19-reduced übergeben und eine Wir haben die Daten `dta19-reduced` und Modelle von Kay übergeben und eine Anleitung zur Erzeugung der OCR-Daten mit Tesseract gegeben.
Anleitung zur Erzeugung der OCR-Daten mit Tesseract gegeben.
#### Organisatorisches #### Organisatorisches
Das CIS hat beim Bibliotheca Baltica Symposium nichts eingereicht und wird Das CIS hat beim Bibliotheca Baltica Symposium nichts eingereicht und wird vielleicht nicht dort sein, weil Florian und Tobias in diesem Semester eine Vorlesung übernehmen müssen.
vielleicht nicht dort sein.