more feedback
This commit is contained in:
1
.vscode/ltex.dictionary.de-AT.txt
vendored
1
.vscode/ltex.dictionary.de-AT.txt
vendored
@@ -56,3 +56,4 @@ Hermite
|
||||
Hermite-Interpolation
|
||||
Nearest-Neighbor
|
||||
unimodalen
|
||||
Nachbearbeitungskette
|
||||
|
||||
@@ -9,4 +9,4 @@ Die Nutzung der in \autoref{einleitung} erwähnten Anwendungen \bzw Dienstleistu
|
||||
\subsection{Bildbearbeitungswerkzeug}
|
||||
\label{bildbearbeitungswerkzeug}
|
||||
|
||||
Als Werkzeug für die Durchführung der notwendigen Bildbearbeitungsschritte wurde die Softwarebibliothek "ImageMagick" \mcite{imagemagick} gewählt. Sie ist umfassend dokumentiert, flexibel und kann Dank der Unterstützung für eine Vielzahl von Programmiersprachen direkt in Programme eingebunden werden. Viele in der Bildverarbeitung genutzte Operationen sind bereits implementiert, was schnelles Prototyping vereinfacht und die Bibliothek zu einer idealen Wahl für die Realisierung von Bildbearbeitungsschritten in der prototypischen Implementierung macht.
|
||||
Als Werkzeug für die Durchführung der notwendigen Bildbearbeitungsschritte wurde aufgrund persönlicher Erfahrungen die Softwarebibliothek "ImageMagick" \mcite{imagemagick} gewählt. Sie ist umfassend dokumentiert, flexibel und kann Dank der Unterstützung für eine Vielzahl von Programmiersprachen direkt in Programme eingebunden werden. Viele in der Bildverarbeitung genutzte Operationen sind bereits implementiert, was schnelles Prototyping vereinfacht. Dadurch ist die Bibliothek eine ideale Wahl für die Realisierung von Bildbearbeitungsschritten in der prototypischen Implementierung, sie kann jedoch auch durch eine andere Implementierung ersetzt werden.
|
||||
@@ -14,11 +14,11 @@ Wie in \autoref{fig:screenshot_postprocessing_confidence} gezeigt, prüft der Co
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\begin{minipage}{0.49\textwidth}
|
||||
\lstinputlisting[firstnumber=2,linerange={2-14}]{include/postprocessing/source.detailed.json}
|
||||
\lstinputlisting[firstnumber=82,linerange={82-93}]{include/postprocessing/source.detailed.json}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.49\textwidth}
|
||||
\lstinputlisting[firstnumber=2,linerange={2-14}]{include/postprocessing/confidence.detailed.json}
|
||||
\lstinputlisting[firstnumber=58,linerange={58-69}]{include/postprocessing/confidence.detailed.json}
|
||||
\end{minipage}
|
||||
\caption{Auszug aus den Ergebnisdaten der Texterkennung aus \ref{fig:screenshot_postprocessing} nach der Confidence-Filterung. Alle Wörter unter dem Schwellenwert werden entfernt.}
|
||||
\label{fig:screenshot_postprocessing_confidence}
|
||||
@@ -32,11 +32,11 @@ Um die aus der Texterkennung gewonnenen Daten zunächst für die weitere Filteru
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\begin{minipage}{0.49\textwidth}
|
||||
\lstinputlisting[firstnumber=2,linerange={2-14}]{include/postprocessing/confidence.json}
|
||||
\lstinputlisting[firstnumber=14,linerange={14-19}]{include/postprocessing/confidence.json}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.49\textwidth}
|
||||
\lstinputlisting[firstnumber=2,linerange={2-14}]{include/postprocessing/normalize.json}
|
||||
\lstinputlisting[firstnumber=14,linerange={14-19}]{include/postprocessing/normalize.json}
|
||||
\end{minipage}
|
||||
\caption{Auszug aus den Ergebnisdaten der Texterkennung aus \ref{fig:screenshot_postprocessing} nach der Normalisierung. Alle Wörter beinhalten nun ausschließlich Kleinbuchstaben.}
|
||||
\label{fig:screenshot_postprocessing_normalisierung}
|
||||
@@ -54,7 +54,7 @@ Nach der Normalisierung werden Duplikate innerhalb der erkannten Textdaten entfe
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.49\textwidth}
|
||||
\lstinputlisting[firstnumber=14,linerange={14-22}]{include/postprocessing/duplicates.json}
|
||||
\lstinputlisting[firstnumber=14,linerange={14-18}]{include/postprocessing/duplicates.json}
|
||||
\end{minipage}
|
||||
\caption{Auszug aus den Ergebnisdaten der Texterkennung aus \ref{fig:screenshot_postprocessing} nach der Duplikatentfernung.}
|
||||
\label{fig:screenshot_postprocessing_duplikate}
|
||||
|
||||
@@ -52,7 +52,15 @@ Befindet sich Text zu nah am Rand des Bildes, kommt es vor, dass dieser nicht ri
|
||||
\subsubsection{Binarisierung}
|
||||
\label{algorithmen_binarisierung}
|
||||
|
||||
Das Erzeugen eines Binärbildes ist durch Anwendung von Segmentierungsverfahren möglich. Schwellenwertverfahren (\engl{Thresholding}) bilden eine Untergruppe der Segmentierungsverfahren und werden genutzt, um Graustufenbilder Pixel für Pixel in binarisierte Ergebnisbilder mit zwei Segmenten, also einem Vordergrund und einem Hintergrund umzuwandeln. Der dazu notwendige Schwellenwert kann entweder fest definiert oder anhand von verschiedensten Algorithmen automatisch \bzw halbautomatisch ermittelt werden. Ziel ist es, durch die Binarisierung textuelle Bildinhalte unabhängig von der eigentlichen Vorder- und Hintergrundfarbe mit ausreichendem Kontrast darzustellen. Dadurch ist das Texterkennungssystem in der Lage, die einzelnen Textelemente und deren Inhalte besser zu identifizieren und zu verarbeiten. ImageMagick bietet eine Vielzahl an Thresholding-Algorithmen, deren Eignung in \autoref{vergleich} verglichen wird.
|
||||
Das Erzeugen eines Binärbildes ist durch Anwendung von Segmentierungsverfahren möglich. Schwellenwertverfahren (\engl{Thresholding}) bilden eine Untergruppe der Segmentierungsverfahren und werden genutzt, um Graustufenbilder Pixel für Pixel in binarisierte Ergebnisbilder mit zwei Segmenten, also einem Vordergrund und einem Hintergrund umzuwandeln. Der dazu notwendige Schwellenwert kann entweder fest definiert oder anhand von verschiedensten Algorithmen automatisch \bzw halbautomatisch ermittelt werden. Ziel ist es, durch die Binarisierung textuelle Bildinhalte unabhängig von der eigentlichen Vorder- und Hintergrundfarbe mit ausreichendem Kontrast darzustellen. Dadurch ist das Texterkennungssystem in der Lage, die einzelnen Textelemente und deren Inhalte besser zu identifizieren und zu verarbeiten. ImageMagick bietet eine Vielzahl an Thresholding-Algorithmen, von denen in \autoref{vergleich} folgende verglichen werden:
|
||||
|
||||
\begin{itemize}
|
||||
\item Feste Schwellenwertmethode
|
||||
\item Adaptive Schwellenwertmethode
|
||||
\item Dreiecks Schwellenwertmethode
|
||||
\item Schwellenwertmethode nach Otsu
|
||||
\item Schwellenwertmethode nach Kapur
|
||||
\end{itemize}
|
||||
|
||||
\subsubsubsection{Feste Schwellenwertmethode}
|
||||
\label{thresholding_fixed}
|
||||
@@ -153,7 +161,7 @@ Enthält ein Bild jedoch starkes Hintergrundrauschen oder weist es lokale Hellig
|
||||
\fbox{\includegraphics[width=0.49\textwidth]{include/screenshots/runtime_function_create_002.png}}
|
||||
\hfill
|
||||
\fbox{\includegraphics[width=0.49\textwidth]{\detokenize{include/results/AutoThresholdProcessor(OTSU).00.runtime_function_create_002.png}}}
|
||||
\caption{Anwendung der Schwellenwertmethode nach Otsu auf einen Beispielscreenshot. Wird ein passender Schwellenwert ermittelt, lässt sich der Text gut vom Hintergrund trennen.}
|
||||
\caption{Anwendung der Schwellenwertmethode nach Otsu \mcite{otsu1979threshold} auf einen Beispielscreenshot. Wird ein passender Schwellenwert ermittelt, lässt sich der Text gut vom Hintergrund trennen.}
|
||||
\label{thresholding_otsu_vergleich_gut}
|
||||
\end{figure}
|
||||
|
||||
@@ -162,14 +170,14 @@ Enthält ein Bild jedoch starkes Hintergrundrauschen oder weist es lokale Hellig
|
||||
\fbox{\includegraphics[width=0.49\textwidth]{include/screenshots/editor_windows_position_006.png}}
|
||||
\hfill
|
||||
\fbox{\includegraphics[width=0.49\textwidth]{\detokenize{include/results/AutoThresholdProcessor(OTSU).00.editor_windows_position_006.png}}}
|
||||
\caption{Anwendung der Schwellenwertmethode nach Otsu auf einen Beispielscreenshot. Bei komplexen Strukturen im User-Interface gehen aufgrund des globalen Schwellenwerts Details verloren.}
|
||||
\caption{Anwendung der Schwellenwertmethode nach Otsu \mcite{otsu1979threshold} auf einen Beispielscreenshot. Bei komplexen Strukturen im User-Interface gehen aufgrund des globalen Schwellenwerts Details verloren.}
|
||||
\label{thresholding_otsu_vergleich_schlecht}
|
||||
\end{figure}
|
||||
|
||||
\subsubsubsection{Schwellenwertmethode nach Kapur}
|
||||
\label{thresholding_kapur}
|
||||
|
||||
Die Schwellenwertmethode nach Kapur, Sahoo und Wong zielt darauf ab, einen Schwellenwert zu finden, der die Entropie zwischen den Vorder- und Hintergrundregionen maximiert \mcite{kapur1985new}. Wie in \autoref{thresholding_kapur_vergleich_gut} und \autoref{thresholding_kapur_vergleich_schlecht} zu sehen, liefert die Verwendung dieses Schwellenwertverfahrens gute Ergebnisse bei Bildern mit starker Varianz der Vorder- und Hintergrundkontraste \bzw einer breiten Helligkeitsverteilung.
|
||||
Die Schwellenwertmethode nach Kapur, Sahoo und Wong \mcite{kapur1985new} zielt darauf ab, einen Schwellenwert zu finden, der die Entropie zwischen den Vorder- und Hintergrundregionen maximiert. Wie in \autoref{thresholding_kapur_vergleich_gut} und \autoref{thresholding_kapur_vergleich_schlecht} zu sehen, liefert die Verwendung dieses Schwellenwertverfahrens gute Ergebnisse bei Bildern mit starker Varianz der Vorder- und Hintergrundkontraste \bzw einer breiten Helligkeitsverteilung.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
|
||||
@@ -21,12 +21,12 @@ In der Sektion "Processor Stats", siehe \autoref{tbl:report_detailed_processorst
|
||||
|
||||
Die Sektion "Scan Results" bildet den Abschluss des Detailvergleichs. Hier werden alle Verfahrenskombinationen einzeln und mit allen verfügbaren Daten aufgeführt.
|
||||
|
||||
\begin{table}[!ht]
|
||||
\begin{sidewaystable}[!ht]
|
||||
\centering
|
||||
\input{include/figures_modified/fig_command-processing_screentypes_controlgroup_005_1.I.tex}
|
||||
\caption{Auszug aus der "Scan Results" Tabelle im generierten Bericht. Für jede Ausgabedatei werden sämtliche Statistiken aufgelistet.}
|
||||
\label{tbl:report_detailed_scanresults_stats}
|
||||
\end{table}
|
||||
\end{sidewaystable}
|
||||
|
||||
\begin{table}[!ht]
|
||||
\centering
|
||||
|
||||
@@ -37,6 +37,15 @@ Die textuellen Inhalte aller ausgewählten Bilder wurden anschließend manuell e
|
||||
\subsection{Verwendete Bibliotheken}
|
||||
\label{components}
|
||||
|
||||
Die für die prototypische Implementierung verwendeten Bibliotheken stellen Komponenten zur Verarbeitung von Screenshotdaten zur Verfügung. Um die Funktionalität flexibel auf unterschiedliche Anforderungen anpassen zu können, sind die Komponenten möglichst lose miteinander gekoppelt. Ein beispielhafter Ablauf eines Texterkennungsprogramms unter Nutzung der Bibliotheken ist in \autoref{fig:overview_diagram} abgebildet.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[width=.9\textwidth]{include/flowcharts/flow_overview.png}
|
||||
\caption{Beispielhafter Ablauf eines Texterkennungsprogramms}
|
||||
\label{fig:overview_diagram}
|
||||
\end{figure}
|
||||
|
||||
\subsubsection{Fremdbibliotheken}
|
||||
\label{components_external}
|
||||
|
||||
@@ -156,7 +165,21 @@ Abhängig von den verwendeten Prozessoren können also Eingangsdaten jeglichen T
|
||||
\subsubsubsection{Bildverarbeitungskette}
|
||||
\label{processor_chain_image}
|
||||
|
||||
Für den Ablauf der Bildverarbeitung und der anschließenden Ergebnisfilterung werden die Erkenntnisse aus \autoref{konzept} mithilfe des in \autoref{components_processorchain} beschriebenen Processing-Frameworks angewandt. Die Resultierende Konfiguration ist in Programm \ref{prg:preprocessor_definition} und Programm \ref{prg:postprocessor_definition} definiert.
|
||||
Für den Ablauf der Bildverarbeitung und der anschließenden Ergebnisfilterung werden die Erkenntnisse aus \autoref{konzept} mithilfe des in \autoref{components_processorchain} beschriebenen Processing-Frameworks angewandt. Die resultierende Konfiguration folgt dem Ablauf aus \autoref{fig:preprocessor_diagram} und \autoref{fig:postprocessor_diagram} und ist in Programm \ref{prg:preprocessor_definition} \bzw \ref{prg:postprocessor_definition} definiert.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[width=.9\textwidth]{include/flowcharts/flow_preprocessing.png}
|
||||
\caption{Beispielhafter Ablauf der Vorverarbeitungskette}
|
||||
\label{fig:preprocessor_diagram}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\includegraphics[width=.9\textwidth]{include/flowcharts/flow_postprocessing.png}
|
||||
\caption{Beispielhafter Ablauf der Nachbearbeitungskette}
|
||||
\label{fig:postprocessor_diagram}
|
||||
\end{figure}
|
||||
|
||||
Angefangen mit einem Ausgangsbild, welches über die Softwarebibliothek Magick.NET geladen wurde, beginnt die Bildverarbeitung zunächst mit dem Resampling. Falls der geladene Screenshot die Mindestauflösung von 300 dpi unterschreitet, wird es mittels Lanczos2-Verfahren, eine von Magick.NET mitgelieferte Implementierung des Lanczos2-Algorithmus mit leichter Schärfung \mcite{imagemagick}, auf die Mindestauflösung vergrößert. Anschließend wird das Bild normalisiert, in Graustufen umgewandelt und jegliche Transparenz durch einen weißen Hintergrund ersetzt. Danach wird es mittels Schwellwertverfahren binarisiert. Rund um das Bild wird ein Rahmen mit einer Dicke von 10px eingefügt. Um Texterkennungsfehler durch falsche Vorder- \bzw Hintergrundfarben auszuschließen, wird das Bild gemeinsam mit einer farblich invertierten Version an das Texterkennungssystem weitergegeben.
|
||||
|
||||
@@ -176,7 +199,7 @@ var preprocessing = new ProcessorChainConfiguration<MagickImage, MagickImage>()
|
||||
\label{prg:preprocessor_definition}
|
||||
\end{program}
|
||||
|
||||
Wurde der übergebene Screenshot vom Texterkennungssystem verarbeitet, müssen nun die Ergebnisse gefiltert werden. Dazu werden zunächst die Metadaten der einzelnen Wörter betrachtet und alle Elemente mit einer Confidence unter einem Schwellenwert von 50\% verworfen. Danach werden die erkannten Texte mittels der \csharp-Funktion ToLower() normalisiert und anschließend auf Duplikate untersucht. Sind alle Duplikate verworfen, werden die Wörter mittels sprachabhängigen Regular Expressions -- in diesem Fall gibt es gemäß den Annahmen in \autoref{annahmen_mehrsprachigkeit} einen Sprachfilter für Englisch und Deutsch -- gefiltert.
|
||||
Wurde der übergebene Screenshot vom Texterkennungssystem verarbeitet, müssen nun die Ergebnisse gefiltert werden. Dazu werden zunächst die Metadaten der einzelnen Wörter betrachtet und alle Elemente mit einer Confidence unter einem Schwellenwert von 50\% verworfen. Danach werden die erkannten Texte mittels der \csharp-Funktion \lstinline{ToLower()} normalisiert und anschließend auf Duplikate untersucht. Wurden alle Duplikate verworfen, werden die Wörter mittels sprachabhängigen Regular Expressions untersucht. Gemäß den Annahmen in \autoref{annahmen_mehrsprachigkeit} wurde ein simpler englischer (\lstinline|[\w'\-]{2,}|) sowie deutscher (\lstinline|[\w'\-äöüÄÖÜß]{2,}|) Sprachfilter festgelegt.
|
||||
|
||||
\begin{program}[!ht]
|
||||
\begin{CsCode}[numbers=none]
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
\begin{tabular}{|l|c|c|}
|
||||
\hline
|
||||
\textbf{Image} & \textbf{Preview} & \textbf{Distance} \\ \hline
|
||||
zrs\_ZAMS\_scatter\_002.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.zrs\_ZAMS\_scatter\_002.png}} & 0,09 \\ \hline
|
||||
command-pro...oup\_005.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.command-processing\_screentypes\_controlgroup\_005.png}} & 0,11 \\ \hline
|
||||
historian\_a...ent\_001.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.historian\_assistent\_001.png}} & 0,19 \\ \hline
|
||||
runtime\_fun...ate\_002.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.runtime\_function\_create\_002.png}} & 0,21 \\ \hline
|
||||
editor\_mult...ple\_007.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.editor\_multimonitor\_example\_007.png}} & 1,00 \\ \hline
|
||||
report\_exam...ime\_001.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.report\_example\_data-time\_001.png}} & 1,00 \\ \hline
|
||||
worldview\_z...eps\_001.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.worldview\_zoom\_steps\_001.png}} & 1,00 \\ \hline
|
||||
zrs\_Metadat...les\_001.png & \includegraphics[width=3cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.zrs\_MetadataEditor\_variables\_001.png}} & 1,00 \\ \hline
|
||||
zrs\_ZAMS\_scatter\_002.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.zrs\_ZAMS\_scatter\_002.png}} & 0,09 \\ \hline
|
||||
command-pro...oup\_005.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.command-processing\_screentypes\_controlgroup\_005.png}} & 0,11 \\ \hline
|
||||
historian\_a...ent\_001.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.historian\_assistent\_001.png}} & 0,19 \\ \hline
|
||||
runtime\_fun...ate\_002.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.runtime\_function\_create\_002.png}} & 0,21 \\ \hline
|
||||
editor\_mult...ple\_007.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.editor\_multimonitor\_example\_007.png}} & 1,00 \\ \hline
|
||||
report\_exam...ime\_001.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.report\_example\_data-time\_001.png}} & 1,00 \\ \hline
|
||||
worldview\_z...eps\_001.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.worldview\_zoom\_steps\_001.png}} & 1,00 \\ \hline
|
||||
zrs\_Metadat...les\_001.png & \includegraphics[width=6cm,height=2.4cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Kapur).00.zrs\_MetadataEditor\_variables\_001.png}} & 1,00 \\ \hline
|
||||
\end{tabular}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
\begin{tabular}{|l|c|c|c|c|c|}
|
||||
\hline
|
||||
\textbf{Processor} & \textbf{Elapsed} & \textbf{WER} & \textbf{CER (avg)} & \textbf{Matches} & \textbf{Image} \\ \hline
|
||||
ThresholdProcessor(30\%) & 0,6ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(30\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdProcessor(40\%) & 0,6ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(40\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdProcessor(70\%) & 0,7ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(70\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdProcessor(60\%) & 1,1ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(60\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdAd...ssor(12\_12) & 0,5ms & 77,8\% & 3,00 & 2 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdAdaptiveProcessor(12\_12).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdAd...ssor(04\_04) & 1,0ms & 88,9\% & 3,22 & 1 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdAdaptiveProcessor(04\_04).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdAd...ssor(08\_08) & 0,6ms & 100,0\% & 5,89 & 0 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdAdaptiveProcessor(08\_08).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
AutoThresho...r(Triangle) & 12,8ms & 100,0\% & 5,89 & 0 / 9 & \includegraphics[width=2cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Triangle).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdProcessor(30\%) & 0,6ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(30\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdProcessor(40\%) & 0,6ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(40\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdProcessor(70\%) & 0,7ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(70\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdProcessor(60\%) & 1,1ms & 0,0\% & 0,00 & 9 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdProcessor(60\%).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdAd...ssor(12\_12) & 0,5ms & 77,8\% & 3,00 & 2 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdAdaptiveProcessor(12\_12).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdAd...ssor(04\_04) & 1,0ms & 88,9\% & 3,22 & 1 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdAdaptiveProcessor(04\_04).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
ThresholdAd...ssor(08\_08) & 0,6ms & 100,0\% & 5,89 & 0 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/ThresholdAdaptiveProcessor(08\_08).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
AutoThresho...r(Triangle) & 12,8ms & 100,0\% & 5,89 & 0 / 9 & \includegraphics[width=6cm,height=2cm,keepaspectratio]{\detokenize{include/results/AutoThresholdProcessor(Triangle).00.command-processing\_screentypes\_controlgroup\_005.png}} \\ \hline
|
||||
\end{tabular}
|
||||
|
||||
@@ -2,21 +2,19 @@ flowchart LR
|
||||
OCR["Texterkennung\n(Tesseract)"]
|
||||
Pre -->|Bilddaten| OCR
|
||||
OCR -->|Schlagworte| Post
|
||||
|
||||
%% Einlesen --> Pre
|
||||
%% Post --> Ausgabe
|
||||
Post -->|Schlagworte| Lookup
|
||||
Lookup -->|Schlagworte| Bericht
|
||||
|
||||
subgraph Pre[Vorverarbeitung]
|
||||
direction TB
|
||||
Pre1[Skalierung] --> Pre2
|
||||
Pre2[Thresholding] --> Pre3
|
||||
Pre2[" ... "] --> Pre3
|
||||
Pre3[Binarisierung]
|
||||
end
|
||||
|
||||
subgraph Post[Nachbearbeitung]
|
||||
direction TB
|
||||
Post1[Normalisierung] --> Post2
|
||||
Post2[Längenfilterung] --> Post3
|
||||
Post3[Duplikatfilterung] --> Post4
|
||||
Post4[RegEx-Filterung]
|
||||
Post2[" ... "] --> Post3
|
||||
Post3[RegEx-Filterung]
|
||||
end
|
||||
BIN
include/flowcharts/flow_overview.png
Normal file
BIN
include/flowcharts/flow_overview.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
8
include/flowcharts/flow_postprocessing.mmd
Normal file
8
include/flowcharts/flow_postprocessing.mmd
Normal file
@@ -0,0 +1,8 @@
|
||||
flowchart LR
|
||||
subgraph Post[Nachbearbeitung]
|
||||
direction LR
|
||||
Post1[Confidence-Filter] --> Post2
|
||||
Post2[Normalisieren] --> Post3
|
||||
Post3[Duplikatentfernung] --> Post4
|
||||
Post4[RegEx-Filterung]
|
||||
end
|
||||
BIN
include/flowcharts/flow_postprocessing.png
Normal file
BIN
include/flowcharts/flow_postprocessing.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
10
include/flowcharts/flow_preprocessing.mmd
Normal file
10
include/flowcharts/flow_preprocessing.mmd
Normal file
@@ -0,0 +1,10 @@
|
||||
flowchart LR
|
||||
subgraph Pre[Vorverarbeitung]
|
||||
direction LR
|
||||
Pre1[Skalieren] --> Pre2
|
||||
Pre2[Normalisieren] --> Pre3
|
||||
Pre3[Thresholding] --> Pre4
|
||||
Pre4[Rand hinzufügen] --> Pre5
|
||||
Pre5[Binarisieren] --> Pre6
|
||||
Pre6[Negieren]
|
||||
end
|
||||
BIN
include/flowcharts/flow_preprocessing.png
Normal file
BIN
include/flowcharts/flow_preprocessing.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
3
main.tex
3
main.tex
@@ -16,6 +16,7 @@
|
||||
|
||||
\usepackage{nameref}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{rotating}
|
||||
|
||||
% Enable to remove floats for testing
|
||||
|
||||
@@ -91,8 +92,8 @@
|
||||
%%%-----------------------------------------------------------------------------
|
||||
|
||||
\includepdf[pages=1-2]{include/title.pdf}
|
||||
\tableofcontents
|
||||
\include{chapters/c00_frontmatter/abstract/index}
|
||||
\tableofcontents
|
||||
|
||||
%%%-----------------------------------------------------------------------------
|
||||
\mainmatter % Hauptteil (ab hier arab. Seitenzahlen)
|
||||
|
||||
Reference in New Issue
Block a user