diff --git a/chapters/c10_einleitung/herausforderungen.tex b/chapters/c10_einleitung/herausforderungen.tex index a7e314d..e1ba338 100644 --- a/chapters/c10_einleitung/herausforderungen.tex +++ b/chapters/c10_einleitung/herausforderungen.tex @@ -3,4 +3,4 @@ Das Ziel dieser Bachelorarbeit ist das Ermitteln einer Vorgehensweise für Texterkennung in Screenshots von grafischen Oberflächen. Verschiedene Algorithmen zur Bildbearbeitung vor der Texterkennung oder Nachbearbeitung \bzw Filterung der Ergebnisdaten werden evaluiert. Die Ergebnisdaten werden anschließend anhand von festgelegten Qualitätskriterien aus der programmatischen Sprach- und Schrifterkennung, beispielsweise der \hyperref[metriken_cer]{Zeichenfehler-} oder \hyperref[metriken_wer]{Wortfehlerrate} analysiert und miteinander verglichen \mcite{karpinski2018metrics}. -Die prototypische Implementierung dient als Basis für jegliche Tests und Analysen, anhand derer die Algorithmen automatisch evaluiert werden. Die entwickelten Komponenten werden als Bibliotheken zur Verfügung gestellt, um die Texterkennung inklusive automatischer Bildverarbeitung und Filterung der erkannten Inhalte \bzw Schlagworte später in anderen Anwendungen weiterverwenden zu können. \ No newline at end of file +Die prototypische Implementierung dient als Basis für die nachfolgenden Tests und Analysen, anhand derer die Algorithmen automatisch evaluiert werden. Alle entwickelten Komponenten werden als Bibliotheken zur Verfügung gestellt, um die Texterkennung inklusive automatischer Bildverarbeitung und Filterung der erkannten Inhalte \bzw Schlagworte später in anderen Anwendungen weiterverwenden zu können. \ No newline at end of file diff --git a/chapters/c30_konzept/algorithmen/postprocessing.tex b/chapters/c30_konzept/algorithmen/postprocessing.tex index 0586fd0..f242305 100644 --- a/chapters/c30_konzept/algorithmen/postprocessing.tex +++ b/chapters/c30_konzept/algorithmen/postprocessing.tex @@ -50,7 +50,7 @@ Nach der Normalisierung werden Duplikate innerhalb der erkannten Textdaten entfe \begin{figure}[ht] \centering \begin{minipage}{0.49\textwidth} - \lstinputlisting[firstnumber=33,linerange={33-41}]{include/postprocessing/normalize.json} + \lstinputlisting[firstnumber=33,linerange={33-40}]{include/postprocessing/normalize.json} \end{minipage} \hfill \begin{minipage}{0.49\textwidth} @@ -70,11 +70,11 @@ Zusätzlich kann dieser Filter an die Anforderung des Zielsystems angepasst werd \begin{figure}[ht] \centering \begin{minipage}{0.49\textwidth} - \lstinputlisting[firstnumber=14,linerange={14-22}]{include/postprocessing/duplicates.json} + \lstinputlisting[firstnumber=16,linerange={16-20}]{include/postprocessing/duplicates.json} \end{minipage} \hfill \begin{minipage}{0.49\textwidth} - \lstinputlisting[firstnumber=11,linerange={11-19}]{include/postprocessing/wordlength.json} + \lstinputlisting[firstnumber=15,linerange={15-18}]{include/postprocessing/wordlength.json} \end{minipage} \caption{Auszug aus den Ergebnisdaten der Texterkennung aus \ref{fig:screenshot_postprocessing} nach der Wortlängenfilterung. Alle Wörter, die kürzer sind als der Schwellenwert, werden aus den Ergebnisdaten entfernt.} \label{fig:screenshot_postprocessing_wortlänge} @@ -88,11 +88,11 @@ Nachdem die zu filternden Textdaten durch vorherige Schritte vorverarbeitet wurd \begin{figure}[ht] \centering \begin{minipage}{0.49\textwidth} - \lstinputlisting[firstnumber=7,linerange={7-19}]{include/postprocessing/duplicates.json} + \lstinputlisting[firstnumber=14,linerange={14-19}]{include/postprocessing/duplicates.json} \end{minipage} \hfill \begin{minipage}{0.49\textwidth} - \lstinputlisting[firstnumber=2,linerange={2-14}]{include/postprocessing/regex.json} + \lstinputlisting[firstnumber=10,linerange={10-15}]{include/postprocessing/regex.json} \end{minipage} \caption{Auszug aus den Ergebnisdaten der Texterkennung aus \ref{fig:screenshot_postprocessing} nach der Filterung mit Regular Expressions. Findet der sprachabhängige Filter keine Treffer, wird das Wort aus den Ergebnisdaten entfernt.} \label{fig:screenshot_postprocessing_regex} diff --git a/chapters/c30_konzept/algorithmen/preprocessing.tex b/chapters/c30_konzept/algorithmen/preprocessing.tex index 344a9ac..2102e09 100644 --- a/chapters/c30_konzept/algorithmen/preprocessing.tex +++ b/chapters/c30_konzept/algorithmen/preprocessing.tex @@ -67,7 +67,7 @@ Das Erzeugen eines Binärbildes ist durch Anwendung von Segmentierungsverfahren Ein häufig für die Bildsegmentierung genutztes Verfahren ist die feste Schwellenwertmethode, auf Englisch auch "Fixed Thresholding" genannt. Bei diesem Bildverarbeitungsverfahren wird ein manuell vordefinierter Grenzwert auf das gesamte Bild angewandt. Liegt ein Pixelwert über dem festgelegten Schwellenwert, gilt dieser als Teil des Vordergrunds, andernfalls als Hintergrund \mcite{sahoo1988survey}. Somit können Objekte, also die einzelnen Buchstaben in den Grafikdateien, von ihrem Hintergrund getrennt werden. -Das fixe Thresholding benötigt durch den fest definierten Schwellenwert einen geringen Berechnungsaufwand und weist eine hohe Performance auf. Besonders bei Screenshotdateien kann es vorkommen, 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. Somit können jegliche Texte innerhalb dieser Fläche nicht vom Texterkennungssystem erkannt werden und die Qualität und Menge der erkannten Daten wird stark reduziert. Der Unterschied der Ergebnisdaten ist besonders im Vergleich von \autoref{thresholding_fixed_vergleich_gut} \bzw \autoref{thresholding_fixed_vergleich_schlecht} ersichtlich. +Das fixe Thresholding benötigt durch den fest definierten Schwellenwert einen geringen Berechnungsaufwand und weist eine hohe Performance auf \mcite{todo}. Besonders bei Screenshotdateien kann es vorkommen, 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. Somit können jegliche Texte innerhalb dieser Fläche nicht vom Texterkennungssystem erkannt werden und die Qualität und Menge der erkannten Daten wird stark reduziert. Der Unterschied der Ergebnisdaten ist besonders im Vergleich von \autoref{thresholding_fixed_vergleich_gut} \bzw \autoref{thresholding_fixed_vergleich_schlecht} ersichtlich. \begin{figure}[ht] \centering diff --git a/chapters/c30_konzept/annahmen.tex b/chapters/c30_konzept/annahmen.tex index ae897f5..35fd055 100644 --- a/chapters/c30_konzept/annahmen.tex +++ b/chapters/c30_konzept/annahmen.tex @@ -33,7 +33,7 @@ Die zu verarbeitenden Bilder im Kontext dieser Bachelorarbeit sind ausschließli \subsubsection{Optimieren von Daten für Tesseract} \label{annahmen_bild_optimal} -Für die Verwendung von Tesseract ist es wichtig, unabhängig von der Diversität der Ausgangsdaten möglichst einheitliche Bilder zu erzeugen \mcite{tessdoc}. Während störende Elemente wie Bildrauschen aus dem Bild entfernt werden, sollen Texte ohne Einfluss der eigentlichen Hinter- bzw. Vordergrundfarbe gut zu erkennen sein. Auch eine deutliche Abgrenzung von Formen oder grafischen Symbolen ist von großer Wichtigkeit \mcite{sporici2020improving} \mcite{mursari2021effectiveness}. Wurde ein Screenshot ideal vorbereitet, wie in \autoref{fig:screenshot_comparison_optimal} gezeigt, verschwinden farbige Hintergrundflächen und grafische Dekorationselemente. Übrig bleibt nur der gut lesbare textuelle Inhalt des Bildes. +Für die Verwendung von Tesseract ist es wichtig, unabhängig von der Diversität der Ausgangsdaten möglichst einheitliche Bilder zu erzeugen \mcite{tessdoc}. Während störende Elemente wie Bildrauschen aus dem Bild entfernt werden, sollen Texte ohne Einfluss der eigentlichen Hinter- bzw. Vordergrundfarbe gut zu erkennen sein. Auch eine deutliche Abgrenzung von Formen oder grafischen Symbolen ist von großer Wichtigkeit \mcite{sporici2020improving} \mcite{mursari2021effectiveness}. Wie in \autoref{fig:screenshot_comparison_optimal} gezeigt, sollen farbige Hintergrundflächen und grafische Dekorationselemente verschwinden. Übrig bleibt optimalerweise nur der gut lesbare textuelle Inhalt des Bildes. \begin{figure}[ht] \centering diff --git a/chapters/c40_durchführung/implementierung.tex b/chapters/c40_durchführung/implementierung.tex index 07448cb..66a057a 100644 --- a/chapters/c40_durchführung/implementierung.tex +++ b/chapters/c40_durchführung/implementierung.tex @@ -49,11 +49,11 @@ Die für die prototypische Implementierung verwendeten Bibliotheken stellen Komp \subsubsection{Fremdbibliotheken} \label{components_external} -In der prototypischen Implementierung, geschrieben in der Programmiersprache \csharp, wurden in Referenz an die in \autoref{technologien} vorgestellten Technologien und Werkzeuge folgende NuGet-Bibliotheken als Basis für die Implementierung verwendet: +In der prototypischen Implementierung, entwickelt in \csharp .NET, wurden in Referenz an die in \autoref{technologien} vorgestellten Technologien und Werkzeuge folgende NuGet-Bibliotheken als Basis für die Implementierung verwendet. \begin{itemize} - \item \textbf{Magick.NET}\\Version: 13.1.0\\Lizenz: Apache-2.0\\\url{https://www.nuget.org/packages/Magick.NET.Core} - \item \textbf{Tesseract}\\Version: 5.2.0\\Lizenz: Apache-2.0\\\url{https://www.nuget.org/packages/Tesseract} + \item\textbf{Magick.NET} \mcite{nuget_magicknet}\\Version: 13.1.0\\Lizenz: Apache-2.0\\ + \item\textbf{Tesseract} \mcite{nuget_tesseract}\\Version: 5.2.0\\Lizenz: Apache-2.0\\ \end{itemize} \subsubsection{Verarbeitungsketten} diff --git a/main.pdf b/main.pdf index f92b2bd..c7cce47 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/references.bib b/references.bib index 97677c5..049f276 100644 --- a/references.bib +++ b/references.bib @@ -125,6 +125,20 @@ date = {2023-05-23}, language = {eng} } +@online{nuget_magicknet, + title = {Magick.NET - NuGet}, + url = {https://www.nuget.org/packages/Magick.NET.Core}, + urldate = {2024-02-12}, + date = {2023-05-23}, + language = {eng} +} +@online{nuget_tesseract, + title = {Tesseract - NuGet}, + url = {https://www.nuget.org/packages/Tesseract}, + urldate = {2024-02-12}, + date = {2023-05-23}, + language = {eng} +} @article{islam2017survey, title = {A survey on optical character recognition systems}, author = {Islam, Noman and Islam, Zeeshan and Noor, Nazia},