04.11.2026Auf einer anderen Seite dieser Website ist zu sehen, wie QR-Codes kodiert werden. Diese Seite behandelt den umgekehrten Vorgang, die Dekodierung der Matrix vom aufgenommenen Bild zurück zu einer Zeichenkette. Die hier gezeigte Methode illustriert einen möglichen Algorithmus, echte Software dafür arbeitet womöglich aber anders. Der QR-Code oben ist sauber und ordentlich dargestellt, in Wirklichkeit nimmt die Kamera den Code aber gedreht und geneigt auf, mit ungleichmäßigen Pixelabständen und womöglich unscharf.
Klicke auf das Symbol unter dem Code, um einen neuen, zufälligen QR-Code für diese Seite zu erzeugen. Die Versionsnummer des Codes bestimmt seine Größe in Pixeln. Wir beschränken die Codes dieser Seite auf kleine Versionen, damit sie besser zu erkennen sind, die QR-Spezifikation erlaubt aber auch größere Matrizen. Scanne den QR-Code, um zu dieser Seite zu gelangen!
Hier sehen wir denselben Code, wie ihn eine Kamera aus der Nähe und schräg aufnehmen würde. Die Aufgabe des Dekodieralgorithmus ist es, dieses Bild in eine Bitfolge umzuwandeln und daraus den kodierten Text zurückzugewinnen.
Die ersten Schritte bei der Verarbeitung des QR-Codes machen die Wirkung der Kamera rückgängig: Der Code wird aufrecht gedreht und jede Neigung wird aus dem Bild entfernt. Dazu muss der Algorithmus zuerst die drei Eckmarkierungen finden, die mit roten Kreuzen hervorgehoben sind. Die fehlende vierte Eckmarkierung zeigt an, wie der Code gedreht ist. Klicke auf Abspielen, um die Animation zu starten.
Sind diese Schritte abgeschlossen, müssen die Pixel, hier Module genannt, anhand ihrer Lage zwischen den Markierungen und entlang der sogenannten Taktlinien bestimmt werden.
Diese Animation zeigt die Schritte vom entzerrten Bild der Matrix links bis zu einer rohen Bitfolge rechts. Die sogenannten Taktmuster, Linien aus abwechselnd dunklen und hellen Pixeln zwischen den Ecken, hier grün hervorgehoben, helfen dabei, den Abstand zwischen benachbarten Pixeln zu schätzen. Mit dieser Information kann der Algorithmus das aufgenommene Bild in ein Feld von Bits übersetzen. Blaue Bits tragen Formatinformationen, die übrigen Bits sind schwarz.
Am Ende dekodiert der Algorithmus die Formatbits und erhält so die Fehlerkorrekturstufe und die Maskennummer.
Beim Erzeugen des Codes wurde ein Maskenmuster über die Datenbits gelegt, um große einfarbige Flächen und Muster zu vermeiden, die mit den Positionsmarkierungen verwechselt werden könnten. Die aus den Formatbits dekodierte Maskennummer gibt an, welches der acht Muster verwendet wurde. Rechts ist die Maske grau und weiß unter den Datenbits dargestellt; sie wird entfernt, indem Zeile für Zeile jedes Bit auf einem grauen Feld umgedreht wird. Die Formatbits werden nicht auf diese Weise maskiert und sind hier weggelassen.
Nach dem Entfernen der Maske werden die Bits zu je acht, ein Codewort nach dem anderen, aus dem Code genommen und rechts zu einem einfachen Bitstrom aufgereiht. Die Codewörter liegen im Code nicht in der Reihenfolge des Stroms: Sie beginnen in der rechten unteren Ecke und schlängeln sich in zwei Module breiten Spalten auf- und abwärts, und bei größeren Codes sind die Codewörter mehrerer Blöcke ineinander verschränkt. Die Bits des Stroms sind nach ihrer Bedeutung eingefärbt: Schwarze Bits tragen die Nachricht, grüne Bits sind Metainformation wie der Modusindikator, die Zeichenanzahl, die Endmarkierung und die Auffüllung, und dunkelrote Bits dienen der Fehlerkorrektur. Graue Bits links sind Restbits, die zu keinem Codewort gehören.
Übrig bleiben die schwarzen Nachrichtenbits des Datenstroms, je acht zu einem Byte. Der Modusindikator hat angezeigt, dass die Bytes im Byte-Modus vorliegen, der Text als UTF-8 enthält, also werden die Bytes eines nach dem anderen wieder in Zeichen verwandelt. Die meisten Zeichen einer Webadresse belegen ein einziges Byte, andere belegen mehr. Am Ende erscheint wieder die URL dieser Seite, die im ersten Bild kodiert wurde.
Das Claude Opus LLM hat bei der Erstellung dieser Seite geholfen. Weitere Algorithmen und Datenstrukturen finden sich auf der Hauptseite.
Bitte teilt diese Seite auf Social Media!