27
Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Embed Size (px)

Citation preview

Page 1: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Handschrifterkennung mit Android

Julian Hanhart und Dominik Giger

Betreuer: Alexander Bosshard

Page 2: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Inhalt

1. Aufgabenstellung2. Vorgehensweise3. Demonstration der Software4. Zeichenerkennung5. Architektur6. Fragen

Page 3: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Aufgabenstellung

• Von Hand eingegebene Buchstaben erkenneno Blockschrift und „Schnürlischrift“o Basierend auf einer vorgehenden Projektarbeit an der ZHAW

• Applikation für Androido Ersatz für die bestehende Tastatur

Page 4: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Vorgehensweise

1. Bestehende Projektarbeit analysieren2. Software-Prototyp erstellen3. Lösung der Projektarbeit umsetzen und testen4. Alternative Lösung dazu selbst erarbeiten5. Vergleich der beiden Lösungen6. Release-Applikation für Android erstellen

Page 5: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Demonstration der Applikation

Page 6: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Zeichenerkennung – Inhalt

• Überblick• Mikrogesten

o Ideeo Umsetzung -> Zwei Varianteno Algorithmen

• Grapho Ideeo Umsetzung

• Probleme / Vergleichstest• Verbesserungsmöglichkeiten

Page 7: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Überblick

• Auftrennen des Pfades in Mikrogesten• Mikrogesten klassifizieren• In einem bestehenden Graphen die erkannte Mikrogesten-

Folge suchen

Page 8: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Mikrogesten - Idee

• Jeder beliebig komplexe Pfad besteht aus einer Verknüpfung von simplen Mikrogesteno z.B. Kurve, Gerade

• Eine Folge von Mikrogesten definiert einen Buchstaben

• Jede Mikrogeste wird über ihre Eigenschaften definiert:o Form: Kurve, Gerade, Kreiso Richtung: Auf eine diskrete Anzahl abgebildeto Grösse: Abgebildet auf Schriftbild: Uberlänge, Unterlänge

Page 9: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Mikrogesten - Umsetzung

Zwei Varianten:• Variante A: Aus Projektarbeit übernommen

o Kurze und lange Gerade, Spitzkehre, schwache und starke Krümmung

• Variante B: Soll Schwachstellen von Variante A behebeno Kurze und lange Gerade, Kurve, Kreis

Grund:• Unterscheidung zwischen schwacher und starker

Krümmung variiert stark von Person zu Person

Page 10: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Mikrogesten - Umsetzung

• Schwierigkeiten: o Entscheiden wo eine Mikrogeste aufhörto Klassifizieren der Mikrogesten

• Auftrennen des Pfades:1. Möglichkeit:

Für jeden Punkt die Krümmungsstärke berechnen

2. Möglichkeit: Zuerst Kreise erkennen Geraden erkennen Rest ist Kurven

Page 11: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Mikrogesten - Umsetzung

• Klassifizierung:o Typ: Kreis, Kurve, Geradeo Ausrichtung bestimmen: Vier diskrete Richtungeno Länge: kurz oder lang

Page 12: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Mikrogesten - Algorithmen

• Die Auftrennung und Klassifizierung wird über mehrere Algorithmen durchgeführt

Beispiel:• Algorithmen für Variante B

1. Punktezahl Normierung2. Pfad bei spitzen Winkeln auftrennen3. Teilpfade glätten (Spline-Algorithmus)4. Kreise erkennen5. Geraden erkennen6. Kurven erkennen

Page 13: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Graph - Idee

• Gerichteter Graph mit einem festen Einstiegespunkt 'R'• Jeder Knoten enthält einen Mikrogesten-Typ und optional

einen Buchstabe• Graph ist zyklisch aufgebaut und führt immer wieder auf

den Einstiegspunkt zurücko Ein Pfad kann auch mehrere Buchstaben

enthalten

• Jede Kante ist mit einem Gewicht versehen um bei mehreren erkannten Buchstaben den wahrscheinlichsten auszuwählen

Page 14: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Graph - Umsetzung

• Schwierigkeit:o Aufbau des Graphen => Qualität des Graphen hat einen grossen

Einfluss auf die Erkennungsrate

• Jeder Buchstabe muss manuell mit den Mikrogesten aufgebaut werden

Page 15: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Graph - Umsetzung

• Alternativ: Statistischer Aufbauo Buchstaben mehrmals eingeben und erkannter Mikrogesten-

Aufbau analysiere

• Eine andere Schreibweise kann einen anderen Aufbau zur Folge habeno Jede weitere Schreibweise, die abgedeckt werden soll, macht den

Graphen komplexer

Page 16: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Vergleich der beiden Varianten

• Vorgehensweise:o Verschiedene Buchstaben mehrmals eingeben und aufzeichnen

wie gut der Buchstabe erkannt wirdo Es kann auch eine Teilerkennung geben wenn ein Teil der

Mikrogesten erkannt wurde

• Resultate:o Erkennung schlecht bei Buchstaben, die aus 1-2 oder 6+

Mikrogesten aufgebaut sindo Erkennung nicht sehr flexibel gegenüber unterschiedlichen

Handschrifteno Ähnlich aufgebaute Buchstaben lassen sich schwer unterscheiden

Page 17: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Verbesserungsmöglichkeiten

• Mikrogesten-Erkennungo Weitere Varianten testen

• Grapho Dev-Tools für die Erstellung des Graphen

• Wörterbuch

• Neuronales Netz statt Graph

Page 18: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Inhalt

• Grundsätzliche Überlegungen• Backend

o Analyseo Designo Implementierung

• Frontendo Analyseo Designo Implementierung

Page 19: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Grundsätzliches

• Prototypo Eine monolithische Applikationo Aufwendige Berechnungen blockieren die Bedienung

• Endprodukto Aufteilung in getrennte Prozesse für die Erkennung (Backend) und

die Bedienung (Frontend)o Kommunikation über die vom Android-System zur Verfügung

gestellten Mechanismen (AIDL)o Backend implementiert als Dienst (Service)

Kann ohne Frontend weiter im Hintergrund laufeno Frontend implementiert als Eingabe-Dienst (Input Methode Service)

Frontend kann Bildschirm-Tastatur ersetzen

Page 20: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Backend

Analyse:• Aufteilung der Erkennung in verschiedene Phasen

Page 21: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Backend

Design:• Schnittstellen

o Zeichen-Erkennung durchführeno Verwaltung und Konfiguration der Erkennungs-Algorithmen,

Übergabe von Argumenten

• Erkennungs-Algorithmeno Strategy Design Pattern für Algorithmeno Priority Queue aus Strategies für die Einzelschritte der Phasen

Erkennungs-Schritte sind austauschbar und deaktivierbar und ihr Ablauf kann geändert werden

Page 22: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Backend

Implementierung:• Graphen-Strategy für die Zeichen-Erkennungs-Phase

o Initialisierung: Graph wird aus XML-Datei eingeleseno Grober Ablauf

der Erkennung:

Page 23: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Frontend

Analyse:• Unter Android kann der Benutzer die standardmässig

mitgelieferte Bildschirm-Tastatur durch die eines Drittanbieters ersetzeno Eine solche Anwendung wird "Input Method" genannto Sie wird als so genannter "Input Method Service" implementiert,

also als spezialisierter Hintergrund-Prozess

• Bedienung soll vollständig über den Touchscreen-Gesten funktioniert.

Page 24: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Frontend

Design:• Frontend wurde in zwei Haupt-Klassen aufgeteilt

1. HandwritingIME: Erweitert die von Android bereitgestellte Basis-Klasse

InputMethodService Implementiert den Dienst für die Eingabe Methode Regelt die Kommunikation mit dem Erkennungs-Dienst

2. PadView: Eigentliche Benutzeroberfläche der Applikation Dient zur Eingabe und Anzeige der Eingabe-Punkte Implementiert einige Touchscreen-Gesten zur erleichterten Bedienung

Page 25: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Architektur - Frontend

Implementation:• Verbindung zwischen Dienst und UI über Observer Design

Patterno HandwritingIME ist Observer, PadView ist Subject

• Zur Entgegennahme der erkannten Zeichen implementiert HandwritingIME eine entsprechende Callback-Schnittstelleo Zeichen werden entgegen genommen und an das aufrufende

Eingabefeld weitergeleitet

• Implementierte Touchscreen-Gesten in PadView:o Durchstreichen der letzten Eingabeo Durchstreichen des gesammten Eingabefeldeso Leerzeichen einfügen über Abstand zwischen Eingaben

Page 26: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Verbesserungsmöglichkeiten

Erkennungs-Dienst:• Verarbeitung von Zwischenschritten bei langen Eingaben

(etwa wenn ein ganzes Wort am Stück eingegeben wird)

Benutzeroberfläche:• Oberfläche zur Konfiguration der Erkennung• Verbesserung der Usability der Eingabe Methode

o Anzeige von Wörtern als Vervollständigungs-Kandidateno Möglichkeit, Eingaben fortzusetzen wenn der Bildschirmrand

erreicht wirdo Weitere Touchscreen-Gesteno Ansprechendere visuelle Gestaltung ("Eye Candy")

Page 27: Handschrifterkennung mit Android Julian Hanhart und Dominik Giger Betreuer: Alexander Bosshard

Ende

• Fragen?