Wie funktionieren Barcodes?

Ob an der Supermarktkasse oder wenn wir mittels QR-Code eine Speisekarte aufrufen: Barcodes sind fester Bestandteil unseres Alltags. Zwar wissen wir, dass die schwarz-weißen Muster Informationen kodieren, die von einem Laser-Scanner oder einer Kamera gelesen werden können. Aber was passiert dabei eigentlich genau? In diesem Artikel werfen wir einen genaueren Blick in die Technologie hinter Barcodes.

app store

Als Beispiel dient uns der erste Barcode-Typ, der jemals an einer Supermarktkasse gescannt wurde: der Universal Product Code (UPC-A, um genau zu sein). Dieser verwendet einen offenen Standard, sodass alle die technischen Details kostenfrei einsehen können.

Betrachten wir nun einmal folgenden Barcode:

Auf den ersten Blick setzt er sich aus mehr oder weniger breiten schwarzen Balken in unterschiedlichen Abständen zusammen. Doch das ist eine optische Täuschung: Tatsächlich besteht der Barcode aus 95 identischen Spalten, die entweder schwarz ("1") oder weiß ("0") sein können. Breitere Barcode-Segmente sind in Wirklichkeit mehrere Spalten derselben Farbe nebeneinander.

Da die Spalten Einsen und Nullen repräsentieren, handelt es sich bei den in Barcodes gespeicherten Informationen um binäre Daten – wie bei jeder Art von digitaler Information, unabhängig von ihrer Komplexität. 

Versuchen wir nun, den Barcode zu lesen. Dafür starten wir auf der linken Seite und betrachten den ersten Teil des Barcodes, dessen Linien etwas länger sind als die nachfolgenden. Dieser steht für folgende Binärdaten:

Das allein hilft uns aber nicht weiter. Um zu erfahren, was hinter den Einsen und Nullen steckt, müssen wir einen Blick in den UPC-Standard werfen. So stellen wir fest, dass es sich bei "101" um den Start- und Stopcode handelt. Barcode-Scanner suchen nach diesem Muster, um den Anfang der kodierten Informationen zu finden.

1010100011

Jede darauffolgende Ziffer (0 bis 9) wird durch je sieben Spalten repräsentiert. Buchstaben kann UPC-A nicht kodieren. Sehen wir uns also an, was auf den Startcode folgt:

1010100011

Indem wir im Barcode-Standard nachsehen, welche Ziffer diese Abfolge von Einsen und Nullen darstellt, erfahren wir, dass es sich hierbei um eine 4 handelt. Wir haben also die erste Ziffer unseres Codes gefunden!

Indem wir auf diese Weise fortfahren, gelangen wir schließlich zur Mitte des Barcodes – wieder mit leicht verlängerten Linien. Diese Sequenz (01010 im binären Format) zeigt dem Barcode-Scanner an, dass die zweite Hälfte des Barcodes folgt.

Das ist deswegen wichtig, weil die rechte Seite andere Abfolgen von Einsen und Nullen zur Kodierung von Ziffern verwendet als die linke. Die Anzahl der in einer Sequenz enthaltenen Einsen ist auf der rechten Seite immer gerade, auf der linken jedoch ungerade. Auf diese Weise kann der Barcode-Scanner erkennen, ob der gescannte Barcode auf dem Kopf steht.

Barcodes verfügen über einen weiteren eingebauten Mechanismus, der Scannen dabei hilft, die Daten korrekt zu lesen.

In dieser Darstellung sind die weißen Leerräume links über der 4 und rechts über der 8 hervorgehoben. Diese "Ruhezone" ist ebenfalls Teil des Barcodes. Sie besteht aus 9 aufeinanderfolgenden weißen Spalten (000000000), die den Hauptteil des Barcodes von der Umgebung absetzen.

Ruhezonen sind daher ein wichtiger Bestandteil der meisten Barcode-Symbologien und sollten niemals verdeckt werden, da dies zu fehlerhaften Scans führen kann.

Übrigens spielt die Höhe eines Barcode keine besondere Rolle. Laser-Scanner projizieren einen dünnen horizontalen Lichtstrahl auf den Barcode und prüfen, welche Bereiche das Licht reflektieren und welche nicht. Smartphones, die Laser-Scanner zunehmend verdrängen, erreichen ähnliches mit ihren Kamera-Sensoren. 

Ein Barcode sollte zumindest so hoch sein, dass er sich bequem mit einem Scan-Gerät oder einem Smartphone erfassen lässt, doch theoretisch kann er endlos verlängert werden. Unabhängig davon, ob Sie eines der obigen Beispiele scannen oder die folgende unnötig lange Variante, das Ergebnis ist das gleiche:

Was ist mit 2D-Barcodes?

Seit Einführung der UPC-Symbologie wurden zahlreiche lineare Barcode-Standards mit höherer Datendichte und komplexeren Kodierungsmechanismen entwickelt. Technologisch noch weiter fortgeschritten sind 2D-Barcodes wie QR, Data Matrix und Aztec. Deren exakte Funktionsweise zu beschreiben, würde einen weiteren Artikel füllen, daher soll es an dieser Stelle bei einer kurzen Einführung bleiben.

Wir extrahieren die Binärdaten aus einem QR Code, indem wir die schwarzen und weißen Quadrate zählen, die wir anstelle der aus den 1D-Barcodes bekannten Balken vorfinden.

Die großen Quadrate in den Ecken ignorieren wir, da sie das Suchmuster bilden, anhand dessen der Barcode geortet wird. Stattdessen beginnen wir mit dem ersten Quadrat in der rechten unteren Ecke, welches weiß und damit eine 0 ist. Danach bewegen wir uns in einem Z-Muster nach oben: ein Quadrat nach links, dann eines diagonal nach rechts oben, dann wieder nach links, und so weiter. Sobald wir das Suchmuster erreichen, wandern wir zwei Spalten nach links und bewegen uns nach unten.

01001011011001011000101100…

Sind Sie am linken Rand angekommen, haben Sie den Barcode erfolgreich "gelesen". 2D-Barcodes wie dieser stecken voll zusätzlicher Daten, wegen derer sie eine hohe Fehlertoleranz aufweisen. Diese im Muster zu identifizieren ist zwar möglich, aber zeitraubend. Daher sollten Sie die tatsächliche Dekodierung lieber Maschinen überlassen.

Nun wissen Sie, wie Barcodes funktionieren. Möchten Sie auch erfahren, welche verschiedenen Barcode-Typen es gibt? Oder würden Sie gerne Ihren Barcode-spezifischen Wortschatz erweitern? Vielleicht müssen Sie auch Ihre eigenen Barcodes generieren. In jedem dieser Fälle können wir Ihnen behilflich sein.

Wir von Scanbot SDK entwickeln Datenerfassungstechnologie, um unseren Kunden auf der ganzen Welt das Leben zu erleichtern. Wenn Sie Interesse an einem High-End Barcode Scanner SDKhaben, zögern Sie nicht, uns zu konaktieren! Wir freuen uns darauf, von Ihnen zu hören.

Bereit zum Ausprobieren?

Das Hinzufügen unserer kostenlosen Testversion zu Ihrer App ist ganz einfach. Laden Sie das Scanbot SDK jetzt herunter und entdecken Sie die Möglichkeiten der mobilen Datenerfassung.