Einführung in QR Codes
Martin Stoev

Zurück Weiter

Informationen in QR Code Symbolen

Grundsätzlich sind die Daten in QR Codes nach dem Schema in Abbildung 1 angeordnet. Der Mode Indicator ist eine Referenz auf den verwendeten Zeichensatz (siehe Modus weiter unten). Der CCI (Character Count Identifier) enthält die Anzahl der Zeichen, die in dem Modus encodiert wurden.

Schema mit Informationen in QR Code Symbolen

Abb. 1: Schema mit Informationen in QR Code Symbolen

Die Daten enthalten die eigentliche Nachricht. Sie werden von einem Terminator (Bitsequenz: 0000), ähnlich dem "\0" Zeichen in C, abgeschlossen.

Wenn die Nachricht das letzte Codewort nicht komplett ausfüllt, wird dieses mit Füllbits (lauter 0en) aufgefüllt.

Sollten die Nachricht nicht alle Datencodewörter des QR Code Symbols verwenden, müssen die verbleibenden Codewörter mit Zufallsdaten gefüllt werden. Dabei ist die Anordnung der verwendeten Bitfolge irrelevant. Es ist jedoch wünschenswert das genauso viele helle, wie dunkle Zufallsmodule verwendet werden, damit die Anzahl der Strafpunkte beim Masking gering bleibt. Für alle diese Informationen (Mode Indicator, CCI, Daten, Terminator, Füllbits und Zufallsdaten) werden Fehlerkorrekturdaten berechnet und angehängt.

Zusätzlich gibt es noch Metainformation über das QR Code Symbol in Form von Format- und Versionsinformationen. Diese werden im Folgenden noch genauer erklärt.

Formatinformationen

Die Formatinformationen bestehen aus einer Sequenz von 15 Modulen, dabei werden 5 Module für das Format und 10 für die Fehlerkorrektur verwendet. Das Format wiederum besteht aus 2 Modulen für das Fehlerkorrektur Niveau (siehe Fehlerkorrektur ) und 3 Modulen für die Mask Pattern Referenz (siehe Masking ).

Diese Modulsequenz wird mit der festgelegten XOR-Maske 101010000010010 verknüpft.

Ein Beispiel soll dies verdeutlichen.

  • Fehlerkorrektur Niveau M: 00
  • Mask Pattern Referenz: 101
  • Format: 00101
  • Fehlerkorrekturdaten: 0011011100
  • Unmaskierte Formatinformationen: 001010011011100
  • Festgelegte Maske: 101010000010010
  • Formatinformationen: 100000011001110

Wenn die Formatinformationen nicht ausgelesen werden können, kann das QR Code Symbol nicht decodiert werden. Deswegen werden diese Daten doppelt redundant im QR Code hinterlegt.

Versionsinformationen

Die Versionsinformationen bestehen aus einer Sequenz von 18 Modulen, dabei werden 6 Module für die Version und 10 für die Fehlerkorrektur verwendet.

Es gibt insgesamt 40 unterschiedliche QR Code Versionen. Es fängt mit Version 1 (21 * 21 Module) an und geht bis Version 40 mit 177 * 177 Modulen. Pro Version wächst die Dimension um 4 Module in die Länge und in die Breite.

Die Versionsinformationen werden nur für Symbole mit einer Version > 6 hinterlegt. Für QR Codes mit Version 1-6 wird die Version mit folgender Formel berechnet: Formel für die Version.

Ein Beispiel soll die Berechnung der Versionsinformationen verdeutlichen.

  • Versionsnummer: 7
  • Binärdaten: 000111
  • Fehlerkorrekturdaten: 110010010100
  • Formatinformation: 000111110010010100

Auch die Versionsinformationen werden doppelt redundant gespeichert.

Versionen mit Kapazitäten

Tab. 1: Versionen und ihre Kapazitäten (Auszug aus [ISO] S. 28-32)

 

Modus

Der Modus gibt die Interpretationsregeln für die Daten an, ist also indirekt der Zeichensatz des QR Code.

Insgesamt sind 4 Modi im QR Code Standard definiert.

  • Numeric Mode: [0-9]
  • Alphanumeric Mode: [0-9A-Z$%*+-./:] + Leerzeichen
  • 8-Bit Byte Mode: Daten aller Art
  • Kanji Mode: Japanischer Zeichensatz

Diese können über den in Tabelle 2 abgebildeten Indicator referenziert werden.

Mode Indicator
ECI 0111
Numeric 0001
Alphanumeric 0010
...
Terminator (End of Message) 0000

Tab. 2: Mode Indicator Tabelle (Auszug aus [ISO] S. 18)

Zusätzlich zu den Modi sind in dieser Tabelle auch andere Steuerzeichen enthalten. Dazu gehört der schon erwähnte Terminator und der ECI (Extended Channel Interpretation). Letzterer leitet einen Wechsel des Modus ein. Es ist möglich mehrere Modi in einem QR Code Symbol zu verwenden, um die Daten effizienter abzuspeichern. Dazu wird der bisherige Modus mit dem ECI verlassen und ein neuer Modus wird durch seinen Indicator eingeleitet.

In dieser Arbeit werden wir uns nur mit dem Numeric Mode befassen, der auch im Detail erklärt wird.

Numeric Mode

Im Numeric Mode können ausschließlich Ziffern (0-9) encodiert werden. Dafür wird die zu verarbeitende Ziffernfolge in Blöcke der Länge 3 zerlegt. Diese Blöcke werden wiederum als Zahlen interpretiert.

Mit 3 Ziffern können die Zahlen von 0 - 999 repräsentiert werden, sie belegen 10 Bits. Eine Ausnahme können die letzen 1-2 Ziffern sein. Aus Effizienzgründen können sie in 7 statt 10 Bits abgelegt werden.

Ein Beispiel soll dies verdeutlichen:

  • Ziffernfolge: 01234567 -> (012, 345, 67)
  • 012 -> 0000001100
  • 345 -> 0101011001
  • 67 -> 1000011
  • Resultat: 000000110001010110011000011

Zurück Weiter