Vertiefung

QR-Code

Der QR-Code (engl. Quick Response code) ist ein zweidimensionaler grafischer Code, der ursprünglich 1994 von der japanischen Firma Denso entwickelt, um Bauteile in der Automobilproduktion zu kennzeichnen und automatisch erfassbar zu machen. Die Verwendung von QR-Codes ist lizenz- und kostenfrei und ist als öffentlicher Standard weit verbreitet. QR-Codes werden meistens mit dem Smartphone mit bestimmten Apps aufgenommen und verarbeitet.

Im Folgenden werden wir den grundlegenden Aufbau eines QR-Codes beispielhaft kurz anreißen – dieser Exkurs dient aber nur zur Vertiefung, um eine Vorstellung davon zu bekommen, in welcher Form digitale Daten hier (im Vergleich zum Barcode) repräsentiert werden.

Struktur

Ein QR-Code besteht aus einer quadratischen Matrix aus schwarzen und weißen Zellen, durch welche die codierten Daten binär dargestellt werden. Der QR-Code enthält je nach Umfang der codierten Daten 21×21 bis 177×177 quadratische Zellen.

Image Image

Neben den eigentlichen Daten (hier grün dargestellt) enthält ein QR-Code bestimmte Erkennungsmuster, die unabhängig von den codierten Daten sind (hier schwarz dargestellt), sowie bestimmte Bereiche, in denen das verwendete Datenformat und die Versionsinformationen codiert sind (hier jeweils rot und blau dargestellt).

ImageDie Position und Orientierung des QR-Codes ist durch spezielle Markierungen in drei der vier Ecken des Quadrats vorgegeben (links oben, rechts oben, links unten). Anhand dieser Markierungen kann der QR-Code-Scanner das aufgenommene Bild geeignet ausrichten.
ImageNeben diesen Markierungen sind bei größeren QR-Codes weitere kleinere Markierungen innerhalb das Quadrats verteilt, um die Ausrichtung besser zu erkennen und perspektive Verzerrungen herauszurechnen.
ImageZwischen den drei Positionsmarkierungen befinden sich zwei Linien oben und links, in denen abwechselnd schwarze und weiße Quadrate vorkommen, die sogenannten Synchronisationslinien. Diese Linien begrenzen den Bereich der Datenmatrix.
ImageIn den Versionsfeldern ist die Information über die QR-Code-Version gespeichert (1–40). Die Version legt die Größe des QR-Codes und damit die Anzahl der codierbaren Zeichen fest: Version 1 ist der kleinste QR-Code mit 21×21 Zellen, Version 40 ist der größte QR-Code mit 177×177 Zellen.1 Die beiden Feldern enthalten dabei dieselbe Information (Redundanz), falls ein Versionsfeld nicht richtig gelesen werden kann.
ImageIn den Formatfeldern sind Details zur Codierung der Daten enthalten (nämlich die verwendete Fehlertoleranz und die Datenmaske), die hier aber nicht weiter behandelt werden.
ImageDie restlichen Bereiche enthalten die codierten Daten mit redundanten Zusatzdaten zur Fehlererkennung und -korrektur.

Die codierten Daten enthalten dabei zu Beginn 4 Bit, die den verwendeten Zeichensatz definieren (z. B. ISO-8859-1), die Anzahl der codierten Zeichen als 8-Bit-Ganzzahl, gefolgt von den codierten Zeichen. Die Daten werden nach einem bestimmten “Zickzack-Muster” von unten rechts nach links in die Inhaltsbereiche des QR-Codes eingetragen. Die folgende Abbildung zeigt skizzenhaft, wie die Bitsequenz der codierten Daten von der unteren rechten Ecke aus entlang der Zellen innerhalb des markierten Bereichs verläuft (die rot umrandeten Felder enthalten jeweils 8 Bit = 1 Byte an Daten):

Image

Die codierten Daten werden dabei durch redudante Informationen zur Fehlererkennung und -korrektur ergänzt und zusätzlich mit einer “Maske” – also einem bestimmten Pixelmuster – verrechnet, damit für das Scannen ungünstige Muster vermieden werden.

Die grafische Codierung von digitalen Daten als QR-Code ist so um einiges komplexer als beim EAN-Barcode, erlaubt es aber, größere Datenmengen zu speichern und Daten selbst dann richtig zu interpretieren, wenn Teile des QR-Codes beschädigt oder verdeckt sind.


  1. Generell gilt: Ein QR-Code Version N hat eine Höhe und Breite von 4N + 17 Zellen. ↩︎