Projekt Maschinelles sehen Dozent: D. Lanz, W. Jenni Autoren: T. Kurmann, S. Eichenberger Burgdorf, 19.01.2010. OCR am Einzahlungsschein

Ähnliche Dokumente
Installationshilfe. DxO Optics Pro v5

Tutorial: Thunderbird 17 installieren, einstellen und s schreiben

Anleitung für die Datenübernahme etax.luzern

Installation und Update von NX7.5

Projekte mit Qt und Dev-C++(MinGW) kompilieren

Bearbeiten von Formularen im kita finder+ Übersicht

Zunächst einmal wird unterschieden, mit welcher AutoCAD-Version Sie arbeiten. Hierbei gilt folgende Regel:

Installationsanleitung

Diplomarbeit LEGO Mindstorms Simulator - JORGE Installationshandbuch.

ONLINE - WUNSCHLISTE

Kinderschutzsoftware (KSS) für

Das Feld Script können Sie leer lassen. Hier könnten weitere Scripts eingebunden werden, welche Sie z.b. selbst entwickelt haben.

Hans-Christoph Reitz 1. Ausgabe, Oktober Dateien, Ordner und Programme Ordnung schaffen mit Windows 7 PE-ORDW7

1.3.1 Java-Compiler installieren

Technische Hochschule Georg Agricola WORKSHOP TEIL 1 INSTALLATION VON ANDROIDSTUDIO

Anzeigen des Monitor-Bildes auf einen externen Bildschirm M.Kuhlmann

Password Depot für Android

Wie Sie eine Rücksicherung an den ursprünglichen Pfad durchführen. 1. Schritt

Installation auf Server

Word 2010 Wasserzeichen erstellen

- Was ist neu? - Wie fange ich an? - Noch Fragen?

Cockpit 3.4 Update Manager

Lineare Gleichungssysteme mit zwei Unbekannten

Download TBase Client 4Dv12sql und Installation

Client Installationsanleitung. für die kostenlose Mediacenter-Software MediaPortal

Zentrale PDF Erzeugung verringert den administrativen Aufwand in Unternehmen. Nikolaj Langner HfT Stuttgart

Kurzanleitung DIALit Stand vom

Bildbearbeitung im WebToPrint-Service

Kurzreferenz ILIAS für Dozenten

Terminplanungstool Foodle

Installation und Nutzung des SSH Clients 'PuTTY'

Aufzählung, Bennenung, Bedienung der wichtigsten Steuerelemente Verwenden von Menüs, Schaltflächen, Bildlaufleisten und Kontrollkästchen

TELIS FINANZ Login App

Bildinhalte suchen mit google

Garmin POI-Sammlungen Download und Installationsanleitung

Mobile Geräte in Outlook Web App 2013 verwalten designed by HP Engineering - powered by Swisscom

WaveFormer Pro in Simulationsumgebungen mit ModelSim

RSS-Feeds in Outlook

INHALTSVERZEICHNIS. Einleitung Allgemeines

Neu: Toshiba LifeSpace

Anleitung zum Upgrade auf SFirm 3.x + Datenübernahme. I. Vorbereitungen

Psi unter Ubuntu-Linux benutzen

SAP Solution Manager Kurzanleitung

Tutorial für Lehrpersonen In Motion - Technisches Museum Wien

HOSTED EXCHANGE MICROSOFT OUTLOOK 2016 FÜR WINDOWS Skyfillers Handbuch

UliCMS Umfrage-Modul. Version 1.0. Handbuch

2. Musik, Apps & mehr: alle wichtigen Dos und Don ts rund um Ihre Einkäufe bei Apple

Neue Funktionen der RedDot Version 7.1


RIS Recherche. für Microsoft Office. (am Beispiel für Word 2007/2010)

Erstellen von 3D-Videos in VideoWave Leicht gemacht einfach

Um einen Datenverlust zu vermeiden empfehlen wir Ihnen Ihre gespeicherten Lastschriftvorlagen zu sichern.

Grundlagen der Bildverarbeitung: Übung 3

2.4 - Das Verwaltungsmodul moveon installieren - MS Access Version

AGCOPartsBooks.com. AGCOPartsBooks.com BENUTZERHANDBUCH FÜR ENDKUNDEN. Benutzerhandbuch 1 für Endkunden

Updateseite_BuV-PlugIn-NERZ-Gesamt

Bitte lesen Sie dieses Dokument erst komplett durch, bevor Sie mit dem Installieren anfangen.

Hosted Exchange Shared Mailboxes

Schnelleinstieg in PhotoFiltre

PayPen II Installationsanleitung

Anleitung zur Einrichtung eines potsdam.de Kontos auf einem Android Smartphone (6.0.1 Marshmallow) Hinweis: Die Einrichtung kann je nach Hersteller

personali- Schritt 2 Seite -1-

Update auf SFirm 3.x von einer SFirm-2.x Vorgängerversion

Schnellstarthandbuch. Symbolleiste für den Schnellzugriff

TracVision - Tracking Frequenzen

Shellfire VPN IPSec Setup ios

ABUS Security Center. ABUS IPCXxxxxx Kamera Range. Anleitung für die IP Zonen Konfiguration Integration Secvest Funk-Alarmanlage

Aufbauschulung. ActivInspire

Zeichnen mit Word. 1. Symbolleiste Zeichnen sichtbar machen Vorbereiten der Seite Zeichnen von Linien und Flächen...

Onlineabgabe. Erstellen einer PDF-Datei. Juristische Fakultät. Computer-Zentrum. Stand:

Word 2007 Einfügen oder Erstellen einer Tabelle

Kleine Einführung in GIMP Zuschneiden eines Bildes

PC-Kaufmann 2014 Endgültiger Jahresabschluss im Komplettpaket/-Pro

Software-Updates Benutzerhandbuch

Starten Sie Exponent und klicken Sie auf Hilfe und dann auf ÜberExponent. Notieren Sie sich die folgenden Daten:

bla bla -Clients verwenden Benutzeranleitung

SVN in use. Roger Burkhardt Fachhochschule Nordwestschweiz Hochschule für Technik Institut für Geistes- und Naturwissenschaft

Softwareentwicklung I

EV3-Bluetooth-Fehlerbehebung

Übersicht. 1) Hier sehen Sie, ob Sie sich gerade eine Bibliothek oder eine Sammel- Mappe ansehen.

B+S Onlinepayment - Saferpay Einrichtung

Installationsanleitung für Internet Security. Inhalt

Handbuch für die Schnellinstallation TeraStation Pro II

Favoriten speichern und verwalten im Internetexplorer 6.0

Chip-Tuner Schnellstart

e-dokumente Übersicht 2 e-dokumente suchen 3 Öffnen oder Speichern eines einzelnen Dokuments 5 Öffnen oder Speichern mehrere Dokumente 6

Wie lade ich meinen Hörbuch-Download (WMA-Format) erstmalig herunter?

Adobe Acrobat Professional - Portfolio. Leibniz Universität IT Services Anja Aue

EINRICHTUNG MAIL CLIENTS

AjaXplorer Bedienungsanleitung

1. Abonnieren mit dem -Programm Thunderbird

Ziel dieses Merkblatts ist es, THERAPIEplus einzurichten, damit Sie VESR-Einzahlungsscheine drucken und die Zahlungsdaten verarbeiten können.

Kombinatorik BEISPIEL: WIE VIELE MÖGLICHKEITEN GIBT ES, EINE DREISTELLIGE ZAHL MIT DEN ZIFFERN 3

Spaichinger Entwicklungsumgebung 1.1 Zur C-Programmierung und Simulation von ct-bots (Fahrrobotern)

Wie kann ich Content aus früheren iclone Versionen in iclone 6 importieren?

KVN-Portal. Kassenärztliche Vereinigung Niedersachsen. das Onlineportal der KVN. Dokumentation für Macintosh. Version 5.0 vom

Kurzanleitung: GCC mit CYGWIN unter WINDOWS

Installation der SMART-Software (Produkttreiber + Notebook-Software)

Handbuch Nero ControlCenter

Ordner-Profile für gesamte Arbeitsgruppe bearbeiten...2 Spezifische Ordner-Profile anpassen...5 Tipp: :...7

Transkript:

Projekt Maschinelles sehen Dozent: D. Lanz, W. Jenni Autoren: T. Kurmann, S. Eichenberger Burgdorf, 19.01.2010 OCR am Einzahlungsschein

Inhaltsverzeichnis Aufgabenstellung:... 2 Einleitung:... 2 Auftrag für Projektarbeit... 2 Analyse... 3 Design:... 5 Benutzerinteraktion:... 5 Überblick der Klassen... 5 Basic OCR... 6 Initialisierung:... 6 getdata... 6 Classify... 7 ExtendedOCR... 8 Grafische Oberfläche:... 9 Schlussbetrachtung:... 10 Maschinelles sehen 1

Aufgabenstellung: Einleitung: Um bei einem Einzahlungsschein der Post nicht sämtliche Angaben abtippen zu müssen, ist unser Ziel einen Programm zu schreiben, welches den Betrag, die Kontonummer und die Referenznummer automatisch von einem Bild einliest. Dazu soll der ESR-Code im weissen Bereich des Einzahlungsscheins erkannt und umgewandelt werden. Diese Daten werden dann in einem Textfeld angezeigt, damit man sie einfach in die Zwischenablage kopieren kann. Auftrag für Projektarbeit Die Bilder können entweder von der HD oder der Webcam geladen werden. Allfällige Verzerrungen müssen korrigiert werden, danach wird ein Binärbild erzeugt. Aus diesem Binärbild werden dann die einzelnen Zahlen extrahiert und auf einer grafischen Oberfläche angezeigt. Maschinelles sehen 2

Analyse Wir entschieden uns die Aufgabe mit einer Kombination von QT (Nokia) und OpenCV zu lösen. Dadurch sind wir System unabhängiger und schneller als mit Matlab. Beides sind Opensource Lösungen, wodurch wir keine Lizenzen verletzen. Als Programmiersprache verwenden wir C++, da sowohl QT als auch OpenCV für diese Sprache ausgelegt sind. QT ist eine Library welche Funktionen für grafische Benutzeroberflächen zur Verfügung stellt. Sie wurde von Trolltech entwickelt. Im Jahr 2008 übernahm der Mobiltelefon Hersteller Nokia Trolltech. Die Library zeichnet sich vor allem dadurch aus, dass sie sehr gut dokumentiert ist und ein zwei Lizenzen Modell anbietet. Zum einen gibt es eine Opensource Lizenz (GPL2) und eine Kommerziell verwendbare welche jedoch gekauft werden muss. Näheres zu QT auf http://qt.nokia.com/. OpenCV ist eine offene Bildverarbeitung Bibliothek, welche unter der BSD Lizenz veröffentlicht wird. Sie wurde von Intel ins Leben gerufen und wird heute vor allem durch Willow Garage weiterentwickelt und gepflegt. Ein erster Ansatz war, das Ganze mit Template Matching zu lösen. Nach einigen Recherchen im Internet fanden wir dann aber eine Lösung mit dem k-nearest-neighbour-algorithmus. Diesen kann man mit einem eindimensionalen Vektor trainieren. Dieser Vektor beinhaltet in unserem Fall eine Reihe von Pixeln (1 oder 0). 1 2 3 4 5 6 7 8 9 10 11 12 Bild [1 2 3 4 5 6 7 8 9 10 11 12] Vektor Man übergibt nun dem Algorithmus zu jedem Klassifikator einige dieser Vektoren (Bilder) und trainiert ihn damit. Von OpenCV wird für knn folgende Klasse zur Verfügung gestellt CvKNearest. Hat man nun ein Bild das man Klassifizieren will, vergleicht er dieses mit allen Vektoren und gibt den Klassifikator zurück, der am besten mit dem Bild übereinstimmt. Über den Faktor k bestimmt man wie viele Vektoren zur Klassifikation herbeigezogen werden sollen. Mit k=3 würde der Punkt in der Mitte als Dreieck durchgehen. Erhöht man k auf 5 wird er als Rechteck klassifiziert. Mit diesem Algorithmus wird also ein Template Matching gemacht, jedoch können mehrere vergleiche zur Resultats Bildung herangezogen werden. Das erhöht die Treffsicherheit. Maschinelles sehen 3

Zum Aufbau des ESR-Code fanden wir ein Dokument der Post welches ihn sehr gut beschreibt (siehe Dokument Kodierung.pdf ). Maschinelles sehen 4

Design: Benutzerinteraktion: Der Benutzer kann wählen ob er ein Bild von der Kamera oder der Festplatte nehmen will. Danach wählt er einen Bereich auf dem Bild, den er in einen String umwandeln will. Dieser String wird danach in Betrag, Account und Referenznummer unterteilt und in einem Fenster angezeigt. Von dort kann man alle notwendigen Daten kopieren und in das e-banking Programm übertragen. Überblick der Klassen Maschinelles sehen 5

Das ganze Programm besteht aus 5 Klassen, welche alle ihre eigenen Aufgaben erledigen. Das QMainWin ist das Hauptfenster, in ihm kann man Bilder laden, das Kamerabild einfrieren, etc. Das QOpenCVWidget verwaltet den Bereich im MainWin welcher das Bild anzeigt und bietet die Funktion zur Bereichswahl des Codes an. QYellowReaderResult ist ein neues Fenster das, dass Resultat anzeigt. Es bleibt immer im Vordergrund. ExtendedOCR zerlegt den Ausschnitt vom Bild in einzelne Objekte und füttert dies dem BasicOCR das die Umwandlung vom Bild in Schriftzeichen vornimmt. ExtendedOCR setzt die einzelnen Schriftzeichen dann zusammen und sortiert sie anhand der Bildposition. Basic OCR Initialisierung: Lädt und trainiert den k-nearest neightbour Algorithmus. getdata Lädt die Trainingsdaten und bereitet sie für den KNN-Algorithmus vor. Jedes Bild wird dabei noch vorverarbeitet damit man eventuelle Ränder eliminieren kann und eine feste Grösse hat. Maschinelles sehen 6

Classify Klassifiziert das gewünschte Bild und gibt das Zeichen zurück, dass am nächsten an das Bild herankommt. Auch hier wird wie bei getdata das Bild vorverarbeitet, da sonst das Templatematching nicht funktionieren würde. Maschinelles sehen 7

ExtendedOCR Da man vom Hauptfenster ein Bild bekommt und nicht bloss die einzelnen Schriftzeichen, muss man das Bild in seine einzelnen Objekte zerlegen. Dies übernimmt die Klasse extendedocr. Von ihr kriegt man auch den konvertierten String zurück. Die Zeichen werden anhand der X und Y Koordinaten sortiert. Maschinelles sehen 8

Grafische Oberfläche: Wie die grafische Oberfläche aufgebaut ist, erkennt man am besten wenn man das Programm ausführt. Maschinelles sehen 9

Hinweise zum Projekt, Qt und OpenCV Programm installieren: Um jedem Benutzer die Möglichkeit zu geben Yellowreader auszuprobieren erzeugten wir von den Binaries einen Installer. Somit sollte es auf den meisten Windows Rechnern installierbar sein. Installer: http://code.google.com/p/yellowreader/downloads/ Programm selber kompilieren: Will man das Programm selber kompilieren empfehlen wir entweder den QT Builder von Nokia/QT zu verwenden oder bei Eclipse das Integration Toolkit als Plugin herunterzuladen (ebenfalls von Nokia). Als Compiler empfehlen wir TDMMingw da der normale MinGW noch auf Version 3.xx vom gcc aufsetzt (2010). Ausserdem braucht man zwingend die QT Libraries, welche es mit dem QT Builder automatisch installiert. Da unser Programm zudem noch OpenCV verwendet, muss man auch diese Libraries herunterladen. Wir stellten fest, dass das aktuelle Release (2.0) nicht einwandfrei funktioniert, deshalb sollte man es selber kompilieren oder unsere Version herunterladen. QT: http://qt.nokia.com/products TDMMingw: http://www.tdragon.net/recentgcc/ OpenCV offiziell: http://sourceforge.net/projects/opencvlibrary/ OpenCV unser build: http://code.google.com/p/yellowreader/downloads/ Wir machten die ganze Projektverwaltung über google code. Dort findet man auch den Quellcode des ganzen Projekts. Falls Interesse besteht, an dem Projekt weiter zu arbeiten, können wir gerne weiter Entwickler hinzufügen http://code.google.com/p/yellowreader/ Hat man das Projekt per svn heruntergeladen, muss man nur noch das.pro an den jeweiligen Computer anpassen (Pfade), von da an müsste man es kompilieren können. Das ganze Projekt Handling ist leider etwas schwierig, es können also ohne Probleme einige Stunden vergehen bis man eine Funktionierende Entwicklungsumgebung hat. Falls Fragen bestehen richten Sie sie an eichest@gmail.com oder tkurmann@gmail.com. Maschinelles sehen 10

Schlussbetrachtung: Unser Programm erfüllt die meisten Anforderungen die wir gestellt haben. Man kann ein Bild von der Kamera oder der HD laden. Man muss jedoch noch den Bereich auswählen der umgewandelt werden soll. Ist dies ein ECR-Code wird er relativ zuverlässig umgewandelt. Es gibt jedoch noch einige schwächen. So hatten wir keine Zeit mehr eine Entzerrung zu Implementieren, was vermutlich aber nicht viel am Ergebnis ändern würde. Den ein etwas anderer Ansatz ist das man bereits verzerrte Bilder für das trainieren des KNN braucht. Dies haben wir teilweise schon erledigt, würde man jedoch noch mehr Trainingsdaten haben (mindestens 10) würden sich die Ergebnisse noch einmal verbessern. Ausserdem muss man darauf achten, dass man das Bild nicht zu schräg hält. Das Problem dabei ist nicht nur die Drehung (diese wäre vermutlich der kleinere aufwand) sondern auch die Bereichswahl. Deshalb wäre es vermutlich gut noch eine Klasse einzuführen welche ein Bild einliest, darauf den weissen Bereich sucht und um diesen mit MinAreaRect2 ein Rechteck legt. Mithilfe dieser Funktion erhält man auch den Horizontalen Winkel. Nun müsste man das Bild um diesen Winkel drehen und dann auf dem neuen Bild den Code suchen und ausschneiden. Diesen Code kann man danach ohne weitere Probleme der Klasse extendedocr übergeben und alles sollte funktionieren. Leider hat uns dazu aber die Zeit nicht mehr gereicht. Herzlich bedanken möchten wir uns noch bei D. Burri, welcher uns half einen Einstieg in OpenCV und QT zu finden. Maschinelles sehen 11