Entwurf „wxOCR“
description
Transcript of Entwurf „wxOCR“
![Page 1: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/1.jpg)
Entwurf „wxOCR“Entwurf „wxOCR“
Matthias JauernigMatthias Jauernig
Michael LahlMichael Lahl
VerteidigungVerteidigung
![Page 2: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/2.jpg)
0. Gliederung0. Gliederung
1. Einflussfaktoren
2. Grundsatzentscheidungen
3. Softwarearchitektur
3.1 Schichtenarchitektur
3.2 Änderungen zum Pflichtenheft
3.3 Klassendiagramm
3.4 Beschreibung der Systemkomponenten
3.5 Sequenzdiagramme
4. Arbeitsaufteilung
![Page 3: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/3.jpg)
1. Einflussfaktoren1. Einflussfaktoren
1.1 Einsatzbedingungen
• Sequentieller Programmablauf
• Entwurf als single user Applikation
1.2 Umgebungs-/Randbedingungen
• OS: Windows / Linux plattformübergreifende GUI mit wxWidgets
• Keine Integration in bestehende Produkte stand-alone-Applikation
![Page 4: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/4.jpg)
1. Einflussfaktoren1. Einflussfaktoren
1.3 Bedingungen aus Qualitätsanforderungen
• Anpassbarkeit/Austauschbarkeit, vor allem der Bildverarbeitungskomponente
• Aufteilung in Teilprogramme wxOCR (main) und wxOCR net Trainer, um das Neuronale Netz schon vorher anlernen zu können
![Page 5: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/5.jpg)
2. Grundsatzentscheidungen2. Grundsatzentscheidungen
2.1 Datenhaltung• Speicherung in „flachen“ Dateien
• Keine DB-Anbindung
2.2 Verteilung im Netz• Keine Verteilung, lokale Applikation
• Keine Netzwerkfunktionalität
2.3 Benutzungsoberfläche• UI-Toolkit wxWidgets Erfüllung der
Bedingung nach Plattformunabhängigkeit
• Wahl von wxWidgets durch Wahl von C++ und Open-Source-Verfügbarkeit unter der GPL
![Page 6: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/6.jpg)
3. Softwarearchitektur3. Softwarearchitektur
- Einsatz einer 2-Schichtenarchitektur:• Schicht 1: eigentliche Anwendung
• Schicht 2: Benutzungsoberfläche
- Begründung dieser Aufteilung:• Erlaubt übersichtliche Strukturierung
• Unterstützt Anpassbarkeit / Modularisierung
• Unterstützt unabhängige Entwicklung von Benutzungsoberfläche und Anwendung
• Keine 3 Schichten, da die wenigen Methoden zur Dateibehandlung eng an die Funktionalität gebunden sind
3.1 Schichtenarchitektur3.1 Schichtenarchitektur
![Page 7: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/7.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.1 Schichtenarchitektur3.1 Schichtenarchitektur
2.b
2.a
1.a
1.b
1.c
1.d
![Page 8: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/8.jpg)
3. Softwarearchitektur3. Softwarearchitektur
Klassendiagramm aus Pflichtenheft grundlegend neu gestaltet / modularisiert:
- Klassen mit mehreren Funktionalitäten gesplittet
- Erfüllung der Forderung nach Anpassbarkeit, Änderbarkeit und Modularisierung
- Erhöhung der Übersichtlichkeit
- Paralleles Lernen mehrerer Zeichensätze möglich durch Nutzung einer Klasse für verkettete Listen
3.2 Änderungen zum Pflichtenheft3.2 Änderungen zum Pflichtenheft
![Page 9: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/9.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.2 Änderungen zum Pflichtenheft3.2 Änderungen zum Pflichtenheft
![Page 10: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/10.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.3 Klassendiagramm3.3 Klassendiagramm
![Page 11: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/11.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
Allgemein:
- Wert auf Nutzung oo Funktionalitäten: z.B. eigene polymorphe Klasse valmatrix<T>, welche auf den C++ Datentypen slice<T> und valarray<T> beruht
- Beim Neuronalen Netz Einsatz von float** anstelle von valmatrix<T> aus Performance-Gründen
- Nutzung von Exceptions, um Fehler abzufangen (vorrangig im Umgang mit Dateien)
![Page 12: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/12.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 13: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/13.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Von wxWidgets-Komponente wxApp abgeleitet• Anwendungserzeugung
• Erstellung eines Frames
![Page 14: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/14.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 15: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/15.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Schnittstelle zwischen wxOCR (main), dem netTrainer, der Bildverarbeitung und dem Neuronalen Netz
• Implementiert von den Teilapplikationen gemeinsam genutzte Funktionalitäten
![Page 16: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/16.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 17: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/17.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Von wxOCRRecog abgeleitet, fügt dieser Funktionalitäten hinzu, die vom Hauptprogramm zur Texterkennung aus einem Bild genutzt werden.
![Page 18: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/18.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 19: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/19.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Von wxOCRRecog abgeleitet
• Hinzugefügte Funktionalität, z.B. Zeichensatz einlesen oder Neuronales Netz antrainieren und speichern
• Zu lernende Zeichensätze werden in verketteter Liste (patternList) gespeichert
![Page 20: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/20.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 21: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/21.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Abstrakte Klasse• Vorlage für konkrete
Implementierungen der Bildverarbeitung
• Enthält Basisfunktionen, die genutzt werden können
• Leichte Anpassbarkeit durch Parametrisierung der wxOCRRecog-Klassen mit einem konkreten Bildverarbeitungsobjekt
![Page 22: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/22.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 23: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/23.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Implementiert die abstrakten Methoden von wxOCRImageProc• Kann leicht durch eigene Implementierungen ersetzt werden• Stellt die Extrahierung von Mustern aus einem zuvor geladenen
Bild zur Verfügung
![Page 24: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/24.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 25: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/25.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Stellt Funktionalität des Neuronalen Netzes zur Verfügung
• 3-Layer-Netz, feed forward, überwachtes Anlernen mittels Backpropagation möglich
• Wird hauptsächlich durch die Dimensionierungen und die Gewichtsmatrizen definiert
• Methoden zum Trainieren, Durchlaufen, Laden und Speichern des Netzes
![Page 26: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/26.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 27: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/27.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Polymorphe Klasse für eine 2D-Matrix• Durch Operator-Überladung Zugriff mittels [i][j] möglich• Nutzung der Datentypen slice<T> und valarray<T> aus der C+
+ Standardbibliothek
![Page 28: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/28.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 29: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/29.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 1: Eigentliche Anwendung
• Verkettete Liste zum Speichern der eingelesenen Zeichensätze• Methoden zum Einfügen, Löschen und Umsetzen des aktuellen
Zeichensatzes• Zugriff auf aktuelle Zeichensatz-Matrix mit [i] möglich
![Page 30: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/30.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 31: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/31.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 2: Benutzungsoberfläche
• Von wxWidgets-Komponente wxFrame abgeleitet• Stellt Fenster des Hauptprogramms zur Verfügung• Bild kann geladen und der daraus erkannte Text gespeichert
werden
![Page 32: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/32.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 33: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/33.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 2: Benutzungsoberfläche
• Fenster des netTrainers• Funktionen zum Handling
von Zeichensätzen und Trainieren sowie Speichern des Neuronalen Netzes
![Page 34: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/34.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 35: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/35.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 2: Benutzungsoberfläche
• Von wxWidgets-Komponente wxDialog abgeleitet• Zweck ist das Anzeigen eines Informationsdialogs zum Projekt
![Page 36: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/36.jpg)
3. Softwarearchitektur3. Softwarearchitektur
2.b
2.a
1.a
1.b
1.c
1.d
3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
![Page 37: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/37.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten
3.4.1 Schicht 2: Benutzungsoberfläche
• Abgeleitet von wxWidgets-Komponente wxTextCtrl• Erzeugt Texteingabe-Element, welches lediglich ganzzahlige
Eingaben im Intervall [0…10000[ akzeptiert• Z.B. zur Eingabe der Lernepochen des Neuronalen Netzes
![Page 38: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/38.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.5 Sequenzdiagramme3.5 Sequenzdiagramme
3.5.1 Verdeutlichung der Bildverarbeitungs-Anpassbarkeit
![Page 39: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/39.jpg)
3. Softwarearchitektur3. Softwarearchitektur3.5 Sequenzdiagramme3.5 Sequenzdiagramme
3.5.2 Verdeutlichung der Erkennung eines Zeichens aus einem Bild
![Page 40: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/40.jpg)
4. Arbeitsaufteilung4. Arbeitsaufteilung
Matthias JauernigMatthias Jauernig Michael LahlMichael Lahl
ProgrammierungProgrammierung
• Schicht 1: eigentliche Schicht 1: eigentliche AnwendungAnwendung
• Schicht 2: Benutz-Schicht 2: Benutz-ungsoberflächeungsoberfläche
• Unterstützend bei Unterstützend bei Schicht 1Schicht 1
DokumentationDokumentation
• Quelltextkommen-Quelltextkommen-tierungtierung
• ChangelogChangelog
• Dokumentationen für Dokumentationen für Endbenutzer und Endbenutzer und EntwicklerEntwickler
OrganisationOrganisation
• Administrator der Administrator der sourceforge.net-sourceforge.net-ProjektseiteProjektseite
• CVS-VerwalterCVS-Verwalter• Gestalter für die Gestalter für die
WebseiteWebseite
![Page 41: Entwurf „wxOCR“](https://reader035.fdocument.pub/reader035/viewer/2022070413/56814cb3550346895db9bb72/html5/thumbnails/41.jpg)
Noch Fragen?Noch Fragen?
? ?? ? ? ? ???
? ?