75 lines
6.0 KiB
TeX
75 lines
6.0 KiB
TeX
\subsection{Preprocessing}
|
|
|
|
Beim sogenannten "Preprocessing" werden die zu verarbeitenden Bilder für die Texterkennung vorbereitet, um die Qualität der erkannten Textdaten zu verbessern.
|
|
|
|
Für die Verwendung von Tesseract ist es wichtig, unabhängig von der Diversität der Ausgangsdaten möglichst einheitliche Bilder zu generieren, die den Trainingsdaten des neuronalen Netzes ähnlich sehen \cite{todo}. Während störende Elemente wie Bildrauschen aus dem Bild entfernt werden sollen, sollen Texte unabhängig von der Hinter- bzw. Vordergrundfarbe gut zu erkennen und leicht von Formen oder grafischen Symbolen abzugrenzen sein.
|
|
|
|
Verwendet man moderne Tesseract-Implementierungen, sind in diesen oft bereits rudimentäre Bildverarbeitungswerkzeuge verfügbar \cite{todo}. Mit diesen Werkzeugen werden die eingespeisten Bilder -- sofern nicht bereits im richtigen Format -- automatisch für die Texterkennung vorbereitet. Ohne weitere Einstellungen zu treffen, bewirkt diese Bildverarbeitung zwar ein Umwandeln der Eingangsgrafiken in ein meist gut für Tesseract geeignetes Bild, nichtsdestotrotz ist es jedoch sinnvoll, die Bildverarbeitungsschritte individuell auf die erwarteten Eingangsdaten anzupassen, um die bestmöglichen Ergebnisse zu erhalten.
|
|
|
|
Die folgenden Preprocessing-Schritte basieren auf der empfohlenen Vorgehensweise zur Verbesserung der Output-Qualität laut Tesseract-Dokumentation \cite{tessdoc}. Gemäß den obigen Annahmen werden jedoch weder perspektivische Fehler, noch ein eventuelles Rauschen korrigiert. Konkret werden folgende Bildverarbeitungsschritte verglichen:
|
|
|
|
\subsubsection{Resampling}
|
|
|
|
Bei Resampling wird die Bildauflösung durch "Neuabtastung" verändert. Um die für Tesseract optimale \cite{tessdoc} Mindestauflösung von 300 dpi zu gewährleisten, muss das Eingangsbild, sofern es die Mindestauflösung unterschreitet, zunächst entsprechend vergrößert werden.
|
|
|
|
Da Tesseract auf klare und scharfe Kontraste angewiesen ist, um Text korrekt zu identifizieren, eignen sich nicht alle von ImageMagick zur Verfügung gestellten Skalierungsmethoden für die Weiterverarbeitung. Besonders beim Hochskalieren neigen einige Filter dazu, Unschärfen und Artefakte zu erzeugen, die die Genauigkeit der Texterkennung negativ beeinflussen können.
|
|
|
|
Unter den verschiedenen Resampling-Filtern, die ImageMagick bereitstellt, haben sich insbesondere bicubic und Lanczos als für die Texterkennung mit Tesseract geeignet erwiesen \cite{todo}:
|
|
|
|
\subsubsubsection{Bicubic Interpolation}
|
|
|
|
Der bicubic-Algorithmus zeichnet sich durch eine glatte Interpolation aus und eignet sich gut für den Erhalt von Kanten und Kontrasten.
|
|
|
|
% TODO
|
|
Beschreibung Funktionsweise
|
|
|
|
% TODO
|
|
Vergleichsbilder
|
|
|
|
\subsubsubsection{Lanczos Filterung}
|
|
|
|
Lanczos verwendet eine Fensterfunktion, die im Vergleich zu anderen Filtern weniger Unschärfen erzeugt und somit die Bildqualität besser bewahrt.
|
|
|
|
% TODO
|
|
Beschreibung Funktionsweise
|
|
|
|
% TODO
|
|
Vergleichsbilder
|
|
|
|
% TODO neutral bleiben! Entfernen oder verschieben
|
|
% Fazit: Aufgrund der besseren/klareren/schöneren Ergebnisbilder wird der Lanczos-Algorithmus für die Texterkennung genutzt. ODER Der Vergleich wird zeigen, ob bicubic oder lanczos die besseren ergebnisse liefert.
|
|
|
|
\subsubsection{Rahmen}
|
|
|
|
Befindet sich Text zu nah am Rand des Bildes, kommt es vor, dass dieser nicht richtig erkannt werden kann. Ebenso kann auch ein zu großer einfärbiger Rahmen am Rand des Bildes dazu führen, dass Bildsektionen fälschlicherweise als "leer" erkannt und übersprungen werden, wodurch der zu erkennende Text nicht in die Ergebnisdaten mit aufgenommen wird.
|
|
|
|
\begin{figure}[th]
|
|
\centering
|
|
\fbox{\includegraphics[width=0.7\linewidth]{bsp_rahmen_groß}}
|
|
\caption[Ein Screenshot mit zu großem Rahmen]{Ein im Verhältnis zur Bildgröße zu großer einfärbiger Rahmen}
|
|
\label{fig:bsp_rahmen_großs}
|
|
\end{figure}
|
|
|
|
\subsubsection{Thresholding und Binarisierung}
|
|
|
|
Die Binarisierung beschreibt den Prozess, ein Graustufenbild in ein Schwarz-Weiß-Bild umzuwandeln. Der dazu notwendige Schwellenwert kann entweder fix definiert oder anhand von verschiedensten Algorithmen ermittelt werden. Die dadurch entstehende Binarisierung hilft bei der Segmentierung und Extraktion von Objekten in einem Bild und sorgt in den Screenshots für einen ausreichenden Kontrast, unabhängig von der Vorder- und Hintergrundfarbe der Textelemente.
|
|
|
|
ImageMagick bietet eine Vielzahl an Thresholding-Algorithmen, deren Eignung in \autoref{ch:Vergleich} verglichen wird:
|
|
|
|
\subsubsubsection{Feste Schwellenwertmethode}
|
|
|
|
Ein für die Bildsegmentierung häufig genutztes Verfahren ist die sogenannte feste Schwellenwertmethode, auf Englisch auch "Fixed Thresholding" genannt. Bei diesem Bildverarbeitungsverfahren wird eine vordefinierter Grenzwert auf einzelne Pixelwerte angewandt.
|
|
Liegt der Pixelwert über dem festgelegten Schwellenwert, wird er als Teil des "Vordergrunds" betrachtet, andernfalls als "Hintergrund". Somit können Objekte, im Falle dieser Bachelorarbeit also die einzelnen Buchstaben in den Grafikdateien, von ihrem Hintergrund getrennt werden.
|
|
|
|
Obwohl das fixe Thresholding durch seine Simplizität einen relativ geringen Berechnungsaufwand benötigt und daher eine hohe Performance aufweist, sind die Ergebnisdaten bei entsprechenden Werten unzufriedenstellend. So ergibt es sich oft, dass die eigentlich bunten grafischen Elemente der Benutzeroberfläche aufgrund ihrer Helligkeit über dem Schwellenwert liegen. Dadurch werden sie, genau wie der Text, als "Vordergrund" wahrgenommen und die gesamte Fläche wird einfärbig. Dadurch kann jeglicher Text innerhalb dieser Fläche nicht vom Texterkennungssystem erkannt werden.
|
|
|
|
% TODO Neutral bleiben! Entfernen oder verschieben
|
|
% Die Auswirkungen des oben beschriebenen Verhaltens sind in den Ergebnisdaten klar ersichtlich. So führt die Verwendung dieses Verfahrens in den meisten Fällen zu einer WER bzw. CER jenseits der 60\%.
|
|
|
|
\subsubsubsection{Adaptives Thresholding}
|
|
|
|
\subsubsubsection{Dreiecks-Thresholding}
|
|
|
|
\subsubsubsection{Thresholding nach Otsu}
|
|
|
|
\subsubsubsection{Thresholding nach Kapur} |