<style> /* reduce from default 48px: */ .reveal { font-size: 24px; text-align: left; } .reveal .slides { text-align: left; } /* change from default gray-on-black: */ .hljs { color: #005; background: #fff; } /* prevent invisible fragments from occupying space: */ .fragment.visible:not(.current-fragment) { display: none; height:0px; line-height: 0px; font-size: 0px; } /* increase font size in diagrams: */ .label { font-size: 24px; font-weight: bold; } /* increase maximum width of code blocks: */ .reveal pre code { max-width: 1000px; max-height: 1000px; } /* remove black border from images: */ .reveal section img { border: 0; } .reveal pre.mermaid { width: 100% !important; } .reveal svg { max-height: 600px; } .reveal .scaled-flowchart-td pre.mermaid { width: 100% !important; /* why? float: left; */ } .reveal .scaled-flowchart-td svg { max-width: 100% !important; } .reveal .scaled-flowchart-td svg g.node, .reveal .scaled-flowchart-td svg g.label, .reveal .scaled-flowchart-td svg foreignObject { width: 100% !important; } .reveal .scaled-flowchart-td p { clear:both; } .reveal .centered { text-align: center } .reveal .width75 { max-width: 75%; } </style> # Aufbau Layout-Workbench: Zwischenbericht <!-- .element: class="centered width75" --> Robert Sachunsky <!-- .element: class="centered width75" --> Stuttgart, 27. Februar 2020 --- ## Übersicht - [Planung: Rückblick](#/2) - [Ergebnisse](#/3) - [Probleme](#/4) - [Planung: Vorschau](#/5) - [Ideen](#/6) --- ## Planung: Rückblick 1. Aufbau Baseline: - CLI-Toolchain mit OCR-D - erster Workflow - Visualisierung 2. Aufbau GT-Erzeugung - passender Workflow für Beispiel-Daten (ohne hist. OCR, mit Tabellen-OLR) - <!-- .element: style="color:gray" --> GUI zur manuellen Annotation - Korrektur (Grobklassifikation) - Erweiterung (Feinklassifikation) - <!-- .element: style="color:gray" --> Support bei Annotierung 3. Optimierung regelbas. OLR - Vermeidung häufiger Fehler - <!-- .element: style="color:gray" --> automatische Nachkorrektur für übrige Fehler 4. <!-- .element: style="color:gray" --> OLR-Evaluierung 5. Aufbau datengetr. OLR - Training NN-Grobsegmentierung - <!-- .element: style="color:gray" --> Training Textklassifikation - <!-- .element: style="color:gray" --> Training NN-Feinsegmentierung --- ## Ergebnisse ### 1. Basis-Toolchain OCR-D - einfache CLI-Installation per Docker, transparenter Build (Stuprogit, `ocrd_all`), Dokumentation (`README.md` und ff.) - Werkzeug für Daten-Import - Visualisierung mit PageViewer - Workflow und GT für historische Drucke (als Smoke-Test) ---- ## Ergebnisse ### 2. Aufbau GT-Erzeugung - erster Workflow für Gutachten-Beispiele (Tesseract-basiert): [binarize-page-olena-sauvola-segment-tesseract-ocropy-ocr-tesseract-deu.mk](https://stuprogit.iao.fraunhofer.de/layout-workbench/layout-workbench/raw/4abe3497f4425ff5c644ef124b49667a347b7067/binarize-page-olena-sauvola-segment-tesseract-ocropy-ocr-tesseract-deu.mk) ---- ## Ergebnisse ### 2. Aufbau GT-Erzeugung - <!-- .element: style="color:red" --> noch nicht: gute Tabellen-OLR - Tesseract: `StructuredTable` |![](https://user-images.githubusercontent.com/13793075/42154223-780c3058-7de5-11e8-96e2-f8331cedb05d.png =300x)|![](https://user-images.githubusercontent.com/13793075/42154234-80759e14-7de5-11e8-92ea-34027a0d9c4d.png =300x)| <!-- .element: style="color:darkred" --> - Tabula etc. ---- ## Ergebnisse ### 2. Aufbau GT-Erzeugung - <!-- .element: style="color:red" --> noch nicht: Nachbearbeitung/Annotierung - <!-- .element: style="color:darkred" --> LAREX (Wunschkandidat) z.Zt. nicht installierbar ![](https://i.imgur.com/jkxvYmH.gif =600x) <!-- .element: class="fragment" data-fragment-index="0" --> - <!-- .element: class="fragment" data-fragment-index="1" --> mögl. Ausweich-Varianten: OCR4all, Aletheia ![](https://i.imgur.com/6PnVMrC.jpg =500x) ---- ## Ergebnisse ### 3. Optimierung regelbas. OLR - Vermeidung häufiger Fehler - überlappende BBoxes: Filtern/Verschmelzen redundanter Textregionen, Clipping von Nachbarn - besserer Umgang mit Linien - Parameter: Padding, DPI - <!-- .element: style="color:darkred" --> Tesseract-Debugging - <!-- .element: style="color:red" --> noch nicht: automatische Nachkorrektur für übrige Fehler ---- ## Ergebnisse ### 5. Aufbau datengetr. OLR - Training NN-Grobsegmentierung: - mit Mask-RCNN ![](https://i.imgur.com/9S04bJf.png =600x) <!-- .element: class="fragment" data-fragment-index="0" --> - auf hist. Struktur-GT von OCR-D |![](https://files.gitter.im/ocrd-segment/community/dKdZ/raw_varnhagen_rahel03_1834_OCR-D-IMG-CROP_0019.pred.png =200x)|![](https://files.gitter.im/ocrd-segment/community/PYdG/raw_siemens_abhandlungen_1881_OCR-D-IMG-CROP_0013.pred.png =200x)|![](https://files.gitter.im/ocrd-segment/community/zXkn/raw_siebold_suesswasserfische_1863_OCR-D-IMG-CROP_0011.pred.png =200x)| <!-- .element: class="fragment" data-fragment-index="1" --> - auf hist. Struktur-GT von OCR-D <!-- .element: class="fragment" data-fragment-index="2" --> - auf mod. Struktur-GT PubLayNet ![](https://github.com/ibm-aur-nlp/PubLayNet/raw/master/examples/annotations.png =600x) <!-- .element: class="fragment" data-fragment-index="2" --> --- ## Probleme #### Tesseract-Baseline: - Tabellenerkennung zu schlecht: - ohne Linien / viel Zwischenraum: meist nur als Textregionen - allgemein: oft überdehnt und/oder fraktioniert - Tabellenstruktur ungeeignet: - meist ganze Spalten als Zellen - Textregionen mit größerem Zeilenabstand: meist fraktioniert - OCR-Fehler: - Diplopie - Zeichensatz ("ı" vs "i") - Kästchen/Kreuze ---- ## Probleme #### NN-Grobsegmentierung auf OCR-D-GT: - Mask-RCNN skaliert auf feste Bildgröße, aber: - inhomogene Daten (Buch / Zeitung, DPI) - falsche Metadaten (DPI) - <!-- .element: style="color:white" --> partielle Annotation #### NN-Grobsegmentierung auf PubLayNet-GT: - suboptimales Schema: - ohne Kopf-/Fußzeile - Überschrift/Aufzählung als Grobklasse - fehlende Feinklassen (Titel/Abschnitts-Überschrift, Abb./Tab.-Überschrift, Fußnote, Autor) --- ## Planung: Vorschau 1. <!-- .element: style="color:gray" --> Aufbau Baseline: - CLI-Toolchain mit OCR-D - erster Workflow - Visualisierung 2. Aufbau GT-Erzeugung - <!-- .element: style="color:gray" --> passender Workflow für Beispiel-Daten (ohne hist. OCR, mit Tabellen-OLR) - GUI zur manuellen Annotation - Korrektur (Grobklassifikation) - Erweiterung (Feinklassifikation) - Support bei Annotierung 3. <!-- .element: style="color:gray" --> Optimierung regelbas. OLR - Vermeidung häufiger Fehler - automatische Nachkorrektur für übrige Fehler 4. OLR-Evaluierung 5. Aufbau datengetr. OLR - Training NN-Grobsegmentierung - Training Textklassifikation - Training NN-Feinsegmentierung --- ## Ideen 1. Vorstufe für manuelle Annotation nicht durch Tesseract, sondern NN-Grobsegmentierung von PubLayNet/PubTabNet 2. spezifisches Modell für Text-Nachkorrektur trainieren (Diplopie, “ı”) 3. komplementärer Ansatz für NN-OLR: partielles Extraktionsmodell... ---- ## Ideen ### geplanter Ansatz für NN-OLR: komplette Layoutanalyse / modular - Grundidee: trennbare Teilprobleme - _explizite_ Modellierung logischer Tabellenstruktur: 1. visuelle Grob-Segmentierung/Klassifizierung (Mask-RCNN): - für Regionen (1 Maske pro Region, Klassen: Bild/Text/Tabelle/...) - für Tabellen-Zellen (1 Maske pro Zelle, 1 Klasse) 2. Zeilen-Segmentierung in Regionen/Zellen 3. Zeilen-OCR 4. Textklassifikation 5. visuelle Fein-Klassifizierung: - Textregionen: Fließtext, Überschrift, Seitenzahl, Adresse... - Adresse: Anschrift, Absender, Kontakt... - Tabelle: Kopf vs Zelle (links-rechts, oben-unten) - Bild, Graphik, Logo, Handschrift, Stempel... 6. Erkennung der Baum/Graph-Struktur der Tabellen-/Textregionen 7. regelbasierte Extraktion ---- ## Ideen ### alternativer Ansatz für NN-OLR: partielle Layoutanalyse / monolithisch - Grundidee: partielle Layoutanalyse einfacher für Informationsextraktion - _implizite_ Modellierung logischer Tabellenstruktur: 1. Zeilen-Segmentierung frei/sparse 2. Zeilen-OCR 3. vektorielle Textrepräsentation mit klassen-spezifischen Modellen 4. visuelle Segmentierung/Klassifizierung ([Mask-RCNN](https://arxiv.org/abs/1703.06870) oder [DecompNet](https://arxiv.org/abs/1511.06449)): - direkt (1 Maske/Klasse pro _Information_) - Überlagerung von Bild-Rohdaten mit Textvektoren 5. OCR und Extraktion ---- ## Ideen ### alternativer Ansatz für NN-OLR: partielle Layoutanalyse / monolithisch <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/Q8V7ps3.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="1" --> <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/76LzLdR.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="2" --> <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/chN9Goq.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="3" --> <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/T3JCXuF.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="4" --> <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/L16Zk5k.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="5" --> <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/Frffi3O.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="6" --> <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/vVefq5f.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="7" --> <table><tr><td>Beispiele:</td><td><img src="https://i.imgur.com/4wCtfz3.jpg" width="500"/></td></tr></table> <!-- .element: class="fragment" data-fragment-index="8" --> ---- ## Ideen ### Vergleich Daten-Bedarf NN-OLR #### GT für geplanten (modularen) Ansatz: - vollständige Annotation von Layout und Struktur (PAGE-XML): - Regionen/Zellen (Polygon-Koordinaten und Klasse/Unterklasse) - Zeilen (Polygon-Koordinaten) - Textinhalt → aufwendig (v.a. wenn vollständig manuell erstellt) #### GT für alternativen (partiellen) Ansatz: - Bilder mit Einfärbungen für jede Klasse (Multi-layer TIFF): - Kontext <!-- .element: style="background-color:magenta" --> - Kennwert <!-- .element: style="background-color:cyan" --> - textuelle Varianten (Formulierungen) für Kontexte (Plaintext) → speziell
{"metaMigratedAt":"2023-06-15T04:41:52.867Z","metaMigratedFrom":"YAML","title":"LW-Zwischenbericht","breaks":false,"description":"Zwischenbericht Phase 1","slideOptions":"{\"theme\":\"white\",\"slideNumber\":true}","contributors":"[{\"id\":\"c62f1b15-791a-47e1-8e4c-ab2ed00c04bc\",\"add\":22630,\"del\":11659}]"}
    484 views