Von den Daten zum Muster
Zuerst wird ein Kodierungsmodus gewählt, der zu den Daten passt: numerisch, alphanumerisch, Byte oder Kanji. Der Encoder wandelt die Daten in Bits um, teilt sie in 8-Bit-Codewörter auf und fügt Reed-Solomon-Fehlerkorrekturcodewörter in der gewählten Stufe hinzu. Dann wählt er die kleinste Version, in die alles passt.
Die Codewörter werden im Zickzack in das Raster gelegt, wobei die festen Muster übersprungen werden. Zum Schluss wendet der Encoder eines von acht Maskenmustern an, um große leere Flächen oder verwirrende Formen aufzubrechen, und hinterlegt Maske und Fehlerkorrekturstufe in den Formatinformationen.
- Kodierungsmodus wählen
- Daten kodieren und Fehlerkorrekturcodewörter hinzufügen
- Version (Größe) wählen
- Such-, Takt- und Ausrichtungsmuster platzieren
- Datenmodule einsetzen
- Die beste von acht Masken anwenden und die Formatinformationen schreiben
Vom Kamerabild zu den Daten
Die Dekodierung läuft in umgekehrter Reihenfolge ab. Der Scanner findet die drei Suchmuster, deren Verhältnis von 1:1:3:1:1 aus Dunkel und Hell in den meisten Bildern auffällt, und legt mit ihnen sowie den Takt- und Ausrichtungsmustern das Raster fest. Er liest die Formatinformationen, entfernt die Maske und sammelt die Codewörter ein.
Die Reed-Solomon-Dekodierung repariert anschließend falsch gelesene Codewörter, bis zur Grenze der Fehlerkorrekturstufe. Ist zu viel beschädigt, schlägt das Lesen fehl, statt falsche Daten zu liefern. Deshalb erzeugen QR-Codes selten verstümmelte Ergebnisse.
Warum Größe und Kontrast wichtig sind
Jeder Schritt hängt davon ab, dass die Kamera dunkle von hellen Modulen unterscheiden kann. Kleine Module, schwacher Kontrast, Spiegelungen, Unschärfe oder eine fehlende Ruhezone bringen mehr Module in Zweifel, und die Fehlerkorrektur kann nur begrenzt viel auffangen. Kurze Daten, starker Kontrast und ein freier Rand machen dem Decoder die Arbeit am leichtesten.