Updated references
This commit is contained in:
@@ -68,8 +68,8 @@ Beim Entwurf des Verarbeitungssystems für die unterschiedlichen Bild- und Textv
|
||||
}
|
||||
}
|
||||
\end{CsCode}
|
||||
\label{program:processor_interface}
|
||||
\caption{Auszug aus Datei "IProcessor.cs": Schnittstelle eines Prozessors.}
|
||||
\label{program:processor_interface}
|
||||
\end{program}
|
||||
|
||||
\begin{program}[!ht]
|
||||
@@ -89,8 +89,8 @@ Beim Entwurf des Verarbeitungssystems für die unterschiedlichen Bild- und Textv
|
||||
}
|
||||
}
|
||||
\end{CsCode}
|
||||
\label{program:processor_implementation}
|
||||
\caption{Auszug aus Datei "ToLowerProcessor.cs": Normalisieren als einzelner Verarbeitungsschritt}
|
||||
\label{program:processor_implementation}
|
||||
\end{program}
|
||||
|
||||
Sollen mehrere Schritte verbunden werden, bietet das Processing-Framework die Möglichkeit, eine sogenannte Verarbeitungskette aufzubauen. Hier können Delegates oder komplette Prozessoren dynamisch als einzelne Schritte aneinandergereiht werden, wobei die Typensicherheit durch das generische Typensystem von \csharp stets gewahrt wird:
|
||||
@@ -127,8 +127,8 @@ Sollen mehrere Schritte verbunden werden, bietet das Processing-Framework die M
|
||||
Func<IEnumerable<TInput>, IEnumerable<TOutput>> processorFunc);
|
||||
}
|
||||
\end{CsCode}
|
||||
\label{program:processor_chain_interface}
|
||||
\caption{Auszug aus Datei "IProcessorChainConfiguration.cs": Schnittstelle zur Konfiguration einer Verarbeitungskette}
|
||||
\label{program:processor_chain_interface}
|
||||
\end{program}
|
||||
|
||||
Ist die Aufbauphase abgeschlossen, kann die Verarbeitungskette schlussendlich gestartet werden.
|
||||
@@ -145,8 +145,8 @@ Ist die Aufbauphase abgeschlossen, kann die Verarbeitungskette schlussendlich ge
|
||||
|
||||
postProcessor.Process(data);
|
||||
\end{CsCode}
|
||||
\label{program:processor_chain_implementation}
|
||||
\caption{Auszug aus Datei "ImageViewModel.cs": Konfiguration und Starten einer Verarbeitungskette}
|
||||
\label{program:processor_chain_implementation}
|
||||
\end{program}
|
||||
|
||||
Abhängig von den verwendeten Prozessoren können also Eingangsdaten jeglichen Typs, in diesem Fall Bildobjekte der Magick.NET Bibliothek oder Ergebnisdaten des Texterkennungsvorgangs dynamisch verarbeitet werden.
|
||||
@@ -170,8 +170,8 @@ Angefangen mit einem Ausgangsbild, welches über die Softwarebibliothek Magick.N
|
||||
.Use(new NegateCloneProcessor())
|
||||
.Complete(OnPreprocessed);
|
||||
\end{CsCode}
|
||||
\label{program:program_preprocessor_definition}
|
||||
\caption{Auszug aus Datei "EvaluationProcessor.cs": Definition der Preprocessing-Kette}
|
||||
\label{program:program_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 schlussendlich 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.
|
||||
@@ -184,8 +184,8 @@ Wurde der übergebene Screenshot vom Texterkennungssystem verarbeitet, müssen n
|
||||
.Use(new DuplicateFilter())
|
||||
.Complete(new RegexFilter(wordRegex));
|
||||
\end{CsCode}
|
||||
\label{program:program_postprocessor_definition}
|
||||
\caption{Auszug aus Datei "EvaluationProcessor.cs": Definition der Postprocessing-Kette}
|
||||
\label{program:program_postprocessor_definition}
|
||||
\end{program}
|
||||
|
||||
\subsubsection{Lookup}
|
||||
@@ -212,8 +212,8 @@ Unabhängig von der Ablagestruktur im Hintergrund können Lookups mittels einer
|
||||
public ICollection<TValue> GetOrAdd(TKey key);
|
||||
}
|
||||
\end{CsCode}
|
||||
\label{program:program_lookup_interface}
|
||||
\caption{Auszug aus Datei "ILookup.cs": Definition der gemeinsamen Schnittstelle für Lookups}
|
||||
\label{program:program_lookup_interface}
|
||||
\end{program}
|
||||
|
||||
\subsubsection{OCR}
|
||||
@@ -242,8 +242,8 @@ Mithilfe des ReportGenerator-Frameworks wird die automatische Berichterstellung
|
||||
string FormatImage(string path, IBounds? bounds = default);
|
||||
}
|
||||
\end{CsCode}
|
||||
\label{program:program_reportgenerator_interface}
|
||||
\caption{Auszug aus Datei "IDocumentGenerator.cs": Hauptschnittstelle für den ReportGenerator}
|
||||
\label{program:program_reportgenerator_interface}
|
||||
\end{program}
|
||||
|
||||
\subsection{Programmablauf}
|
||||
@@ -273,8 +273,8 @@ Zu Beginn der Ausführung des Kommandozeilenprogramms wird für jedes zu verarbe
|
||||
yield return new(new AutoThresholdProcessor(AutoThresholdMethod.Triangle));
|
||||
}
|
||||
\end{CsCode}
|
||||
\label{program:program_processor_definition_dynamic}
|
||||
\caption{Auszug aus Datei "Program.cs": Definition der Thresholding Prozessoren}
|
||||
\label{program:program_processor_definition_dynamic}
|
||||
\end{program}
|
||||
|
||||
Ist die Erstellung der Bildbearbeitungsprozessoren abgeschlossen, wird jeder einzelne Prozessor über die Systembibliothek "System.Threading.Tasks" als eigene Ausführungseinheit (\engl{Task}) gestartet. In der Kommandozeile wird anschließend der aktuelle Status jedes Tasks angezeigt. Wurden alle Tasks abgeschlossen, wird das Programm beendet.
|
||||
@@ -323,8 +323,8 @@ Als zentrale Komponente für den Vergleich spielt die Berechnung der in \autoref
|
||||
return distance[refArr.Length, hypArr.Length];
|
||||
}
|
||||
\end{CsCode}
|
||||
\label{program:distance_levenshtein}
|
||||
\caption{Auszug aus Datei "Calculator.cs": Berechnung der Levenshtein-Distanz}
|
||||
\label{program:distance_levenshtein}
|
||||
\end{program}
|
||||
|
||||
Nach der Ermittlung der jeweiligen Distanzen auf Wort- \bzw Bildbasis werden sie mit den jeweiligen Ursprungsbildern, Prozessoren und den verwendeten Algorithmen in Bezug gesetzt. Die so aufbereiteten Ergebnisse werden anschließend an den ReportGenerator übergeben und in einen Bericht zusammengefasst.
|
||||
Reference in New Issue
Block a user