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

Montag, 18.6.2018

Schrifterkennung-mit-vTF3_

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.

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.


Testest Du schon oder suchst Du noch nach geeigneten Testdaten? Jetzt Blogbeitrag lesen!

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.
Testest Du schon oder suchst Du noch nach geeigneten Testdaten? Jetzt Blogbeitrag lesen!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.

 

Von der Test- zur Prozessautomatisierung: aus vtf wird mateo

Das ehemalige viadee Testframework (vTF) hat sich weiterentwickelt. Um dem Leistungsumfang des gewachsenen Produktportfolios gerecht zu werden, erscheint es unter neuem Namen. Erfahren Sie mehr über Testautomatisierung mit mateo core, das Testen von Weboberflächen mit mateo web und robotergesteuerte Prozessautomatisierung mit mateo rpa.


zurück zur Blogübersicht

Diese Beiträge könnten Sie ebenfalls interessieren

Keinen Beitrag verpassen – viadee Blog abonnieren

Jetzt Blog abonnieren!

Kommentare

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 Kompetenzbereichsleiter und damit verantwortlich für Leistungen der viadee rund um RPA, Testautomatisierung und Qualitätssicherung von Software.

Bernd Rinklake bei Xing