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