Scannen von Barcodes mit mobilen Geräten
Bereits 2002 begannen japanische Handy-Hersteller, ihre Geräte mit eingebauten QR-Code-Scannern auszuliefern. Seitdem hat sich die Qualität von Smartphone-Kameras enorm verbessert, was das Lesen vieler weiterer Barcodes-Symbologien ermöglicht.
Seit wir mit dem Smartphone stets ein leistungsfähiges Gerät zum Scannen von Barcode dabei haben, verlieren die klassischen Handheld-Scanner zunehmend an Bedeutung. Dank Computer-Vision-Technologie reicht eine Smartphone-Kamera aus, um jede 1D- und 2D-Barcode-Symbologie zu scannen, sofern sie von der Scan-Software unterstützt wird. Unter realen Bedingungen legen traditionelle Ansätze zum kamerabasierten Scannen jedoch deutliche Schwächen an den Tag.
Hier kommt Deep Learning-Technologie ins Spiel. Als Weiterentwicklung klassischer Computer-Vision-Ansätze versetzt sie Programme in die Lage, Bildmuster zuverlässig zu erkennen. Damit eignet sie sich ideal für die Barcode-Erkennung. Mit einigen Optimierungen lässt sich auch auf mobilen Geräten ein hohes Maß an Genauigkeit erreichen.
Deep Learning verbessert die Leistung von Barcode-Scannern in allen Bereichen:
- Barcodes auffinden
- Barcodes erkennen
- Barcodes verarbeiten
Sehen wir uns nun genauer an, was jede dieser Aufgaben mit sich bringt.
Barcodes auffinden
Bevor die Scan-Software mit der Dekodierung der in einem Barcode gespeicherten Informationen beginnen kann, muss sie diesen im Live-Feed der Gerätekamera lokalisieren. Das klingt einfacher, als es ist: Nicht nur muss die Software viele verschiedene Barcode-Symbologien als solche erkennen können, sondern muss dies auch unter vielfältigen Bedingungen zuverlässig tun.
Das Trainieren eines Deep-Learning-Modells anhand eines großen Datensatzes von Beispielbildern verbessert die schnelle Lokalisierung eines Barcodes. Für jedes Bild gibt das Modell eine Reihe von Begrenzungsrahmen ("Bounding Boxes") aus, die die möglichen Positionen des Codes - oder mehrerer - innerhalb des Bildes anzeigen.
Da für einen einzelnen Barcode mehrere Bounding Boxes erkannt werden können, wird ein Nachbearbeitungsschritt, die sogenannte "Non-Maximum Suppression", angewendet, um die Ergebnisse zu bereinigen und möglichst nur die tatsächliche Position beizubehalten.
Diese endgültige Position des Barcodes innerhalb des Bildes wird schließlich als Bounding Box oder Koordinatensatz ausgegeben.
Barcodes erkennen
Im nächsten Schritt muss der Scanner erkennen, zu welcher der vielen unterstützten Symbologien der Barcode gehört. Einige Barcode-Typen, wie QR oder Aztec, unterscheiden sich durch ihre auffälligen Suchmuster voneinander. Andere, wie etwa der RSS-Code, stellen mitunter ein Problem dar: Da es sich um einen "stacked" (gestapelten) Barcode handelt, interpretiert das Modell ihn womöglich als zwei separate Barcodes.
Ein "Convolutional Neural Network (CNN)", wie es in der Bildverarbeitung mittlerweile häufig zum Einsatz kommt, kann hier helfen. Ein CNN ist in der Lage, verschiedenste Formen effizient zu erkennen, wodurch es sich bestens für das Scannen von Strichcodes und Matrix-Codes eignet.
Im ersten Schritt wird das CNN anhand eines großen Datensatzes mit gelabelten Barcode-Bilddateien trainiert. Das CNN lernt so, deren besondere Merkmale zu erkennen, z. B. die Abfolge schwarzer und weißer Balken oder das Suchmuster. Das Vorbereiten des Inputs durch Anpassung des Kontrasts oder Entfernen von Bildrauschen kann die Ergebnisse des CNN verbessern.
Da ein CNN ein Bild in mehreren Schritten verarbeitet und dessen Merkmale Stück für Stück extrahiert, werden Barcodes auch unter schwierigen Bedingungen sehr effektiv erkannt, etwa bei schwacher Beleuchtung oder geringer Auflösung. Diese Methode verbessert auch die Unterscheidung zwischen den verschiedenen Barcode-Formaten, einschließlich 1D-Barcodes wie UPC und 2D-Barcodes wie QR.
Barcodes verarbeiten
Sobald die Symbologie eines Barcodes korrekt erkannt wurde, muss dessen Inhalt entschlüsselt werden. Die Daten werden durch die schwarzen Balken oder Quadrate und die weißen Zwischenräume kodiert. Für die verschiedenen Barcode-Typen werden unterschiedliche Kodierungsschemata und Algorithmen verwendet, die jeweils eigene Dekodierungsregeln vorgeben.
Die Dekodierung eines Barcodes umfasst grob vier Zwischenschritte:
Finden der Start- und Stoppzeichen
Die meisten Strichcodes beginnen und enden mit speziellen Mustern, die den Anfang und das Ende des Bereichs mit den kodierten Daten anzeigen. Der Decoder sucht also zunächst nach diesen Start- und Stoppzeichen, um zu bestimmen, wo sich die eigentlichen Daten befinden.
2D-Barcodes verfügen ebenfalls über derartige Muster, die aber meist entsprechend komplexer sind und dem Decoder zusätzliche Informationen über den Inhalt geben.
Anwendung des Dekodierungsalgorithmus
Der entsprechende Dekodierungsalgorithmus wird auf die Abfolge von Balken oder Quadraten und Zwischenräumen angewendet. Dabei wird das Muster in ein spezifisches Format umgewandelt, etwa binären, numerischen, oder alphanumerischen Code.
Prüfen auf Lesefehler
Viele Barcode-Symbologien enthalten Prüfziffern, die dazu dienen, Fehler in den dekodierten Daten zu erkennen. Der Decoder berechnet dazu anhand der entsprechenden Formel die Prüfsumme des Scan-Ergebnisses. Stimmt diese nicht mit der Prüfziffer überein, so muss der Scan wiederholt werden. 2D-Barcodes beinhalten Formeln für die automatische Fehlerbehebung, durch die das teilweise vermieden werden kann.
Ausgabe der dekodierten Daten
Schließlich werden die entschlüsselten Informationen in einem lesbaren Format ausgegeben, z. B. als Zahlen- oder Buchstabenfolge. Sie können auch zur weiteren Verarbeitung an eine Datenbank oder eine Backend-Lösung übermittelt werden.
Optimierung von Barcode-Scanning mittels Deep-Learning-Algorithmen
Dank Fortschritten in den Bereichen Computer Vision und Deep Learning sind Barcode-Scanner heute leistungsfähiger als je zuvor. Unser Barcode Scanner SDK, das in jede Mobil- oder Web-App integriert werden kann, scannt Barcodes in 0,2 Sekunden und mit einer Genauigkeit von 98,7 %. Das eingebaute AR-Overlay zeigt den Inhalt mehrerer Barcodes in Echtzeit an und ermöglicht so Anwendungsfälle, die noch vor wenigen Jahren unmöglich waren.
Leistungsstarke Barcode-Scanner-Software hat das Potenzial, die Möglichkeiten dieser erprobten Technologie deutlich auszuweiten. Bereits jetzt gibt es Roboter, die Inventuren von Hand überflüssig machen, indem sie durch die Gänge fahren und ganze Regale voll Artikeln auf einmal scannen.
Dafür ist weder teure Hardware noch viel Speicherplatz notwendig. Unsere Apps sind kleiner als 100 Megabytes und laufen auch auf günstigen Geräten problemlos. Viele Aufgaben, die noch vor wenigen Jahren spezielle Hardware benötigten, können nun mit ein und demselben Gerät ausgeführt werden – unserem Smartphone.
Der Wechsel von Hardware- auf Software-Lösungen kann auf lange Zeit beträchtliche Kosteneinsparungen mit sich bringen. Jetzt ist der perfekte Zeitpunkt, diese Chance zu nutzen.