From a477d414ffc8f36132e97da212823fed2a3d7260 Mon Sep 17 00:00:00 2001
From: Jan Wille <jan.wille@stud.hs-hannover.de>
Date: Wed, 27 Apr 2022 15:19:12 +0200
Subject: [PATCH] subsection Tesseract

---
 .vscode/ltex.dictionary.de-DE.txt           |   1 +
 .vscode/ltex.hiddenFalsePositives.de-DE.txt |   3 +++
 Praxisbericht.pdf                           | Bin 10429912 -> 10430941 bytes
 Praxisbericht.tex                           |  18 +++++++++++++++++-
 4 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/.vscode/ltex.dictionary.de-DE.txt b/.vscode/ltex.dictionary.de-DE.txt
index f49f9fe..fc487f3 100644
--- a/.vscode/ltex.dictionary.de-DE.txt
+++ b/.vscode/ltex.dictionary.de-DE.txt
@@ -13,3 +13,4 @@ Otsu
 Binarisierungsschritte
 Kernelgröße
 Gemorphtes
+pytesseract
diff --git a/.vscode/ltex.hiddenFalsePositives.de-DE.txt b/.vscode/ltex.hiddenFalsePositives.de-DE.txt
index 43197a7..db9e28b 100644
--- a/.vscode/ltex.hiddenFalsePositives.de-DE.txt
+++ b/.vscode/ltex.hiddenFalsePositives.de-DE.txt
@@ -15,3 +15,6 @@
 {"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDiese sind in der Funktion preprocessing.morphologic_close() implementiert.\\E$"}
 {"rule":"DE_AGREEMENT","sentence":"^\\QZuerst wird eine Closing Operation mit einem Rechteck-Kernel angewandt.\\E$"}
 {"rule":"DE_CASE","sentence":"^\\Q[Konturen im binarisierten Bild] [Konturen übertragen auf das originale Bild] Im Bild gefundene Konturen\\E$"}
+{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDie Kommunikation mit der Bibliothek ist in die Datei src/tesseract.py ausgelagert.\\E$"}
+{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDort steht die Funktion tesseract.read_text_in_image() zur Verfügung, die ein Bild akzeptiert und den gefundenen Text zurückgibt.\\E$"}
+{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QAlle Funktionalitäten hierfür sind in die Datei src/findcodes.py ausgelagert.\\E$"}
diff --git a/Praxisbericht.pdf b/Praxisbericht.pdf
index c259cf05c7599ec733eee02b90d17192d5aa5a5a..9f369fd3ca4885eede7eb08906cfc6b96f165642 100644
GIT binary patch
delta 5315
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

delta 4275
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
A3jhEB

diff --git a/Praxisbericht.tex b/Praxisbericht.tex
index 16a4556..cd77a9d 100644
--- a/Praxisbericht.tex
+++ b/Praxisbericht.tex
@@ -262,7 +262,23 @@
 
 
 			\subsection{Übergabe an Tesseract} \label{sub: call tesseract}
-			\subsection{Textanalyse des Ergebnisses}
+				Für die eigentliche Texterkennung wird eine weite Software namens \emph{Tesseract} verwendet. Für diese gibt es eine
+				Python-Wrapper-Bibliothek namens \lstinline{pytesseract}, welche die Verwendung stark vereinfacht.
+
+				Die Kommunikation mit der Bibliothek ist in die Datei \lstinline{src/tesseract.py} ausgelagert. Dort steht die Funktion
+				\lstinline{tesseract.read_text_in_image()} zur Verfügung, die ein Bild akzeptiert und den gefundenen Text zurückgibt. Diese wird für
+				jeden Bildausschnitt aufgerufen.
+
+
+			\subsection{Textanalyse des Ergebnisses} \label{sub: textanalyse}
+				Der von Tesseract gefundene Text wird zum Abschluss analysiert und mit der Liste an gültigen Codes verglichen. Dadruch werden
+				weiter Beschriftungen oder Hersteller-Logos herausgefiltert.
+
+				Alle Funktionalitäten hierfür sind in die Datei \lstinline{src/findcodes.py} ausgelagert. Hier ist ein regulärer Ausdruck definiert,
+				welcher die Voraussetzung, das gültige Codes mit 2-3 Großbuchstaben beginnen und darauf 5-9 Ziffern folgen, abbildet. Dies wir mit dem
+				übergebenen Text verglichen und Code-Kandidaten ermittelt. Alle Kandidaten werden mit der Liste von bekanntem Code verglichen und die
+				gültigen Codes zurückgegeben.
+
 
 		\section{Automatisiertes Testen} \label{sec: testing}
 
-- 
GitLab