
Invertierter QR-Code: welches Lesegerät ihn aufgibt
Ein invertierter QR-Code, also helle Module auf dunklem Feld, ist eine Wette und keine Gestaltungsentscheidung. Die Norm schreibt dunkel auf hell fest, die Routine, die einen Code im Bild aufspürt, sucht zuerst nach dunklen Läufen, und ein invertiertes Symbol liest nur dort, wo jemand dem Lesegerät einen zweiten Durchlauf mitgegeben hat, der das Bild umkehrt und es erneut versucht. Kamera-Apps auf Telefonen haben diesen Durchlauf oft. Kassenscanner, Kiosklesegeräte und Automaten meist nicht.
Ein Markenhandbuch kommt mit dunklem Thema auf jeder Seite, und der Code auf der Rückseite ist gezeichnet wie alles andere: blasse Module auf Fastschwarz. Er liest auf dem Telefon der Gestalterin, wird abgenommen, wird gedruckt, und scheitert dann an der einen Stelle, für die er beauftragt war: an einem Foyerterminal, dessen Scanner noch nie ein invertiertes Symbol versucht hat.
Die Norm legt eine Polarität fest
Ein QR-Symbol ist über Reflexionsgrade definiert. Dunkle Module sind das Element mit niedriger Reflexion, helle Module das mit hoher, und ein gesetztes Bit ist ein dunkles Modul. Dunkel auf hell ist keine Stilkonvention über einem neutralen Format; es ist die Art, wie das Symbol festgelegt ist.
Ein invertierter Code ist deshalb kein QR-Code mit einem anderen Farbschema. Er ist ein QR-Code, bei dem die Polarität jedes Moduls umgekehrt ist, und ein Lesegerät, das das Bild für sich nimmt, gewinnt das Komplement Ihrer Daten zurück. Das dekodiert zu nichts, und so soll es sein.
Was bricht, ist die Suche, nicht das Dekodieren
Bevor Daten gelesen werden, muss das Lesegerät den Code finden. Es legt Abtastlinien über das Bild und sucht eine bestimmte Folge von Läufen, dunkel, hell, dunkel, hell, dunkel, in Proportionen von grob 1:1:3:1:1. An dieser Signatur wird ein Suchmuster in jeder Größe und jedem Winkel erkannt, und die Anatomie der Suchmuster erklärt, warum diese Proportionen halten.
Auf einem invertierten Symbol sind alle Lauflängen noch da und das Verhältnis ist intakt. Geändert hat sich, dass der erste Lauf hell ist, ein Detektor, der auf eine Folge mit dunklem Anfang prüft, findet also nirgendwo im Bild einen Kandidaten.
Das ändert die Bedeutung des Fehlers. Die Erkennung scheitert, bevor das Dekodieren versucht wird: Der Code wird nicht schlecht gelesen, er wird überhaupt nicht gefunden. Nichts an Größe, Licht, Kontrast oder Auflösung verschiebt das Ergebnis, weshalb ein invertierter Code sich nicht durch Vergrößern retten lässt und weshalb das Symptom meist ist, dass nichts passiert, statt eines Teillesevorgangs. Wie ein Lesegerät ein Symbol auffindet ist derselbe Vorgang von der anderen Seite.
Die Lesegeräte, die damit umgehen, wiederholen nur, sie erfüllen keine Vorgabe
Inversion zu behandeln ist kein Merkmal des Formats, und kein Flag im Symbol kündigt sie an. Es ist ein Wiederholungsversuch auf Anwendungsebene: Bild schwellen, keine Suchmuster finden, Bitmap invertieren, Detektor erneut laufen lassen. Mehrere weit verbreitete Decoder-Bibliotheken versuchen das nicht, solange die Anwendung es nicht verlangt, und wo Unterstützung existiert, ist sie meist ein Verhalten der Software um den Decoder herum und keine Eigenschaft des Decoders.
Das heißt, die Unterstützung schwankt je Anwendung, je Version und je Plattform, nicht je Marke auf der Rückseite des Telefons, zwei Geräte desselben Herstellers können sich also unterschiedlich verhalten, nachdem eines aktualisiert hat. Ein Code, der auf einem Telefon liest und auf einem anderen nicht ist die allgemeine Fassung davon, und Inversion ist ihr schärfster Fall. Lesegeräte, die damit umgehen, sind außerdem langsamer, denn der invertierte Versuch läuft als Zweiter, und ein Code, der vier Sekunden braucht statt sofort auszulösen, ist ein Code, den Leute aufgeben.
Fest eingebaute und eingebettete Lesegeräte sind der verlässliche Fehlschlag: Selbstbedienungsterminals, Zugangsschranken, Kassenscanner, Zutrittspanels, Lagerimager. Viele führen inverse oder Reverse-Video-Dekodierung als Konfigurationsoption, die deaktiviert ausgeliefert wird, denn sie zu aktivieren kostet auf jedem Bild Dekodierzeit für einen Fall, der in ihrer Arbeit fast nie vorkommt. Vernünftig aus Herstellersicht, fatal aus Ihrer: Wenn ein Code jemals auf Hardware trifft, die Ihnen nicht gehört, steht Inversion Ihnen nicht zur Verfügung.
Die dunkle Gestaltung, die Sie eigentlich wollten
Die Anforderung lautet fast nie, dass der Code invertiert sein soll. Sie lautet, dass der Code auf einer dunklen Seite sitzen soll. Zwei verschiedene Dinge, und nur eines davon ist riskant.
Die Ruhezone erzwingt den Punkt ohnehin. Ein Symbol braucht vier Module freies Feld um sich, im Tonwert der hellen Module. Bei einem invertierten Code ist dieses Feld dunkel, und es muss verlässlich dunkler sein als Ihre hellen Module, um denselben Abstand, den ein normaler Code braucht. Sie brauchen so oder so eine Fläche; die einzige Frage ist, in welcher Richtung sie läuft.
Setzen Sie also eine helle Fläche hinter einen normalen dunklen Code: ein Feld, eine Karte, eine eingesetzte gerundete Form, ein helles Band am Fuß eines dunklen Plakats. Das liest sich als bewusstes Gestaltungselement, erfüllt die Ruhezone ehrlich und funktioniert auf jedem Lesegerät, das je gebaut wurde. Was eine Ruhezone frisst behandelt, wie diese Fläche im Druck verdorben wird.
Innerhalb dieser Vorgabe steckt mehr Spielraum, als die meisten dunklen Gestaltungen nutzen. Die Module dürfen jede dunkle Farbe haben, solange die Helligkeit klar am dunklen Ende des Bereichs sitzt, denn der Farbton wird bei der Schwellenbildung verworfen und nur Helligkeit zählt. Der Hintergrund muss auch nicht weiß sein, und Rahmen, Eckformen, Modulstile und ein Logo innerhalb der sicheren Fläche sind alle frei. Beide Farben direkt zu setzen dauert Sekunden, und die Kontrastschwellen sind das, wogegen Sie gestalten. Prüfen Sie es dann in Graustufen: Lassen sich Module und Hintergrund dort schwer trennen, wird sie kein Lesegerät trennen.
Wenn Sie trotzdem invertieren
Manchmal ist es ein bedachtes Ja: ein Bildschirm, eine App, eine Folie, ein Plakat, das Sie nächste Woche ersetzen können.
- Halten Sie den Tonwertabstand weit: Ein invertierter Code mit schwachem Abstand hat zwei Probleme übereinander, und nur eines davon ist behebbar.
- Geben Sie ihm mehr Größe, als die Scanentfernung verlangt, und halten Sie die dunkle Ruhezone bei vier Modulen.
- Achten Sie auf die Modulgröße statt auf die Redundanz. Hier gebaute Codes tragen schon die höchste der vier Stufen, und es sind genau diese zusätzlichen Module, die jedes einzelne verkleinern, prüfen Sie also, ob die Module noch größer sind als das, was die Oberfläche trägt. Die Stufen und was sie kosten behandeln diese Abwägung.
- Drucken Sie das Ziel als Klartext darunter. Es ist die einzige Absicherung, die greift, wenn ein Lesegerät schlicht verweigert, und sie kostet eine Zeile Schrift.
- Niemals auf Verpackung, Tickets, Hardware, die Sie nicht kontrollieren, oder eine Auflage, die Sie nicht nachdrucken können.
Gespiegelt ist eine andere Frage im selben Gewand
Ein Code, der links und rechts getauscht wurde, ist nicht tonwertinvertiert, und er scheitert aus einem anderen Grund: Die drei Suchmuster sind mit einer Händigkeit angeordnet, und die Leserichtung der Module läuft in eine Richtung. Manche Decoder erkennen ein gespiegeltes Symbol und korrigieren es, andere nicht, und die praktische Folgerung ist dieselbe.
Es passiert häufiger aus Versehen als mit Absicht: ein im Layout gespiegeltes Bild, in der Druckvorstufe verkehrte Gestaltung, ein Fensteraufkleber, der von der anderen Seite der Scheibe lesbar gedruckt wurde. Scheitert ein Code, obwohl er vollkommen korrekt aussieht, prüfen Sie zuerst, ob er verkehrt ist; Codes auf Glas und Fenstern behandelt den einen Fall, in dem das Spiegeln Absicht ist. Drehung, der dritte Nachbar derselben Frage, kostet gar nichts, denn die Suchmuster existieren genau dafür, dass ein Lesegerät erkennen kann, wie ein Symbol steht: ein Code, der schräg gelesen wird ist auf eine Weise gelöst, wie Inversion und Spiegelung es nicht sind.
Wer den Code hier sonst noch lesen muss
Ob ein invertierter Code liest, hängt nicht am Format, sondern daran, welches Gerät ihn aufnimmt. In Deutschland ist diese Liste länger als nur Telefonkameras, und die übrigen Geräte sind gerade die unnachgiebigen.
Banking-Apps. Auf Rechnungen und Spendenaufrufen steht hier oft ein Zahlungscode nach dem EPC-Standard, im Alltag Girocode genannt. Gelesen wird er nicht von einer Kamera-App, sondern von der Banking-App der jeweiligen Bank, und diese Apps sind konservativ gebaut: Sie erwarten ein normgerechtes Symbol und bieten keinen zweiten Durchlauf mit umgekehrtem Bild. Ein invertierter Girocode auf einem elegant dunklen Rechnungsentwurf ist ein Zahlungscode, den niemand bezahlt. Was dort genau hineinkodiert wird, steht unter Girocode und EPC-Zahlungscodes.
Feste Lesegeräte. Kassenscanner, Leergutautomaten, Paketstationen, Zugangsleser an Türen und Handgeräte in Lager und Werkstatt arbeiten mit Firmware, die Sie nicht beeinflussen und die oft jahrelang unverändert bleibt. Wo ein solches Gerät im Spiel ist, ist Invertieren keine Gestaltungsfrage, sondern ein Ausfall mit Ankündigung.
Kontrollen und Nachweise. Ein Fahrschein, eine Eintrittskarte oder ein Nachweis wird von der Prüf-App des Betreibers gelesen, nicht von Ihrer. Sie erfahren nie, welche Version davon gerade im Einsatz ist, und Sie können sie nicht testen, bevor jemand vor dem Prüfer steht.
Und die Druckvorstufe. Verpackungs- und Etikettendruckereien prüfen Symbole zunehmend mit einem Verifizierer und legen der Lieferung einen Prüfbericht bei. Diese Messung bewertet unter anderem Reflexionsverhältnisse und die Unversehrtheit der Suchmuster gegen die Norm, und ein invertiertes Symbol fällt dabei durch, selbst wenn Ihr Telefon es liest. Verlangt Ihr Kunde einen Prüfbericht, ist die Entscheidung bereits gefallen.
Bleibt der Fall, in dem Invertieren vertretbar ist: eine Fläche, auf der ausschließlich Menschen mit ihrer eigenen Telefonkamera scannen, ein Plakat oder ein Aufsteller in Ihrem Laden, wo Sie den Test mit mehreren Geräten selbst machen und im Zweifel nachdrucken können. Alles, was in ein Zahlungs-, Logistik- oder Prüfverfahren hineinläuft, bleibt dunkel auf hell.
Der Test, der es entscheidet
Und zwar nicht auf Ihrem eigenen Telefon, dem am wenigsten aussagekräftigen Gerät, das Sie besitzen.
- Scannen Sie auf dem ältesten Telefon im Haus und auf einem zweiten von einem anderen Hersteller, beide mit der mitgelieferten Kamera-App und ohne Installationen.
- Scannen Sie auf jedem fest eingebauten oder handgeführten Lesegerät, auf das der Code tatsächlich trifft. Existiert eines im Einsatz, wiegt dieser Test schwerer als alle anderen.
- Nehmen Sie die Zeit. Braucht es eine oder zwei Sekunden länger als die Fassung dunkel auf hell, ist diese Lücke der invertierte zweite Versuch, und in dieser Lücke geben Leute auf.
- Verweigert eines davon, setzen Sie eine helle Fläche hinter einen normalen Code und lassen es dabei. Die anderen Gründe, warum ein Code nicht scannt sind es wert, ausgeschlossen zu werden, wenn Sie unsicher sind, welches Problem Sie haben.
Jeder Code, der hier gebaut wird, ist standardmäßig dunkel auf hell, und diese Vorgabe ist keine Ängstlichkeit. Weil jeder Code dynamisch ist, bleibt das Ziel im bezahlten Tarif bearbeitbar. Die Polarität des gedruckten Symbols bleibt es nicht.


