adapted to new gliederung
This commit is contained in:
+1
-1
@@ -143,7 +143,7 @@ acs-*.bib
|
||||
|
||||
# knitr
|
||||
*-concordance.tex
|
||||
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
|
||||
# Uncomment the next line if you use knitr and want to ignore its generated tikz files
|
||||
# *.tikz
|
||||
*-tikzDictionary
|
||||
|
||||
|
||||
Vendored
+8
@@ -15,3 +15,11 @@ Thresholding-Algorithmen
|
||||
Confidence
|
||||
Expressions
|
||||
Regular
|
||||
zenon
|
||||
COPA-DATA
|
||||
zenon-Plattform
|
||||
zenon-Tools
|
||||
Kategorisierungsfunktionalität
|
||||
Substitutions
|
||||
Deletions
|
||||
Insertions
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
{"rule":"AUSTRIAN_GERMAN_SPELLER_RULE","sentence":"^\\QUm die erkannten Ergebnisse unter Verwendung der verschiedenen Pre- und Postprocessing Schritte mittels eines einheitlichen Systems vergleichen zu können, wird auf die in der optischen Texterkennung gängigen Metriken \"Character Error Rate\" (kurz: CER) und \"Word Error Rate\" (kurz: WER) zurückgegriffen.\\E$"}
|
||||
{"rule":"DE_AGREEMENT","sentence":"^\\QDiese stellt mit mittlerweile über 50.000 Sternen auf der Repository-Hosting Plattform GitHub eines der beliebtesten Texterkennungssysteme dar \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q.\\E$"}
|
||||
{"rule":"DE_AGREEMENT","sentence":"^\\QAußerdem stellt sie mit mittlerweile über 50.000 Sternen auf der Repository-Hosting Plattform GitHub eines der beliebtesten Texterkennungssysteme dar \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q.\\E$"}
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
{
|
||||
"dotnet.defaultSolution": "disable",
|
||||
"ltex.language": "de-AT"
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
\section{Fragestellung}
|
||||
\label{sec:fragestellung}
|
||||
|
||||
Ziel dieser Bachelorarbeit ist es, herauszufinden, welche Vorgehensweisen bei der Texterkennung zu den besten Ergebnissen führen. Dazu werden die Resultate der Bild- und Textverarbeitung anhand gängiger Fehlermetriken für Texterkennungssysteme verglichen.
|
||||
@@ -1,4 +1,5 @@
|
||||
\section{Herausforderungen}
|
||||
\label{sec:herausforderungen}
|
||||
|
||||
Die konkrete Herausforderung bei der Texterkennung mittels OCR besteht aus dem Finden eines passenden Texterkennungs-Frameworks, der Einbindung der im Rahmen dieser Bachelorarbeit entwickelten Prototypbibliothek in das bestehende "ScreenshotManager" Basisprogramms und nicht zuletzt dem korrekten und zuverlässigen Erkennen der erwarteten bzw. bis dahin unbekannten Schlagworte in den bestehenden Bilddateien und denen, die in Zukunft hochgeladen werden. Um bestmögliche Ergebnisse zu erzielen, ist das automatische Verändern der Bilddaten (Thresholds, Anpassen der Kontrastwerte, Farbe, Helligkeit, etc.) dabei unumgänglich.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
\chapter{Einleitung}
|
||||
\label{ch:Einleitung}
|
||||
\label{ch:einleitung}
|
||||
|
||||
\input{chapters/c10_einleitung/motivation}
|
||||
\input{chapters/c10_einleitung/herausforderungen}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
\section{Motivation}
|
||||
\label{sec:motivation}
|
||||
|
||||
Die in Salzburg ansässige COPA-DATA GmbH bietet die Softwareplattform zenon an, die als umfassende Gesamtlösung Unternehmen in zahlreichen Anwendungsgebieten bei der Automatisierung ihrer Herstellungsprozesse unterstützt.
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
\section{Stand der Technik}
|
||||
\label{sec:technik}
|
||||
|
||||
\subsection{Texterkennungssysteme}
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
\section{Verwendete Technologien}
|
||||
\label{sec:technologien}
|
||||
|
||||
\subsection{Texterkennungssystem}
|
||||
|
||||
Die Nutzung der in \autoref{ch:Einleitung} erwähnten Anwendungen \bzw Dienstleistungen ist kostenpflichtig und die genaue Vorgehensweise dieser Programme ist nicht öffentlich bekannt.
|
||||
Die Nutzung der in \autoref{ch:einleitung} erwähnten Anwendungen \bzw Dienstleistungen ist kostenpflichtig und die genaue Vorgehensweise dieser Programme ist nicht öffentlich bekannt.
|
||||
|
||||
Aufgrund dieser Tatsachen ist die Wahl des Texterkennungssystems für die prototypische Implementierung dieser Bachelorarbeit auf die seit 2005 unter der Freie-Software-Lizenz "Apache 2.0" veröffentlichten "Tesseract Open Source OCR Engine" (kurz: Tesseract) gefallen. Diese basiert seit der Major-Version 4 auf einem neuronalen Netz, durch welches mithilfe von sprachspezifischen Trainingsdaten Texte in Bildern erkannt werden können \cite{tessdoc}. Außerdem stellt sie mit mittlerweile über 50.000 Sternen auf der Repository-Hosting Plattform GitHub eines der beliebtesten Texterkennungssysteme dar \cite{tessdoc} \cite{tessrepo}.
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
\section{Verwendete Algorithmen}
|
||||
\label{sec:algorithmen}
|
||||
|
||||
\input{chapters/c30_konzept/algorithmen/preprocessing}
|
||||
\input{chapters/c30_konzept/algorithmen/postprocessing}
|
||||
+4
-10
@@ -1,23 +1,17 @@
|
||||
\section{Postprocessing}
|
||||
|
||||
\subsection{Grundlagen}
|
||||
\subsection{Postprocessing}
|
||||
|
||||
Da im Rahmen dieser Bachelorarbeit ein besonderer Fokus auf dem Verschlagworten der Inhalte liegt, um die Suche innerhalb der Screenshot-Datenbank zu verbessern, sind besonders die Vorgehensweise zur Extraktion der relevanten Daten von großem Nutzen.
|
||||
|
||||
Wie auch im Preprocessing gibt es auch im Postprocessing verschiedene Algorithmen, die mit den selben Ausgangsdaten unterschiedlich wertvolle Ergebnisse liefern. Daher ist es ratsam, mehrere Algorithmen zu vergleichen und den für den individuellen Use-case am besten geeignetsten zu wählen:
|
||||
|
||||
TODO: NLP Folien durchlesen.
|
||||
|
||||
\subsection{Verwendete Vorgehensweisen}
|
||||
|
||||
\subsubsection{Filterung anhand der Confidence}
|
||||
|
||||
[TODO]
|
||||
% TODO
|
||||
|
||||
\subsubsection{Filterung anhand der Wortlänge}
|
||||
|
||||
[TODO]
|
||||
% TODO
|
||||
|
||||
\subsubsection{Sprachabhängige Filterung mittels Regular Expressions}
|
||||
|
||||
[TODO]
|
||||
% TODO
|
||||
+15
-10
@@ -1,4 +1,4 @@
|
||||
\section{Preprocessing}
|
||||
\subsection{Preprocessing}
|
||||
|
||||
Beim sogenannten "Preprocessing" werden die zu verarbeitenden Bilder für die Texterkennung vorbereitet, um die Qualität der erkannten Textdaten zu verbessern.
|
||||
|
||||
@@ -6,9 +6,6 @@ Für die Verwendung von Tesseract ist es wichtig, unabhängig von der Diversitä
|
||||
|
||||
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.
|
||||
|
||||
\subsection{Verwendete Algorithmen}
|
||||
|
||||
|
||||
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}
|
||||
@@ -23,17 +20,24 @@ Unter den verschiedenen Resampling-Filtern, die ImageMagick bereitstellt, haben
|
||||
|
||||
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
|
||||
% 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
|
||||
Beschreibung Funktionsweise
|
||||
|
||||
[TODO] 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.
|
||||
% 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}
|
||||
|
||||
@@ -59,7 +63,8 @@ Liegt der Pixelwert über dem festgelegten Schwellenwert, wird er als Teil des "
|
||||
|
||||
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.
|
||||
|
||||
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\%. [TODO]
|
||||
% 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}
|
||||
|
||||
+12
-1
@@ -1,7 +1,18 @@
|
||||
\section{Annahmen}
|
||||
\label{sec:annahmen}
|
||||
|
||||
% Preprocessing
|
||||
|
||||
Um die Texterkennung mittels Tesseract zu verbessern, ist es sinnvoll, die mögliche Vielfalt an Preprocessing-Ausgangsdaten durch Annahmen zu beschränken.
|
||||
|
||||
Im Falle dieser Bachelorarbeit handelt es sich bei den zu verarbeitenden Bildern ausschließlich um digitale Bildschirmaufnahmen von grafischen Benutzeroberflächen. Es kann also angenommen werden, dass die Screenshots keine Transparenz aufweisen, die Perspektive der Aufnahme nicht verzerrt ist und der Kontrast in den meisten Fällen ausreicht, um die relevanten Inhalte zu erkennen. Weiters beinhalten grafische Oberflächen oft farbige Hintergrundflächen zur Trennung von Sektionen, auf die bei etwaigem Thresholding geachtet werden muss. Nach Sichtung des zu verarbeitenden Bilddatensatzes fällt zudem auf, dass die betroffenen Inhalte durch das Selektieren mit der Maus oft sehr eng abgeschnitten wurden.
|
||||
|
||||
[TODO: Beispiel-Screenshots]
|
||||
% TODO
|
||||
Beispiel Screenshots
|
||||
|
||||
% Postprocessing
|
||||
|
||||
Da ... Screenshots, ... ist davon auszugehen, dass auch fremdsymbole... Außerdem: Sprachanpassung (RegEx filter)
|
||||
|
||||
% TODO
|
||||
Postprocessing, NLP Folien
|
||||
@@ -0,0 +1,6 @@
|
||||
\chapter{Konzept}
|
||||
\label{ch:konzept}
|
||||
|
||||
\input{chapters/c30_konzept/annahmen}
|
||||
\input{chapters/c30_konzept/vergleich}
|
||||
\input{chapters/c30_konzept/algorithmen/index}
|
||||
@@ -1,5 +1,8 @@
|
||||
\section{Vergleichsmetriken}
|
||||
\label{sec:metriken}
|
||||
\section{Vergleich}
|
||||
\label{sec:vergleich}
|
||||
|
||||
\subsection{Metriken}
|
||||
\label{subsec:metriken}
|
||||
|
||||
Um die erkannten Ergebnisse unter Verwendung der verschiedenen Pre- und Postprocessing Schritte mittels eines einheitlichen Systems vergleichen zu können, wird auf die in der optischen Texterkennung gängigen Metriken "Character Error Rate" (CER) und "Word Error Rate" (WER) zurückgegriffen.
|
||||
|
||||
@@ -18,9 +21,9 @@ Die mathematische Formel für die Word Error Rate lautet somit wie folgt:
|
||||
\end{center}
|
||||
wobei die einzelnen Komponenten folgende Größen darstellen:
|
||||
\begin{itemize}
|
||||
\item \(S\) beschreibt die Anzahl der falsch erkannten Wörter (Substitutions)
|
||||
\item \(D\) beschreibt die Anzahl der im Resultat fehlenden Wörter (Deletions)
|
||||
\item \(I\) beschreibt die Anzahl der im Resultat fälschlicherweise eingefügte Wörter (Insertions)
|
||||
\item \(S\) beschreibt die Anzahl der falsch erkannten Wörter (\engl{Substitutions})
|
||||
\item \(D\) beschreibt die Anzahl der im Resultat fehlenden Wörter (\engl{Deletions})
|
||||
\item \(I\) beschreibt die Anzahl der im Resultat fälschlicherweise eingefügte Wörter (\engl{Insertions})
|
||||
\item \(N\) beschreibt die Gesamtanzahl der Wörter in der Referenz
|
||||
\end{itemize}
|
||||
|
||||
@@ -56,3 +59,10 @@ wobei die einzelnen Komponenten folgende Größen darstellen:
|
||||
Die CER fasst in einem Wert zusammen, wie viele Änderungen auf Zeichenebene notwendig sind, um aus dem erkannten Wort das Referenzwort zu bilden. Es ist dabei wie bei der WER nicht relevant, in welcher Reihenfolge diese Zeichen auftreten. Ebenso gibt es keine gesonderte Gewichtung für Ersetzungen, Löschungen oder Einfügungen, wodurch besonders bei kurzen Wörtern auch kleinere Abweichungen bereits zu einer hohen CER führen können.
|
||||
|
||||
Durch den detaillierten Vergleich der einzelnen Wörter auf Zeichenebene stellt die CER jedenfalls ein ausreichend gutes Komplement zur WER dar, um in den folgenden Vergleichen genutzt werden zu können.
|
||||
|
||||
\subsection{Testaufbau}
|
||||
\label{subsec:testaufbau}
|
||||
|
||||
Für einen objektiven Vergleich zwischen den unterschiedlichen Vorgehensweisen und Algorithmen wird eine Grundabfolge der jeweiligen Schritte in einer "Processing-Pipeline" definiert. Anhand einer durch den Menschen verschlagworteten Vergleichsmenge können diese Pipelines nun anhand der in \autoref{sec:metriken} beschriebenen Fehlermetriken miteinander verglichen werden.
|
||||
|
||||
% TODO
|
||||
@@ -1,6 +0,0 @@
|
||||
\chapter{Optische Texterkennung}
|
||||
\label{ch:OCR}
|
||||
|
||||
\input{chapters/c30_optische_texterkennung/akzeptanzkriterien}
|
||||
\input{chapters/c30_optische_texterkennung/preprocessing}
|
||||
\input{chapters/c30_optische_texterkennung/postprocessing}
|
||||
@@ -0,0 +1,8 @@
|
||||
\section{Analyse}
|
||||
\label{sec:analyse}
|
||||
|
||||
% TODO
|
||||
Zeigen des erstellten Reports
|
||||
|
||||
% TODO
|
||||
Ausarbeiten des erstellten Reports
|
||||
@@ -0,0 +1,40 @@
|
||||
\section{Implementierung}
|
||||
\label{sec:implementierung}
|
||||
|
||||
\subsection{Vergleichsdaten}
|
||||
|
||||
% TODO
|
||||
Erklärung und beispielhaftes Vorzeigen der Ausgangsdaten \bzw der durch den Menschen verschlagworteten Vergleichsdaten.
|
||||
|
||||
\subsection{Programmkomponenten}
|
||||
|
||||
\subsubsection{Bibliotheken}
|
||||
|
||||
% TODO
|
||||
Auflistung und kurze Erklärung der in dem Programm verwendeten Bibliotheken in Anlehnung an die in \autoref{sec:technologien} aufgezählten Bibliotheken, nur wird hier eben das KONKRETE \csharp NuGet besprochen
|
||||
|
||||
\subsubsection{Verarbeitungssystem}
|
||||
|
||||
% TODO
|
||||
Erklärung des dynamischen Processing-Frameworks
|
||||
|
||||
\subsubsection{Verarbeitungskette}
|
||||
|
||||
% TODO
|
||||
Detaillierte Erklärung der für diese BA verwendeten Verarbeitungskette bzw. deren Ablauf inklusive Code-Auszügen.
|
||||
|
||||
\subsection{Programmablauf}
|
||||
|
||||
% TODO
|
||||
|
||||
\subsubsection{Mehrfachverarbeitung}
|
||||
|
||||
% TODO
|
||||
|
||||
\subsubsection{Vergleich mit Soll-Daten}
|
||||
|
||||
% TODO
|
||||
|
||||
\subsubsection{Automatische Berichterstellung}
|
||||
|
||||
% TODO
|
||||
@@ -0,0 +1,5 @@
|
||||
\chapter{Vergleich}
|
||||
\label{ch:Vergleich}
|
||||
|
||||
\input{chapters/c40_durchführung/implementierung}
|
||||
\input{chapters/c40_durchführung/analyse}
|
||||
@@ -1,3 +0,0 @@
|
||||
\section{Analyse}
|
||||
|
||||
[TODO]
|
||||
@@ -1,6 +0,0 @@
|
||||
\chapter{Vergleich}
|
||||
\label{ch:Vergleich}
|
||||
|
||||
\input{chapters/c40_vergleich/metriken}
|
||||
\input{chapters/c40_vergleich/vorgehensweise}
|
||||
\input{chapters/c40_vergleich/analyse}
|
||||
@@ -1,3 +0,0 @@
|
||||
\section{Vorgehensweise}
|
||||
|
||||
Für einen objektiven Vergleich zwischen den unterschiedlichen Vorgehensweisen und Algorithmen wird eine Grundabfolge der jeweiligen Schritte in einer "Processing-Pipeline" definiert. Anhand einer durch den Menschen verschlagworteten Vergleichsmenge können diese Pipelines nun anhand der in \autoref{sec:metriken} beschriebenen Fehlermetriken miteinander verglichen werden.
|
||||
@@ -7,6 +7,9 @@
|
||||
|
||||
%%%-----------------------------------------------------------------------------
|
||||
|
||||
\newcommand{\csharp}{C\#}
|
||||
\newcommand{\engl}[1]{engl. "#1"}
|
||||
|
||||
\newcommand{\includeImgFloat}[6]{
|
||||
\begin{wrapfigure}{#1}{#2}
|
||||
\includegraphics{#3}
|
||||
@@ -71,7 +74,7 @@
|
||||
%%%-----------------------------------------------------------------------------
|
||||
|
||||
%\maketitle
|
||||
\includepdf[pages=1-1]{./include/title.pdf}
|
||||
\includepdf[pages=1-1]{include/title.pdf}
|
||||
\tableofcontents
|
||||
|
||||
%%%-----------------------------------------------------------------------------
|
||||
@@ -80,8 +83,8 @@
|
||||
|
||||
\include{chapters/c10_einleitung/index}
|
||||
\include{chapters/c20_grundlagen/index}
|
||||
\include{chapters/c30_optische_texterkennung/index}
|
||||
\include{chapters/c40_vergleich/index}
|
||||
\include{chapters/c30_konzept/index}
|
||||
\include{chapters/c40_durchführung/index}
|
||||
\include{chapters/c80_zusammenfassung/index}
|
||||
\include{chapters/c90_literatur/index}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user