Unsere Lösungen,
ob Start-Up oder etabliertes Unternehmen

Business Process Management

Java

Testautomatisierung

Agile Methoden

Mobile- und Weblösungen

Business-Intelligence

vivir

IT-Sicherheit

Künstliche Intelligenz

viadee Themen

In unserem Blog finden Sie Fachartikel, Success-Stories, News, Messeberichte und vieles mehr... vor allem aber hoffentlich wertvolle Informationen, die Ihnen in Ihrem konkreten Projekt und in Ihrem Business weiterhelfen. Bei Fragen und Anregungen nehmen Sie gerne Kontakt zu uns auf. Bitte benutzen Sie dazu die Kommentarfunktion unter den Blogbeiträgen.

„Ich bin kein Roboter" - Captchas im Test mit OpenSource KI

18.06.18 13:02

Mit zunehmender Automatisierung haben auch Sicherheitsmechanismen auf Webseiten Einzug gehalten, um eben diese Automatisierung (im Fachjargon „web scraping“, „web harvesting“ oder „web data extraction“) zu verhindern. Dabei werden Bilder auf die entsprechende Seite gestellt, die nur von Menschen lesbar sein sollen und z. B. die Eingabe eines im Bild dargestellten Codes, sogenannte Captchas, verlangen. Was zum Schutz auf Webseiten nützlich ist, stellt in der Testautomatisierung eine Herausforderung dar.

Schrifterkennung-mit-vTF3_

Wir betreiben Testautomatisierung für Business-Anwendungen im Kundenauftrag und entwickeln Werkzeuge dafür. In einem aktuellen Projekt hat der Benutzer nach Eingabe des im Bild dargestellten Wertes Informationen zu seinem Produkt abrufen können. Das Bild war dabei zugegebenermaßen gut strukturiert. Auf grauen Linien quer zur Leserichtung waren Druckbuchstaben und wenige Sonderzeichen zu lesen. Für diese Zeichen wurde immer die Farbe Schwarz verwendet.

Unser viadee Testframework fasst verschiedene OpenSource-Komponenten zu einer Lösung zusammen. Durch diese Kombination erhöhen sich die Möglichkeiten der Automatisierung extrem stark. Neben der Erkennung von Bildern liegt es dabei nahe, auch auf die Erkennung von Text zu setzen. Letzteres ist natürlich besonders in textlastigen Anwendungen wie z. B. Host-Emulationen sinnvoll.

Schrifterkennung ist natürlich auch in vielen anderen Gebieten einsetzbar, insbesondere wenn Handschriften erkannt werden sollen. Die Erkennung von Schrift in Anwendungen ist im Kontext der Schriftenerkennung eine der leichtesten Anwendungsfälle, da ein Screenshot schnell zu erstellen und die enthaltenen Texte schnell zu erkennen sein sollten.

Sofern keine kostenpflichtigen Produkte zum Einsatz kommen dürfen, bietet sich auf dem OpenSource-Markt für Schrifterkennung eigentlich nur noch eine Alternative an: Tesseract bzw. Tess4J für die Verwendung von Tesseract in einer Java-Applikation.

Allerdings ist die vortrainierte Machine Learning-Erkennung „out of the box“ noch optimierbar. Ein Faktor bei Tesseract ist dabei das sog. Greyscaling bzw. der Greyscaling-Faktor. Je nach Einstellung lassen sich damit verschieden gute Erkennungsraten erzielen.

Durch das Greyscaling ist es auch möglich, die oben beschriebenen grauen Linien aus dem Bild zu bekommen. Knapp zusammengefasst können damit alle schwarzen Punkte in einem Bild als schwarz und alle anderen Punkte in weiß dargestellt werden. Dadurch gelingt es, nur noch schwarze Buchstaben auf weißem Grund in einem Bild zu erzeugen. Mathematisch betrachtet verringert sich die Streuung in der Stichprobe – irrelevante Informationen verschwinden, denn Menschen erkennen Buchstaben auch an Formen und nicht an Farben in einem Bild: Ein rotes A bleibt ein A. Ohne diese Verdichtung sind schlechtere Ergebnisse oder massiv höhere Anforderungen an Trainingsdaten-Mengen zu erwarten.

Das Greyscaling ist allerdings nur ein Faktor auf dem Weg zum Erfolg. Der nächste und wichtigste Schritt ist das spezifische Training von Tesseract mit den Texten der Zielumgebung. Die Buchstaben dort unterscheiden sich regelmäßig in Font und Rendering (bspw. Antialiasing, Kerning) vom generischen Modell, das Tesseract mitbringt – für Captchas ist das insbesondere zu erwarten. Dafür sollten einige Bilder mit Buchstaben zur Verfügung stehen, auf denen die enthaltenen Zeichen mit Kästen eingegrenzt werden. Zu jedem Kasten werden dann durch den Benutzer die korrekten Buchstaben angegeben. Tesseract macht hier schon ziemlich gute Vorschläge, sodass nur noch an wenigen Stellen nachgebessert werden muss.
Mit all diesen Informationen kann Tesseract dann sein Training anpassen und so auf echte Anwendungsfälle losgelassen werden.

In der Praxis haben wir bei dem Kunden auf diesem Weg Captchas ausgelesen. Mit nur zehn Bildern für das Training erzielen wir so eine sehr hohe Trefferwahrscheinlichkeit, um in einer Webanwendung auf die Seite hinter dem Captcha zu gelangen. Dieser überraschend schnelle Lernfortschritt erklärt sich aus dem eingebauten adaptiven Klassifizierer. Tesseract ist ohnehin so aufgebaut, dass es beim Lesen einer Seite unterwegs weiterlernt und dann mit dem neuen Wissensstand die ersten Abschnitte neu versucht zu lesen.

Aus der Qualitätssicherungsperspektive bleibt als Fazit festzuhalten: Im Prinzip ist der Testfall schon für ein Captcha notwendig, um sicherzustellen, dass das Captcha nicht auf diese Weise mit Standardwerkzeugen überlistet werden kann. So gesehen ist der Testfall erst einmal „rot" . KI kann also eine relevante Rolle im Testumfeld spielen. Dies insbesondere, um sicherzustellen, dass bestimmte Dinge nicht (einfach) automatisch möglich sind. Das gilt beispielsweise auch für die Rückführung/Klassifikation von Daten zu einer Einzelperson im Rahmen der DSGVO. Der Aufwand für solche Experimente ist erstaunlich klein geworden.


Jetzt Blog abonnieren!
zum Blog
Bernd Rinklake

Bernd Rinklake

Bernd Rinklake ist seit 2006 bei der viadee IT-Unternehmensberatung und war dort bereits in verschiedenen Rollen der Entwicklung von Individualsoftware tätig. Heute ist er Projektleiter und Themenverantwortlicher für das viadee Testframework, das aktuell in Richtung Robotic-Process-Automation weiterentwickelt wird.

Bernd Rinklake bei Xing