added more words

This commit is contained in:
Simon
2024-01-07 13:12:50 +01:00
parent ee18dffa56
commit c2b8c78e62
22 changed files with 101 additions and 53 deletions
+10
View File
@@ -26,3 +26,13 @@ Insertions
Character
Stoppwörter
Postprocessings
Lanczos-Verfahren
Spline
Skalierungsartefakte
nichtnormierten
Samplingfunktion
Cardinalis
Lanczos
Lanczos-Methode
Skalierungsverfahrens
Resamplings
+1 -1
View File
@@ -1,4 +1,4 @@
\section{Fragestellung}
\label{sec:fragestellung}
\label{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,5 +1,5 @@
\section{Herausforderungen}
\label{sec:herausforderungen}
\label{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 -1
View File
@@ -1,5 +1,5 @@
\chapter{Einleitung}
\label{ch:einleitung}
\label{einleitung}
\input{chapters/c10_einleitung/motivation}
\input{chapters/c10_einleitung/herausforderungen}
+1 -1
View File
@@ -1,5 +1,5 @@
\section{Motivation}
\label{sec:motivation}
\label{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 -1
View File
@@ -1,5 +1,5 @@
\chapter{Grundlagen}
\label{ch:Grundlagen}
\label{Grundlagen}
\input{chapters/c20_grundlagen/stand_der_technik}
\input{chapters/c20_grundlagen/technologien}
@@ -1,5 +1,5 @@
\section{Stand der Technik}
\label{sec:technik}
\label{technik}
\subsection{Texterkennungssysteme}
+2 -2
View File
@@ -1,9 +1,9 @@
\section{Verwendete Technologien}
\label{sec:technologien}
\label{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{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}.
+1 -1
View File
@@ -1,5 +1,5 @@
\section{Verwendete Algorithmen}
\label{sec:algorithmen}
\label{algorithmen}
\input{chapters/c30_konzept/algorithmen/preprocessing}
\input{chapters/c30_konzept/algorithmen/postprocessing}
@@ -2,9 +2,7 @@
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.
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 sich den in \autoref{annahmen_bild_optimal} definierten optimalen Tesseract-Eingangsdaten anzunähern.
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:
@@ -12,32 +10,33 @@ Die folgenden Preprocessing-Schritte basieren auf der empfohlenen Vorgehensweise
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.
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. [TODO: Beispielbild für Bilineare Skalierung oder nearest-neighbor hier einfügen]. Unter den verschiedenen Resampling-Filtern, die ImageMagick bereitstellt, haben sich insbesondere die Bikubische Interpolation und das Lanczos-Verfahren als für die Texterkennung mit Tesseract geeignet erwiesen \cite{todo}:
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{Bikubische Interpolation}
\label{algo:bicubic_interpolation}
\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.
Die Bikubische Interpolation stellt eine Erweiterung der Kubischen Spline Interpolation dar. Für die Berechnung des Ergebniswertes eines Pixels werden bei diesem Verfahren sowohl Pixel aus der ersten, als auch aus der zweiten Nachbarschaft berücksichtigt, wodurch -- zu lasten der Laufzeitperformanz -- eine hohe Detailtreue erhalten werden kann. Mithilfe von Streuparametern kann beeinflusst werden, wie stark die Übergänge zwischen einzelnen Pixeln geglättet werden \bzw wie scharf die Kanten im berechneten Ergebnisbild sind. Abhängig von der Qualität der Ausgangsdaten können Skalierungsartefakte dadurch weitestgehend vermieden werden.
% TODO
Beschreibung Funktionsweise
% TODO
Vergleichsbilder
Vergleichsbilder (Zeige eine grafik und einen text-screenshot. Hier fällt auf, dass die grafik gut aussieht, aber text eher verschwommen wird, was schlecht für tesseract ist)
Bei Verwendung der Bikubischen Interpolation als Resampling-Algorithmus fällt auf, dass Bilder und Grafiken durch die Glättung für das menschliche Auge ansprechender wirken. Tesseract jedoch profitiert stark von klaren Texten und hohen Kontrasten, weswegen diese Art des Resamplings keine ideale Basis für die nächsten Preprocessingschritte bildet.
\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
Das Lanczos-Verfahren erlaubt es, Bilder beim Resampling präzise zu rekonstruieren. Es verwendet eine Fensterfunktion, basierend auf dem nichtnormierten Sinus Cardinalis, auch bekannt als Samplingfunktion \(sinc(x)\) und erzeugt im Gegensatz zur \hyperref[algo:bicubic_interpolation]{Bikubischen Interpolation} weniger stark geglättete Ergebnisse, dafür sind diese jedoch meist schärfer. Durch die Verwendung der aufwändigen Samplingfunktion ist Resampling nach der Lanczos-Methode vergleichsweise rechenintensiv.
% TODO
Vergleichsbilder
[TODO Figure: Details und Konturen werden gut beibehalten]
% 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.
Aufgrund der höheren Bildschärfe und den dadurch deutlich klareren Texten fällt die Wahl des Skalierungsverfahrens für die weiteren Schritte auf die Lanczos-Methode.
\subsubsection{Rahmen}
@@ -54,12 +53,11 @@ Befindet sich Text zu nah am Rand des Bildes, kommt es vor, dass dieser nicht ri
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:
ImageMagick bietet eine Vielzahl an Thresholding-Algorithmen, deren Eignung in \autoref{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.
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.
+13 -1
View File
@@ -1,14 +1,26 @@
\section{Annahmen}
\label{sec:annahmen}
\label{annahmen}
Um die Texterkennung mittels Tesseract und die anschließende Filterung der Ergebnisdaten zu verbessern, ist es sinnvoll, Anwendungsspezifische Annahmen für den Verarbeitungsablauf festzulegen.
\subsection*{Preprocessing}
\subsubsection*{Eigenschaften von Screenshots}
\label{annahmen_bild_eigenschaften}
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 ist bei der Bildverarbeitung auf farbige Hintergrundflächen zu achten, mit deren Unterstützung Bildschirmelemente in modernen grafischen Oberflächen oft gruppiert oder getrennt werden. Nach Sichtung des zu verarbeitenden Bilddatensatzes fällt zudem auf, dass die manche Screenshots durch das Selektieren mit der Maus sehr eng abgeschnitten wurden. Auch das ist bei der Vorverarbeitung zu berücksichtigen.
% TODO Beispielscreenshots
\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 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.
% TODO Textbeschreibung, welche Eigenschaften die Eingangsdaten am besten haben sollten
% TODO Beispielbilder: So sollen die Daten optimalerweise aussehen
\subsection*{Postprocessing}
\subsubsection*{Filtern von Symbolen}
+1 -1
View File
@@ -1,5 +1,5 @@
\chapter{Konzept}
\label{ch:konzept}
\label{konzept}
\input{chapters/c30_konzept/annahmen}
\input{chapters/c30_konzept/vergleich/index}
+1 -1
View File
@@ -1,5 +1,5 @@
\section{Vergleich}
\label{sec:vergleich}
\label{vergleich}
\input{chapters/c30_konzept/vergleich/metriken}
\input{chapters/c30_konzept/vergleich/testaufbau}
+1 -1
View File
@@ -1,5 +1,5 @@
\subsection{Metriken}
\label{subsec:metriken}
\label{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.
@@ -1,4 +1,4 @@
\subsection{Testaufbau}
\label{subsec:testaufbau}
\label{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{subsec:metriken} beschriebenen Fehlermetriken miteinander verglichen werden.
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{metriken} beschriebenen Fehlermetriken miteinander verglichen werden.
+1 -1
View File
@@ -1,5 +1,5 @@
\section{Analyse}
\label{sec:analyse}
\label{analyse}
% TODO
Zeigen des erstellten Reports
@@ -1,5 +1,5 @@
\section{Implementierung}
\label{sec:implementierung}
\label{implementierung}
\subsection{Vergleichsdaten}
@@ -11,7 +11,7 @@ Erklärung und beispielhaftes Vorzeigen der Ausgangsdaten \bzw der durch den Men
\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
Auflistung und kurze Erklärung der in dem Programm verwendeten Bibliotheken in Anlehnung an die in \autoref{technologien} aufgezählten Bibliotheken, nur wird hier eben das KONKRETE \csharp NuGet besprochen
\subsubsection{Verarbeitungssystem}
+1 -1
View File
@@ -1,5 +1,5 @@
\chapter{Vergleich}
\label{ch:Vergleich}
\label{Vergleich}
\input{chapters/c40_durchführung/implementierung}
\input{chapters/c40_durchführung/analyse}
+1 -1
View File
@@ -1,4 +1,4 @@
\chapter{Zusammenfassung}
\label{ch:Zusammenfassung}
\label{Zusammenfassung}
Hier werden die Ergebnisse der Bachelorarbeit zusammengefasst und die Ergebnisse besprochen.
+1 -1
View File
@@ -1,5 +1,5 @@
\chapter{Literatur}
\label{ch:Literatur}
\label{Literatur}
\section{Optical Character Recognition}
BIN
View File
Binary file not shown.
+43 -15
View File
@@ -5,8 +5,50 @@
\documentclass[bachelor,german,smartquotes, proposal]{hgbthesis}
\RequirePackage[utf8]{inputenc} % bei Verw. von lualatex oder xelatex entfernen!
\graphicspath{{images/}} % Verzeichnis mit Bildern und Grafiken
\logofile{logo} % Logo-Datei: images/logo.pdf (kein Logo: \logofile{})
\bibliography{references} % BibLaTeX-Literaturdatei (references.bib)
%%%-----------------------------------------------------------------------------
\usepackage{outlines}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage[parfill]{parskip}
\usepackage{nameref}
\usepackage{hyperref}
% \hypersetup{hidelinks,colorlinks=true,linkcolor=blue} % todo
%%%-----------------------------------------------------------------------------
\setcounter{tocdepth}{2}
\setcounter{secnumdepth}{3}
\newcounter{subsubsubsection}[subsubsection]
\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}}
\providecommand{\subsubsubsectionautorefname}{Subsubsubsection}
\titleformat{\subsubsubsection}[runin]{\bfseries\sffamily}{}{0em}{}[:]
\titlespacing*{\subsubsubsection}{0pt}{\baselineskip}{\baselineskip}
\newcommand{\subsubsubsection}[1]{%
\stepcounter{subsubsubsection}%
\par\addvspace{2pt}%
\noindent{\sffamily\underline{#1}}\par
\nopagebreak\addvspace{4pt}%
}
% \newcommand{\subsubsubsection}[1]{%
% \par\addvspace{2pt}%
% \noindent{\sffamily\underline{#1}}\par
% \nopagebreak\addvspace{4pt}%
% }
\newcommand*{\fullref}[1]{\hyperref[{#1}]{\autoref*{#1} \nameref*{#1}}}
\newcommand{\csharp}{C\#}
\newcommand{\engl}[1]{engl. "#1"}
@@ -30,25 +72,11 @@
\footnotetext{Source: #5}
}
\newcommand{\subsubsubsection}[1]{
\vspace{14pt}\noindent\underline{\sffamily{#1}}\\
}
%%%-----------------------------------------------------------------------------
\RequirePackage[utf8]{inputenc} % bei Verw. von lualatex oder xelatex entfernen!
\graphicspath{{images/}} % Verzeichnis mit Bildern und Grafiken
\logofile{logo} % Logo-Datei: images/logo.pdf (kein Logo: \logofile{})
\bibliography{references} % BibLaTeX-Literaturdatei (references.bib)
\usepackage{outlines}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage[parfill]{parskip}
%%%-----------------------------------------------------------------------------
\begin{document}
\GetTitleStringSetup{expand}
%%%-----------------------------------------------------------------------------
%%%-----------------------------------------------------------------------------