Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Präsentation wxOCR Matthias Jauernig Michael Lahl.

Ähnliche Präsentationen


Präsentation zum Thema: "Präsentation wxOCR Matthias Jauernig Michael Lahl."—  Präsentation transkript:

1 Präsentation wxOCR Matthias Jauernig Michael Lahl

2 0. Überblick 1. Werbe-Präsentation 2. Software-Demonstration 3. Zusammenfassung Punkt 1 wird zugunsten der Demonstration und des Fazits etwas abgekürzt (wir wollen unser Projektergebnis ja auch nicht verkaufen) Punkt 1 wird zugunsten der Demonstration und des Fazits etwas abgekürzt (wir wollen unser Projektergebnis ja auch nicht verkaufen)

3 1. Werbe-Präsentation

4 1. Präsentation Zielbestimmung: Texterkennung mithilfe von Bildverarbeitungsalgorithmen und eines Künstlichen Neuronalen Netzes Texterkennung mithilfe von Bildverarbeitungsalgorithmen und eines Künstlichen Neuronalen Netzes Erkennung von gedrucktem Text Erkennung von gedrucktem Text Beschränkung auf Arial, Schriftfarbe schwarz Beschränkung auf Arial, Schriftfarbe schwarz Plattformunabhängige GUI mit wxWidgets und Open-Source-Verfügbarkeit unter der GPL Plattformunabhängige GUI mit wxWidgets und Open-Source-Verfügbarkeit unter der GPL

5 1. Präsentation Wunsch und Abgrenzung: Wunsch: Kerning soll behandelt werden Wunsch: Kerning soll behandelt werden Abgrenzung: keine Ligaturen, keine Handschrift, keine von Arial abweichende Schriftart Abgrenzung: keine Ligaturen, keine Handschrift, keine von Arial abweichende Schriftart Kleines OCR-Projekt im begrenzten Zeitrahmen, darf keineswegs als Konkurrenz zu professionellen / ausgereiften OCR- Produkten gesehen werden Kleines OCR-Projekt im begrenzten Zeitrahmen, darf keineswegs als Konkurrenz zu professionellen / ausgereiften OCR- Produkten gesehen werden

6 1. Präsentation Konzept der Zeichenerkennung: Konzept der Zeichenerkennung: … … ABCDEFGHABCDEFGH Neuronales Netz … 0,94 0,08 0,04 0,05 Erkennungsgrad der einzelnen Buchstaben Bildverarbeitung / Musterextrahierung Muster als float Vektor mit verschiedenen Grauwerten

7 1. Präsentation Aufsplittung in Teilprogramme: Aufsplittung in Teilprogramme: 1. wxOCR netTrainer Zweck: Anlernen des Neuronalen Netzes auf mehrere Zeichensätze, dabei interaktive Überprüfung des Lernfortschritts (siehe Software-Demonstration). Speicherung des angelernten Netzes in einer Datei, um vom Hauptprogramm geladen werden zu können.

8 1. Präsentation 2. wxOCR (main) Zweck: Endbenutzer-Programm, in welchem Bilder geladen werden können, damit der darin enthaltene Text zeichenweise extrahiert und vom Neuronalen Netz erkannt wird. Erkannter Text kann kopiert oder abgespeichert werden.

9 2. Software-Demonstration

10 3. Zusammenfassung

11 Einhaltung der Anforderungen/Ziele: Komponenten aus dem Entwurf wurden genau so umgesetzt, teilweise erweitert Komponenten aus dem Entwurf wurden genau so umgesetzt, teilweise erweitert Muss-Kriterien: Muss-Kriterien: Komplett umgesetztKomplett umgesetzt Teilprogramme umgesetztTeilprogramme umgesetzt Erkennung von Arial ist relativ zuverlässig, auch bei Vorhandensein von Fehlerpixeln und bei gut eingescannten DokumentenErkennung von Arial ist relativ zuverlässig, auch bei Vorhandensein von Fehlerpixeln und bei gut eingescannten Dokumenten Plattformunabhängigkeit gewahrt, als Open Source unter GPL auf sourceforge.net verfügbar gemachtPlattformunabhängigkeit gewahrt, als Open Source unter GPL auf sourceforge.net verfügbar gemacht

12 3. Zusammenfassung Wunsch-Kriterien: Wunsch-Kriterien: Teilweise umgesetztTeilweise umgesetzt Kerning wird behandeltKerning wird behandelt unterschiedliche Textgrößen möglich, allerdings kann keine von Arial abweichende Schriftart erkannt werdenunterschiedliche Textgrößen möglich, allerdings kann keine von Arial abweichende Schriftart erkannt werden keine Behandlung "schiefer" Zeilenkeine Behandlung "schiefer" Zeilen Grafiken noch nicht als solche erkennbar/können nicht ausgeschlossen werden nur Erkennung von reinem Text, also auch z.B. ohne UnterstreichungenGrafiken noch nicht als solche erkennbar/können nicht ausgeschlossen werden nur Erkennung von reinem Text, also auch z.B. ohne Unterstreichungen Abgrenzungskriterien: Abgrenzungskriterien: Keine Umsetzung (wie gewollt)Keine Umsetzung (wie gewollt) So z.B. keine Erkennung von LigaturenSo z.B. keine Erkennung von Ligaturen

13 3. Zusammenfassung Einschätzung der Teamarbeit: Gutes Funktionieren der Paketaufteilung, auch unterstützt durch die Schichtenarchitektur Gutes Funktionieren der Paketaufteilung, auch unterstützt durch die Schichtenarchitektur Absprachen liefen hier im Kleinen noch recht reibungslos Absprachen liefen hier im Kleinen noch recht reibungslos Teilweise musste man vor Weiterarbeit auf die Programmierung des anderen warten (Funktionalität/Algorithmik GUI) Teilweise musste man vor Weiterarbeit auf die Programmierung des anderen warten (Funktionalität/Algorithmik GUI) Kleinere Änderungen im Aufgabenbereich des anderen hat man manchmal selber durchgeführt, anstatt sich erst abzusprechen (in Ausnahmefällen) Kleinere Änderungen im Aufgabenbereich des anderen hat man manchmal selber durchgeführt, anstatt sich erst abzusprechen (in Ausnahmefällen) Nach Entwurfsänderungen Absprachen nötig Nach Entwurfsänderungen Absprachen nötig

14 3. Zusammenfassung Arbeitszeiten/Meilensteine: Arbeitszeiten: Arbeitszeiten: keine festen Arbeitszeiten / kein einzuhaltender Zeitplan erstellt, Programmierung mit persönlicher Absprache ist in größeren Projekten sicher nicht mehr möglichkeine festen Arbeitszeiten / kein einzuhaltender Zeitplan erstellt, Programmierung mit persönlicher Absprache ist in größeren Projekten sicher nicht mehr möglich keine größeren Verzögerungen, viel Zeit ging beim Bugfixing und dem Hinzufügen von Features verloren (vor allem in der Bildverarbeitung)keine größeren Verzögerungen, viel Zeit ging beim Bugfixing und dem Hinzufügen von Features verloren (vor allem in der Bildverarbeitung) Meilensteine: Meilensteine: keine Meilensteine vorgegeben, persönliche Meilensteine konnten gut (teilweise später) erreicht werden - so eine lauffähige GUI mit allen Funktionen oder die Grundversionen des Neuronalen Netzes und der Bildverarbeitungkeine Meilensteine vorgegeben, persönliche Meilensteine konnten gut (teilweise später) erreicht werden - so eine lauffähige GUI mit allen Funktionen oder die Grundversionen des Neuronalen Netzes und der Bildverarbeitung

15 3. Zusammenfassung Probleme: softwaretechnisch: softwaretechnisch: Mit Implementierung direkt nach dem Pflichtenheft begonnen (Zeitnot) war ein Problem, da wir im Entwurf die komplette Klassenstruktur neu erarbeitet habenMit Implementierung direkt nach dem Pflichtenheft begonnen (Zeitnot) war ein Problem, da wir im Entwurf die komplette Klassenstruktur neu erarbeitet haben programmiertechnisch: programmiertechnisch: In eigener C++ Matrixklasse zunächst keine Exception bei Arraygrenzenüberschreitung der späte Einzug dieses Features hat uns viel Zeit und Nerven gekostetIn eigener C++ Matrixklasse zunächst keine Exception bei Arraygrenzenüberschreitung der späte Einzug dieses Features hat uns viel Zeit und Nerven gekostet Wer kennt es nicht: Jonglieren mit * und &Wer kennt es nicht: Jonglieren mit * und & Problematisch bei Entwicklung: zu keinem Zeitpunkt war uns direkt klar, ob oder wie gut das Programm funktionieren wird. Problematisch bei Entwicklung: zu keinem Zeitpunkt war uns direkt klar, ob oder wie gut das Programm funktionieren wird. Die Algorithmenentwicklung war ebenfalls knifflig. Die Algorithmenentwicklung war ebenfalls knifflig.

16 3. Zusammenfassung Gelerntes: Ahnung: Abspracheprobleme in größeren Projekten werden sicher schnell vielzählig Ahnung: Abspracheprobleme in größeren Projekten werden sicher schnell vielzählig Neues Wissen über: Neues Wissen über: Algorithmen (Bildverarbeitung, Neuronale Netze, OCR allgemein)Algorithmen (Bildverarbeitung, Neuronale Netze, OCR allgemein) plattformunabhängige GUI-Programmierung mit wxWidgetsplattformunabhängige GUI-Programmierung mit wxWidgets Multithreading (in wxWidgets)Multithreading (in wxWidgets) C++ Programmierung: Polymorphie & generische Datentypen, Exception-Behandlung, STL-Nutzung (map, pair, Iteratoren, …)C++ Programmierung: Polymorphie & generische Datentypen, Exception-Behandlung, STL-Nutzung (map, pair, Iteratoren, …) objektorientierte Programmierungobjektorientierte Programmierung Umgang mit KonfigurationsdateienUmgang mit Konfigurationsdateien Schreiben von Quelltext- und BenutzerdokumentationSchreiben von Quelltext- und Benutzerdokumentation Umgang mit Tools wie CVS, bugzilla, doxygen sowie der Sourceforge-Plattform Umgang mit Tools wie CVS, bugzilla, doxygen sowie der Sourceforge-Plattform

17 3. Zusammenfassung Statistik: ca. 300h Arbeit am Projekt ca. 300h Arbeit am Projekt Über 6300 Zeilen Code (mit Kommentaren) – viel davon algorithmisch Über 6300 Zeilen Code (mit Kommentaren) – viel davon algorithmisch 22 C++ Klassen 22 C++ Klassen Geplant waren anfangs ~8 Klassen, 200h Gesamtzeit und 2000 Zeilen Code – das war wohl ein wenig optimistisch Geplant waren anfangs ~8 Klassen, 200h Gesamtzeit und 2000 Zeilen Code – das war wohl ein wenig optimistisch

18 3. Zusammenfassung Adressen: Projektseite: Projektseite: CVS: CVS: cvs.sf.net | /cvsroot/wxocr | anonymous | kein Passwort | pserver | Module wxOCR_netTrainer bzw. wxOCR_main Weitere Infos: Weitere Infos:http://www.linux-related.de wxWidgets: wxWidgets:http://wxwidgets.org

19 Much fun & happy coding


Herunterladen ppt "Präsentation wxOCR Matthias Jauernig Michael Lahl."

Ähnliche Präsentationen


Google-Anzeigen