Skip to end of metadata
Go to start of metadata

Titel

Scan & Pay

Untertitel

Interaktiver Einzahlungsscheinleser für die CS Android Banking App

Studenten

Mirco Widmer (m1widmer@hsr.ch), Matthias Zürcher (mzuerche@hsr.ch)

Betreuer

Prof. Dr. Markus Stolze

Projektpartner

Credit Suisse AG

Ausgangslage

Kundinnen und Kunden der Credit Suisse AG haben vermehrt das Bedürfnis Bankdienstleistungen mobil zu nutzen. Eine mobile Applikation gibt es aktuell für das iOS-Betriebssystem. Die iOS-App bietet verschiedene Features, unter anderem einen Währungsrechner und eine Standortübersicht. Eines der wichtigsten Features ist das Erfassen von orangen Einzahlungsscheinen. Damit kann ein Einzahlungsschein mit dem Mobiltelefon gescannt und die erstellte Zahlung an das Backendsystem der Credit Suisse AG übermittelt werden.

In dieser Arbeit wird getestet, inwiefern die Realisierung der Funktionalität ”Scan & Pay” für die Android-Plattform möglich ist. Besondere technische Herausforderungen sind eine hohe Performance des Scan-Algorithmus und die Vielfalt an Android-Geräten.

In der Abbildung ist die Plugin-Architektur der Komponenten dargestellt. Neben einem bereits bestehenden Backendsystem gibt es ein in Entwicklung stehendes Mobile Framework. Dieses Framework kann verwendet werden, um ein Plugin Payments zu erstellen, welches die identischen Anforderungen erfüllt wie die iOS-Version.

Vorgehen

Folgende Schritte waren essentiell für die Entwicklung des Plugins Payments:

  • Kamera ansteuern
  • Erkennen von Text mit Hilfe der OCR-Library ABBYY
  • Kommunikation mit dem Backendsystem der Credit Suisse AG

Diese drei technischen Herausforderungen wurden zu Beginn des Projektes in Angriff genommen. Die Kamera des Mobiltelefons wurde so angesteuert, dass einzelne Frames extrahiert werden konnten. Ein solches Frame muss anschliessend für die OCR-Erkennung vorbereitet werden. Jedes Gerät hat eine andere Preview-Grösse (entspricht der Vorschau der Kamera). Es wurde ein Algorithmus entwickelt, welcher für verschiedene Geräte jeweils die optimale Preview-Grösse liefert.

Die OCR-Library ABBYY kann entweder mit einem Bitmap oder einem ImageStream verwendet werden. In verschiedenen Tests wurde festgestellt, dass ein ImageStream in Kombination mit einem spezifischen Satz von erlaubten Zeichen bei der Erkennung die besten Resultate liefert.

Mit den Informationen aus der Kodierzeile konnten die einzelnen Schritte – die zu einer erfolgreichen Zahlung führen – implementiert werden. In drei Schritten (enrichPayment, validatePayment, createPayment) wird eine Zahlung an das Backendsystem der Credit Suisse geschickt. Die Kommunikation findet mit Hilfe von REST-Requests statt.

Zu den erwähnten Herausforderungen kamen Usability Tests hinzu, um den Scan-Screen zu optimieren. Erkenntnisse aus diesen Tests führten zu einer Optimierung des Scan-Screens, welche eine zentrale Komponente der Applikation darstellt. Beispielsweise wurden bessere Resultate erzielt, wenn ein kompletter Muster-Einzahlungsschein abgebildet ist und nicht nur Teile davon.

Bei der Entwicklung von Android-Applikationen ist ein wichtiger Teil das Testen auf verschiedenen Geräten. So konnte die Applikation auf 13 verschiedenen Geräten – mit Android-Versionen von 2.3.3 bis 4.2.2 – getestet werden.

Ergebnisse

Im Rahmen dieser Arbeit konnte das Plugin Payments entwickelt werden. Es beinhaltet die Funktionalität ”Scan & Pay” sowie das Löschen von pendenten Zahlungen. Die folgenden Herausforderungen wurden gemeistert:

  • Schnelles und fehlerfreies Einlesen des Einzahlungsscheins
  • Breite Unterstützung von Android-Geräten und Versionen
  • Hohe Wartbarkeit des Codes

Es ist möglich, innerhalb von einer Sekunde einen Einzahlungsschein zu scannen und anschliessend in wenigen Schritten eine Zahlung zu erfassen. Es ist garantiert, dass die gescannte Kodierzeile korrekt ist. Dies wird einerseits bereits innerhalb der App sichergestellt, zusätzlich erfolgt eine Validierung im Backendsystem der Credit Suisse AG.

Durch die breite Unterstützung von Geräten sowie deren Android-Version können 95.1% der aktiven Geräte unterstützt werden. Ein wichtiger Teil der Arbeit war die Unterstützung älterer Geräte und Android-Versionen ab Android 2.3.3. Mit der vorliegenden Lösung konnte gezeigt werden, dass auch auf älteren, technisch weniger leistungsstarken Geräten eine sehr gute Performance erzielt wird.

Durch verschiedene Software-Konzepte wie beispielsweise einer Layer-Architektur, Low Coupling und Implementierung des Observer-Patterns konnte eine hohe Wartbarkeit sichergestellt werden. Es wurden denn auch verschiedene Metriken auf dem entwickelten Code erstellt, die dies bestätigen.

Ausblick

Das erstellte Plugin Payments ist besonders für Mobiltelefone optimiert. Folgende Erweiterungen sind denkbar:

  • Layout-Anpassungen für Tablets
  • Unterstützung weiterer Sprachen

Die ”DNMB”-App wurde durch das Plugin Payments mit einem sehr wichtigen Feature erweitert. Die Aufgabenstellung umfasste eine Machbarkeitsstudie und eine Musterimplementation. Dies wurde übertroffen, da geplant ist, dass entwickelte Plugin Payments in einem Release der ”DNMB”-App zu verwenden.

Youtube-Video

https://www.youtube.com/watch?v=69OYsj8omJI

  • No labels