Wie QR-Codes Funktionieren: Die Technik Hinter Jedem Scan
Sie haben in dieser Woche höchstwahrscheinlich einen QR-Code gescannt. Restaurantmenüs, Veranstaltungstickets, Produktverpackungen und Zahlungsbildschirme verlassen sich alle auf diese vertrauten schwarz-weißen Quadrate. Aber haben Sie sich jemals gefragt, warum Sie ein Firmenlogo in die Mitte eines QR-Codes platzieren können und er dennoch einwandfrei gescannt wird? Die Antwort liegt tief in einem Zweig der Mathematik namens Reed-Solomon-Fehlerkorrektur, und das Verständnis davon offenbart, wie elegant diese Symbole wirklich konstruiert sind.
Dieser Artikel erklärt, wie QR-Codes von Grund auf funktionieren: ihre Entstehung, ihre Anatomie, die vier Kodierungsmodi, Fehlerkorrekturebenen, Maskierungsmuster und warum manche QR-Codes sich nicht scannen lassen. Keine technischen Vorkenntnisse erforderlich.
Eine Kurze Entstehungsgeschichte
QR-Codes wurden 1994 von Masahiro Hara, einem Ingenieur bei Denso Wave, einer Toyota-Tochtergesellschaft, erfunden. Der ursprüngliche Anwendungsfall war bescheiden: die Verfolgung von Fahrzeugteilen auf einem Fabrikboden. Barcodes konnten damals nur etwa 20 alphanumerische Zeichen speichern und erforderten eine präzise Ausrichtung mit dem Scanner. Haras Team benötigte etwas, das eine vollständige Teilenummer speichern, aus jedem Winkel gelesen werden und etwa zehnmal schneller dekodieren konnte als ein Standard-Barcode.
Der Name "QR" steht für Quick Response (schnelle Antwort), eine Anspielung auf dieses Geschwindigkeitsziel. Denso Wave veröffentlichte den Standard öffentlich und entschied sich, ihr Patent nicht durchzusetzen, weshalb sich QR-Codes weltweit ohne Lizenzreibungen verbreiteten.
Die Anatomie eines QR-Codes
Ein QR-Code ist keine zufällige Anordnung von schwarzen und weißen Quadraten. Jede Region hat einen bestimmten Zweck.
Suchmuster
Die drei großen Suchmuster, die Quadrat-im-Quadrat-Symbole in drei Ecken jedes QR-Codes, sind das Erste, wonach ein Scanner sucht. Ihr charakteristisches 1:1:3:1:1-Verhältnis aus dunkel-hell-dunkel-hell-dunkel-Modulen kann bei jedem Rotationswinkel, aus jeder Entfernung und sogar bei leichter Verzerrung des Codes erkannt werden. Sie teilen dem Scanner mit: Hier ist der Code, hier ist seine Ausrichtung, und hier ist sein Maßstab.
Eine vierte Ecke wird absichtlich leer gelassen. Diese Asymmetrie teilt dem Scanner mit, welche Seite oben ist.
Ausrichtungsmuster
Größere QR-Codes (Version 2 und höher) enthalten kleinere Ausrichtungsmuster, die über das Symbol verteilt sind. Ihre Aufgabe ist es, gekrümmte oder verzerrte Oberflächen zu korrigieren. Wenn Sie jemals einen QR-Code gescannt haben, der auf einer zylindrischen Flasche gedruckt oder auf einer gerundeten Oberfläche geprägt war, haben das die Ausrichtungsmuster ermöglicht.
Taktmuster
Zwischen den Suchmustern verlaufen Taktmuster: abwechselnde, ein Modul breite Streifen aus Schwarz und Weiß. Sie funktionieren wie ein Lineal und ermöglichen es dem Scanner, Zeilen und Spalten präzise zu zählen, selbst wenn das Bild leicht schräg ist.
Formatinformationen
Zwei Streifen, die um die Suchmuster herum verlaufen, speichern Formatinformationen: den Fehlerkorrekturgrad und das verwendete Maskierungsmuster. Entscheidend ist, dass diese Daten mit einem (15,5)-BCH-Code, einem Typ fehlerkorrigierendem Code, kodiert werden, sodass das Format gelesen werden kann, selbst wenn große Teile des Hauptsymbols beschädigt sind. Bevor der Scanner Daten dekodieren kann, muss er die Formatinformationen lesen.
Datenmodule
Der Rest des Symbols besteht aus Datenmodulen: der eigentlichen kodierten Nutzlast. Daten werden in 8-Bit-Bytes gespeichert und in einem spezifischen Zickzack-Muster gelesen, beginnend von der unteren rechten Ecke und aufwärts in zwei Module breiten Spalten. Die Lesereihenfolge vermeidet die funktionalen Bereiche (Suchmuster, Ausrichtungsmuster, Taktstreifen und Formatstreifen).
Die Vier Kodierungsmodi
QR-Codes unterstützen vier Arten der Datendarstellung, jede mit einem anderen Zeichensatz und einer anderen Kapazität. Bei Version 1 (der kleinstmögliche QR-Code, 21x21 Module) mit Fehlerkorrekturgrad M sind die Grenzen:
| Modus |
Zeichensatz |
Kapazität |
| Numerisch |
Ziffern 0-9 |
34 Ziffern |
| Alphanumerisch |
0-9, A-Z, Leerzeichen und 9 Symbole |
20 Zeichen |
| Byte |
Beliebige 8-Bit-Daten, einschließlich UTF-8 |
14 Bytes |
| Kanji |
Japanische Doppelbyte-Zeichen |
8 Zeichen |
Encoder wählen den Modus (oder eine Kombination von Modi), der die meisten Daten in die wenigsten Module packt. Eine URL wie https://morefreetools.com verwendet den Byte-Modus, da sie Kleinbuchstaben enthält, die nicht im alphanumerischen Satz enthalten sind.
Reed-Solomon-Fehlerkorrektur: Warum QR-Codes Schäden Überleben
Dies ist das Herzstück des Artikels. Das Verständnis der Reed-Solomon-Fehlerkorrektur erklärt den Logo-Trick und vieles mehr.
Reed-Solomon ist nicht auf QR-Codes beschränkt. Derselbe Algorithmus schützt Daten auf CDs, DVDs, Blu-ray-Discs, Speicherlaufwerken mit RAID-Arrays und sogar Signalen, die von den Voyager-Sonden aus dem Weltraum zurückgesendet werden. Jedes Mal, wenn Sie eine zerkratzte CD abspielen und keine Störgeräusche hören, arbeitet Reed-Solomon im Hintergrund.
Wie Es Funktioniert (Konzeptionell)
Denken Sie an ein RAID-5-Festplatten-Array. Wenn Sie vier Laufwerke haben und eines vollständig ausfällt, kann das RAID-System jeden Byte, der sich auf dem ausgefallenen Laufwerk befand, mithilfe von Paritätsdaten, die auf den anderen drei verteilt sind, rekonstruieren. Es gehen keine Daten verloren, selbst wenn ein ganzes Laufwerk verschwunden ist.
Reed-Solomon funktioniert nach einem ähnlichen Prinzip, aber mathematisch. Der Encoder behandelt die Datenbytes als Koeffizienten eines Polynoms. Er wertet dieses Polynom dann an einer Reihe zusätzlicher Punkte aus und fügt diese Werte als Prüfcodewörter an die Nachricht an. Die kodierte Nachricht ist nun länger als die ursprünglichen Daten, enthält jedoch genug Redundanz, damit ein Decoder das ursprüngliche Polynom und damit die ursprünglichen Daten rekonstruieren kann, selbst wenn einige Codewörter beschädigt oder vollständig gelöscht wurden.
Entscheidend ist, dass Reed-Solomon Fehler nicht nur erkennt. Es korrigiert sie. Solange die Anzahl der beschädigten Codewörter innerhalb des Fehlerkorrekturbudgets bleibt, sind die ursprünglichen Daten vollständig wiederherstellbar ohne Verlust.
Die Vier Fehlerkorrekturgrade
QR-Codes bieten vier Fehlerkorrekturgrade. Höhere Grade opfern Kapazität (mehr Module werden für Prüfcodewörter verwendet) zugunsten von Widerstandsfähigkeit.
| Grad |
Name |
Wiederherstellungskapazität |
| L |
Niedrig |
7% der Codewörter |
| M |
Mittel |
15% der Codewörter |
| Q |
Quartil |
25% der Codewörter |
| H |
Hoch |
30% der Codewörter |
Warum QR-Codes mit Logos Funktionieren
Dies ist die entscheidende Erkenntnis. Wenn ein Designer ein Logo in die Mitte eines QR-Codes platziert, verdeckt das Logo physisch Datenmodule. Aus der Sicht des Scanners fehlen diese Module einfach, genau wie ein ausgefallenes Laufwerk in der RAID-Analogie.
Wenn der QR-Code auf Grad H generiert wurde, können bis zu 30% des Symbols zerstört werden und die Daten sind noch vollständig wiederherstellbar. Das Logo ersetzt Daten, die die Reed-Solomon-Schicht aus den verbleibenden Prüfcodewörtern rekonstruieren kann. Das ist kein Hack oder die Ausnutzung eines Fehlers. Es ist absichtliches Design: Der Standard wurde genau mit dieser Art von physischen Schäden im Sinn entwickelt. Denso Wave dachte an Barcodes, die auf schmutzigen Fabrikböden gedruckt wurden, nicht an Marketingteams, die Logos hinzufügen, aber die Mathematik kümmert sich nicht um die Absicht.
Die praktische Regel: Wenn Ihr QR-Code ein Logo haben wird, generieren Sie ihn immer auf Grad H. Halten Sie das Logo so, dass es weniger als 30% der Symbolfläche bedeckt, und zentrieren Sie es, um die Suchmuster in den Ecken nicht zu verdecken.
Maskierungsmuster: Scanner-Verwirrung Verhindern
Nachdem Datencodewörter im Symbol platziert wurden, wendet der Encoder ein Maskierungsmuster an. Es gibt 8 Standardmasken, jede als einfache XOR-Formel definiert, die auf jedes Datenmodul angewendet wird. Zum Beispiel kippt Maskierungsmuster 0 jedes Modul an einer Position, wo (Zeile + Spalte) mod 2 == 0.
Warum? Scanner können Schwierigkeiten mit großen gleichmäßigen Bereichen derselben Farbe haben. Ein Block aus Weiß oder ein Block aus Schwarz verwirrt Algorithmen, die nach den spezifischen Verhältnissen der Suchmuster suchen. Die Maskierung bricht diese Bereiche auf, indem ein kontrolliertes abwechselndes Muster eingeführt wird.
Der Encoder versucht alle 8 Masken und bewertet jedes Ergebnis anhand von 4 Strafregeln, die Dinge bestrafen wie: Sequenzen gleichfarbiger Module länger als 5 in einer Reihe, 2x2-Blöcke derselben Farbe, Muster, die den Suchmustern ähneln, und unausgewogene Verhältnisse von dunklen zu hellen Modulen. Die Maske mit dem niedrigsten Gesamtstrafscore wird im endgültigen Symbol verwendet.
Version und Kapazität: Von Version 1 bis Version 40
QR-Codes gibt es in 40 Versionen. Version 1 ist 21x21 Module. Jede Versionserhöhung fügt sowohl zur Breite als auch zur Höhe 4 Module hinzu, sodass Version 40 177x177 Module umfasst.
Bei Version 40 mit Fehlerkorrekturgrad L (die geringste Redundanz, die höchste Kapazität):
- 7.089 numerische Ziffern
- 4.296 alphanumerische Zeichen
- 2.953 Bytes (etwa 2,9 KB Binärdaten)
- 1.817 Kanji-Zeichen
Höhere Fehlerkorrekturgrade reduzieren diese Kapazitäten, da mehr Module von Prüfcodewörtern verbraucht werden. Der von Ihnen gewählte QR-Code-Generator wählt automatisch die Mindestversion aus, die Ihre Daten beim gewählten Fehlerkorrekturgrad aufnehmen kann.
Warum Manche QR-Codes Nicht Gescannt Werden Können
Nicht jeder QR-Code scannt beim ersten Versuch. Hier sind die häufigsten Ursachen für Fehler:
Unzureichender Kontrast. Ein QR-Code benötigt starken Kontrast zwischen dunklen und hellen Modulen. Dunkelgrau auf Mittelgrau zu drucken oder eine sehr helle Farbe auf Weiß zu verwenden, reduziert das Kontrastverhältnis unter das, was die meisten Scanner verarbeiten können. Der Standard empfiehlt ein Mindestkontrastverhältnis von 4:1.
Fehlende oder zu schmale stille Zone. Jeder QR-Code muss von einem leeren Rand umgeben sein, der als stille Zone bezeichnet wird und auf allen Seiten mindestens 4 Module breit sein muss. Das Drucken des Codes zu nahe an anderen Designelementen oder bis zum Rand eines Etiketts eliminiert die stille Zone und verursacht Scan-Fehler.
Zu viele Daten für die Version. Wenn der Encoder gezwungen ist, eine sehr kleine Version mit einem hohen Fehlerkorrekturgrad zu verwenden, um den Code kompakt zu halten, werden die Module sehr klein. Bei kleinen physischen Größen gedruckt, können die Module zu fein sein, um von einer Handykamera aufgelöst zu werden.
Reflektierende Oberflächen. Das Drucken eines QR-Codes auf Hochglanzpapier, Metall oder Glas kann Blendung verursachen, die Teile des Symbols auslöscht. Matte Oberflächen sind für das Scannen weitaus zuverlässiger.
Extremer Scanwinkel. Das Scannen in einem Winkel von mehr als etwa 45 Grad führt zu so viel Perspektivverzerrung, dass die Suchmuster und Ausrichtungsmuster nicht mehr kompensieren können. Halten Sie den Scan so nah wie möglich senkrecht.
Beschädigtes oder schmutziges Symbol. Über das Fehlerkorrekturbudget hinaus verhindert physischer Schaden wirklich das Dekodieren. Ein QR-Code auf Grad H kann 30% Schaden überleben; ein Code auf Grad L kann nur 7% überleben.
Dynamische vs. Statische QR-Codes
Es gibt einen wichtigen praktischen Unterschied zwischen zwei Arten von QR-Codes, denen man in der Praxis begegnet.
Ein statischer QR-Code kodiert die endgültige Ziel-URL (oder andere Daten) direkt im Symbol. Wenn sich die URL ändert, müssen Sie einen neuen QR-Code vollständig generieren und neu drucken. Statische Codes sind einfach und haben keine laufenden Infrastrukturabhängigkeiten.
Ein dynamischer QR-Code kodiert eine kurze Weiterleitungs-URL (oft von einem QR-Code-Dienst gehostet). Wenn jemand ihn scannt, ruft sein Telefon die Weiterleitungs-URL ab, die auf das eigentliche Ziel zeigt. Das eigentliche Ziel kann jederzeit im Dienst-Dashboard geändert werden, ohne den QR-Code neu zu generieren oder neu zu drucken. Dynamische Codes sind nützlich für Druckkampagnen, bei denen das Ziel möglicherweise nach der Verteilung der Materialien aktualisiert werden muss.
Beachten Sie, dass dynamische Codes davon abhängen, dass der Weiterleitungsdienst betriebsbereit bleibt. Ein statischer Code funktioniert unbegrenzt, solange die Ziel-URL aktiv ist.
Häufig Gestellte Fragen
Warum scannt ein QR-Code mit einem Logo noch?
Ein Logo, das über einem QR-Code platziert wird, zerstört physisch einige Datenmodule. QR-Codes, die auf Fehlerkorrekturgrad H generiert wurden, können jedoch bis zu 30% beschädigter Codewörter mithilfe der Reed-Solomon-Mathematik wiederherstellen. Das Logo löst im Wesentlichen denselben Wiederherstellungsmechanismus aus wie physische Schäden. Solange das Logo weniger als 30% des Symbols bedeckt und so zentriert ist, dass die Suchmuster in den Ecken nicht verdeckt werden, lässt sich der Code scannen.
Was ist der Reed-Solomon-Algorithmus in einfachen Worten?
Reed-Solomon ist eine mathematische Technik zum Hinzufügen strukturierter Redundanz zu Daten. Der Encoder stellt Ihre Daten als Polynom dar und berechnet zusätzliche Prüfwerte an zusätzlichen Punkten auf diesem Polynom. Wenn einige Daten später verloren gehen oder beschädigt werden, verwendet der Decoder diese zusätzlichen Prüfwerte, um das ursprüngliche Polynom mathematisch zu rekonstruieren und die verlorenen Daten wiederherzustellen. Dieselbe Technik schützt CDs, DVDs und die Telemetrie von Raumsonden.
Wie viele Daten kann ein QR-Code maximal speichern?
Ein QR-Code der Version 40 mit Fehlerkorrekturgrad L kann bis zu 7.089 numerische Ziffern, 4.296 alphanumerische Zeichen oder 2.953 Bytes Binärdaten speichern. In der Praxis kodieren die meisten QR-Codes kurze URLs und verwenden weit weniger als die maximale Kapazität, was eine kleinere Version und einfacheres Scannen ermöglicht.
Sollte ich für alle QR-Codes Grad H verwenden?
Nicht unbedingt. Grad H erzeugt ein dichteres, größeres Symbol für dieselbe Datennutzlast, da mehr Module für Prüfcodewörter verwendet werden. Wenn Ihr QR-Code kein Logo haben wird und sauber in einer angemessenen Größe gedruckt wird, ist Grad M (15% Wiederherstellung) in der Regel ausreichend und erzeugt einen besser scannbaren Code. Verwenden Sie Grad H beim Hinzufügen eines Logos, beim Drucken auf einer möglicherweise schmutzigen Oberfläche oder wenn der Code sehr klein sein muss.
Was ist die stille Zone und warum ist sie wichtig?
Die stille Zone ist der leere weiße Rand, der das QR-Code-Symbol umgibt. Sie muss auf jeder Seite mindestens 4 Module breit sein. Ohne die stille Zone kann ein Scanner nicht bestimmen, wo das Symbol endet und das umgebende Design beginnt. Die Suchmuster setzen darauf, einen Übergang von Weiß (stille Zone) zum ersten dunklen Modul zu erkennen. Eliminieren Sie die stille Zone, und selbst ein perfekt geformter QR-Code lässt sich nicht zuverlässig scannen.
Bereit, einen QR-Code mit all diesem Wissen zu generieren? Verwenden Sie den QR-Code Generator auf MoreFreeTools, um Codes auf jedem Fehlerkorrekturgrad zu erstellen, ein Logo hinzuzufügen und eine druckfertige Datei herunterzuladen.