Nutzung von Tesseract für die Layout-Analyse und Tabellen-OCR
Robert Sachunsky
Leipzig, 18. Dezember 2020
Geschichte
1984-2005: HP
2005: Open Source
2006-2016: Google
2017-?: Community
2018: Hauptentwickler Ray Smith verläßt Projekt
aktive Community (eher OCR / weniger OLR)
Geschichte
aktive Community (nur Maintenance)
verwendet in vielen Projekten
> 20 GUIs
> 10 Apps
> 6 Webservices
…
Leistungsmerkmale allgemein
Open Source, einschließlich Modellen
gute regelbasierte OLR (aber ungepflegt)
gute neuronale OCR (aber nur CPU)
regelbasierte OCR (noch Spezialaufgaben)
universelle Schrift/Sprachen-Unterstützung
Standard-Modelle für > 100 Muttersprachen
Renderer: TXT, PDF, hOCR, ALTO-XML, …
sehr flexible CLI und API
Layout-Analyse (allgemein)
regelbasiert, hybrid (top-down / bottom-up)
erprobt, sprach-universell (LTR, vertikale Schrift, Mischung aller auf einer Seite)
robust, generell (Linien und Abbildungen, schräger / gedrehter / inverser Text, polygonal, DPI-Schätzung)
> 12 j nicht inhaltlich gewartet … "Macken"
kein Dewarping, kein Cropping, schlechte interne Binarisierung
(siehe Vortrag OCR-D)
Layout-Analyse (allgemein)
Layout-Analyse (Tabellen)
Tabellen-Detektion (Segmentierung):
älterer Algorithmus mit Heuristiken (v. Leptonica)
sehr ungenau
Tabellen-Erkennung (Struktur):
Faisal Shafait & Ray Smith (2010): Table Detection in Heterogeneous Documents
aber: per Voreinstellung nicht aktiviert! tessapi.SetVariable("textord_tablefind_recognize_tables" , "1" )
tesseract -c textord_tablefind_recognize_tables=1 ...
aber: Strukturergebnis nicht integriert!
(würde außerdem API-Änderung bedingen)
stattdessen: Übernahme aus normaler Block/Absatz-Segmentierung
Layout-Analyse (Tabellen)
| | |
Zeilen-Erkennung (Engine)
CNN-LSTM-Ansatz – noch immer state of the art
aber: eigene C++ Implementierung (von OCRopus 1 entlehnt)
OpenMP , OpenCL , SSE4, AVX(2), FMA
Bemühungen um Tensorflow-Backend:
(teilweise?) integriert, aber v.a. kein Training und keine Modelle
nicht (mehr) auf Agenda
CTC-Decoder mit Beamsearch:
komplex (Grammatik/Wörterbücher/Sprachmodelle, parallele Sprachen/Modelle, Unicharset-Kodierung, Zustandsautomat)
Code fest auf 1. oder 2.-bestes Ergebnis optimiert (Strahl zu schmal)
bisher keine (saubere) Extraktion von alternativen Hypothesen
(Keyword-search, externe Nachkorrektur)
Lattice-Output …
abhängig von guter Zeilensegmentierung (v.a. Normalisierung u. Dewarping)
überschreibt Wort/Zeichen-Segmentierung (aber Problem Tabs/langer Leerraum)
Zeilen-Erkennung (Engine)
| | |
Zeilen-Erkennung (Training)
> 100 Standardmodelle: von Google trainiert
synthetisch: Font-Rendering (viele Fonts, viel Text, Augmentierung)
Daten nicht öffentlich
eigenes Training: tesstrain
(ursprüngl. ocrd-train
)
auf echten Scans (Zeilen-GT)
Finetuning von Standardmodellen oder from scratch
zunehmend frei verfügbar
CPU-Training (langsam)
Makefile-gesteuert
Resume presentation
Nutzung von Tesseract für die Layout-Analyse und Tabellen-OCR Robert Sachunsky Leipzig, 18. Dezember 2020
{"metaMigratedAt":"2023-06-15T17:21:09.295Z","metaMigratedFrom":"YAML","title":"Nutzung von Tesseract für die Layout-Analyse und Tabellen-OCR","breaks":true,"slideOptions":"{\"theme\":\"white\",\"slideNumber\":true}","contributors":"[{\"id\":\"c62f1b15-791a-47e1-8e4c-ab2ed00c04bc\",\"add\":6284,\"del\":1233}]"}