diff --git a/.vscode/ltex.hiddenFalsePositives.de-DE.txt b/.vscode/ltex.hiddenFalsePositives.de-DE.txt
index db9e28b0d84cb0e6c424318f37c8f4c06e42cb56..dc3c9bd79c99ae2d32a39ac85c7bad8b506ffd86 100644
--- a/.vscode/ltex.hiddenFalsePositives.de-DE.txt
+++ b/.vscode/ltex.hiddenFalsePositives.de-DE.txt
@@ -18,3 +18,4 @@
 {"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$"}
+{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QHierzu wird das Anlegen eines sogenannten Virtual Enviroments empfohlen.\\E$"}
diff --git a/Praxisbericht.pdf b/Praxisbericht.pdf
index 500cd790e8bf3f6031d11fac7b1b97436530d133..6c83988ab70d8d48a1f4fe142b7fee535bb8c392 100644
Binary files a/Praxisbericht.pdf and b/Praxisbericht.pdf differ
diff --git a/Praxisbericht.tex b/Praxisbericht.tex
index f01d3c1dee015b50c1d85f9821dbaa69a4413a3c..113cb8de57da55371c22bd2136a58ca0918e8b08 100644
--- a/Praxisbericht.tex
+++ b/Praxisbericht.tex
@@ -45,10 +45,10 @@
 			eine maximale Breite von $3,2\,\m$, es gibt aber auch schmalere Container. Die Skizze in \autoref{subfig: rechteck-gebinde} zeigt dies
 			ebenfalls.
 
-			Des Weiteren gibt es noch tonnenförmige Rundgebinde. Diese werden auf Transportrahmen befestigt und dann als Gebinde bezeichnet. Ein
-			Gebinde kann aus einem oder zwei Rundcontainer bestehen, welche mit dem Deckel zum Erkennungssystem liegend verladen sind. Jeder
-			Rundcontainer ist einzeln auf dem Deckel mit einem Code versehen, diese können beliebig rotiert sein. Zusätzlich befindet sich noch ein
-			weiterer Code auf dem Transportrahmen. Siehe auch \autoref{subfig: rund-gebinde}.
+			Des Weiteren gibt es tonnenförmige Rundgebinde, welche unterschiedliche Größen haben können. Diese werden auf Transportrahmen befestigt
+			und dann als Gebinde bezeichnet. Ein Gebinde kann aus einem oder zwei Rundcontainer bestehen, welche mit dem Deckel zum Erkennungssystem
+			liegend verladen sind. Jeder Rundcontainer ist einzeln auf dem Deckel mit einem Code versehen, diese können beliebig rotiert sein.
+			Zusätzlich befindet sich noch ein weiterer Code auf dem Transportrahmen. Siehe auch \autoref{subfig: rund-gebinde}.
 
 			\begin{figure}
 				\graphicspath{{svg/}}
@@ -103,8 +103,8 @@
 			gerade vor dem Fahrzeug steht. Insbesondere die beliebige Rotation der Rundgebinde muss berücksichtigt werden.
 
 			Zusätzlich zu der hier behandelten Komponenten kann eine weitere Software vorausgesetzt werden. Diese Läuft auf dem Panel-PC und
-			präsentiert dem Fahrer eine Grafische Oberfläche (\emph{GUI}). Am Anfang der Schicht erhält diese eine Liste mit Arbeitsaufträgen für die
-			Schicht inklusive der Codes der zu transportierenden Container. Diese Software stößt den Scanprozess an und erhält das Ergebnis um es dem
+			präsentiert dem Fahrer eine grafische Oberfläche (\emph{GUI}). Am Anfang der Schicht erhält diese eine Liste mit Arbeitsaufträgen für die
+			Schicht inklusive der Codes der zu transportierenden Container. Diese Software stößt den Scanprozess an und erhält das Ergebnis, um es dem
 			Fahrer grafisch darzustellen. Sollte der Lesevorgang nur Teilweise oder gar nicht funktionieren, soll der Fahrer so viele
 			Teilinformationen wie möglichen erhalten und wird von der Zusatzsoftware zum manuellen Eingreifen aufgefordert.
 
@@ -117,6 +117,7 @@
 
 		Das Softwaremodul zur Schrifterkennung wird in Python umgesetzt. Das folgende Kapitel dient zur Dokumentation des Codes.
 
+		\medskip
 		Um das Projekt zum ersten Mal auf einen neuen Computer zu benutzen, müssen die in der Datei \lstinline{requirements.txt} aufgelisteten Pakete
 		installiert werden. Hierzu wird das Anlegen eines sogenannten \emph{Virtual Enviroments} empfohlen. Dadurch werden die Pakete nicht für den
 		gesamten Computer installier, sondern in einem Unterordner dieses Projektes abgelegt und nur diesem Projekt zur Verfügung gestellt. Dazu
@@ -133,7 +134,7 @@
 
 		Der Quellcode des Projektes befindet sich im Unterordner \lstinline{./src}. Dort befindet sich die Datei \lstinline{__main__.py} als
 		Haupteinstiegspunktes des Programms sowie alle weiten selbsterstellten Pakete. Das Programm wird also mittels
-		\lstinline{python src/__main__.py} gestartet (ein Beispiel ist im Makefilerezept \lstinline{run} gezeigt).
+		\lstinline{python src/__main__.py} gestartet (ein Beispiel ist im Makefilerezept \emph{run} gezeigt).
 
 		\section{Schnittstelle} \label{sec: interface}
 
@@ -187,16 +188,17 @@
 
 				\autoref{fig: filterung} zeigt einen direkten Vergleich vor und nach der Filterung. Wie man sieht, sind die kleinen Störungen alle
 				herausgefiltert, das Bild ist aber etwas Unschärfer geworden. Das ist aber notwendig um die Ergebnisse der nachfolgenden Schritte zu
-				verbessern. Implementiert ist dies in der Funktion \lstinline{preprocessing.make_binary_image()}.
+				verbessern.
+
 
 			\subsection{Binarisierung} \label{sub: binarysation}
 				Als Nächstes wird das Bild Binarisiert. Das Bild wird also auf nur zwei Farben heruntergebrochen, in dem nur noch die prominenten
-				Features enthalten sind.
+				Features enthalten sind. Implementiert ist dies in der Funktion \lstinline{preprocessing.make_binary_image()}.
 
 				Dazu wird ein in OpenCV fertig implementiert Algorithmus namens \emph{Otsu} verwendet. Dieser ermittelt automatisch einen geeigneten
 				Grenzwert und färbt dunklere Bereiche schwarz und hellere Bereich weiß.
 
-				Durch Test hat sich ergeben, dass die Beleuchtung und andere Faktoren so unterschiedliche sein können, dass mehrere
+				Durch Tests hat sich ergeben, dass die Beleuchtung und andere Faktoren so unterschiedliche sein können, dass mehrere
 				Binarisierungsschritte notwendig sind. Dazu wird anhand des ersten Grenzwertes ein Teil des Bildes weiß eingefärbt und dann ein
 				zweiter Grenzwert bestimmt. Ein Beispiel ist in \autoref{fig: binarysation} gezeigt.
 
@@ -224,7 +226,7 @@
 					\subfigure[Binarisiertes Bild]{\includegraphics[width=0.475\textwidth]{img/binary.png}}
 					\hfill
 					\subfigure[Gemorphtes Bild]{\includegraphics[width=0.475\textwidth]{img/morphed.png}}
-					\caption{Vergleich eines Bildes vor und nach der morphologischen Operation} \label{fig: morphing}
+					\caption{Vergleich eines Bildes vor und nach den morphologischen Operationen} \label{fig: morphing}
 				\end{figure}
 
 			\subsection{Finden und filtern von Konturen} \label{sub: contours}
@@ -249,6 +251,7 @@
 				\end{figure}
 
 
+			\pagebreak
 			\subsection{Rotieren der gefundenen Sektionen} \label{sub: rotate}
 				Die gefundenen Boxen liefern direkt eine Winkelinformation. Mit dieser und der Bildgröße lässt sich eine Rotationsmatrix erzeugen mit
 				deren Hilfe das Originalbild rotiert wird. Gleichzeitig wird auch die Box rotiert und aus dem Bild ausgeschnitten.
@@ -295,6 +298,7 @@
 			\lstinline{main()} mit diesen Parametern das erwartete Ergebnis liefert. Die Funktion kann also leicht an aktuelle Bilder angepasst
 			werden. Hier der entsprechende code:
 
+			\pagebreak
 			\begin{lstlisting}[gobble=16]
 				valid_codes = ["SIE20220101", "FAT3264128"]
 				@pytest.mark.parametrize(