Hoe QR-codes werken: een technische verdieping
Hoe QR-codes werken: een technische verdieping
QR-codes (Quick Response-codes) zijn tweedimensionale matrix-barcodes die in 1994 zijn uitgevonden door Denso Wave, een dochteronderneming van Toyota. Ontworpen voor zeer snelle decodering, slaan QR-codes gegevens op in een raster van zwarte en witte vierkanten (modules) met behulp van vier gestandaardiseerde coderingsmodi en Reed-Solomon-foutcorrectie. In tegenstelling tot lineaire barcodes die gegevens in één dimensie coderen, verpakken QR-codes informatie zowel horizontaal als verticaal, waardoor ze tot 7.089 numerieke tekens in één symbool bereiken.
De anatomie van een QR-code
Elke QR-code is opgebouwd uit verschillende functionele zones. Inzicht in deze onderdelen helpt je codes te ontwerpen die betrouwbaar scannen en de gegevenscapaciteit maximaliseren.
Vindpatronen
Drie identieke vierkante patronen in de linkerbovenhoek, rechterbovenhoek en linkerbenedenhoek. Elk vindpatroon bestaat uit een 7x7 zwart vierkant, een 5x5 wit vierkant en een 3x3 zwart vierkant in het centrum. Deze patronen stellen scansoftware in staat om de positie, oriëntatie en hoek van de QR-code snel te detecteren, ongeacht de rotatie.
Uitlijningspatronen
Kleinere registratiemarkeringen (doorgaans 5x5 modules) die door de hele code zijn ingebed. Uitlijningspatronen helpen scanners om vervorming te corrigeren wanneer de code op gebogen oppervlakken is geprint, zoals productverpakkingen of drankblikjes. Codes vanaf versie 2 hebben minstens één uitlijningspatroon; het aantal neemt toe met de grootte van de code.
Storingpatronen
Afwisselend zwarte en witte lijnen die tussen de vindpatronen lopen, zowel horizontaal als verticaal. Deze modules definiëren de rij- en kolomposities van het gegevensraster en helpen de scanner om de grootte van elke module te bepalen.
Formatinformatie
Een speciaal gebied nabij de vindpatronen dat het foutcorrectieniveau en het maskerpatroon codeert. De scanner leest dit eerst om te weten hoe hij de rest van de gegevens correct moet decoderen.
Gegevens- en foutcorrectiegebieden
De resterende modules vormen twee door elkaar verweven gebieden: gegevenscodewoorden (de gecodeerde payload) en foutcorrectiecodewoorden (redundante gegevens voor herstel na beschadiging). Deze zijn gerangschikt in een specifiek bitpatroon dat per QR-codeversie verschilt.
Rustzone
Een verplichte, duidelijke rand van minstens vier modules breed rond de hele QR-code. Zonder deze rustzone kunnen scanners de code niet betrouwbaar onderscheiden van zijn omgeving. Dit is een van de meest voorkomende oorzaken van scanfouten bij aangepaste ontwerpen.
Methoden voor gegevenscodering
QR-codes ondersteunen vier verschillende coderingsmodi, elk geoptimaliseerd voor een ander type gegevens. De encoder selecteert automatisch de meest efficiënte modus op basis van je invoer.
Numerieke modus
Uitsluitend geoptimaliseerd voor de cijfers 0 tot en met 9. Dit is de meest ruimte-efficiënte modus: drie cijfers worden in 10 bits verpakt (tegenover 8 bits per byte in standaard binair). Maximale capaciteit bij versie 40-L: 7.089 tekens. Ideaal voor telefoonnummers, product-ID's en numerieke codes.
Alfanumerieke modus
Codeert cijfers (0-9), hoofdletters (A-Z) en negen speciale tekens: spatie, $, %, *, +, -, ., / en :. Elk paar tekens wordt in 11 bits gecomprimeerd. Maximale capaciteit: 4.296 tekens. Het beste voor URL's die kleine letters vermijden en korte tekstcodes.
Byte-modus
Codeert elk 8-bits teken met behulp van ISO-8859-1 (Latin-1)-codering. Wanneer de inhoud kleine letters, gemengd hoofd- en kleinlettergebruik of UTF-8-tekens bevat, valt de encoder terug op de byte-modus. Maximale capaciteit: 2.953 tekens. Dit is de meest flexibele modus en dekt de meeste gangbare gebruiksscenario's, zoals volledige URL's en gemengde tekst.
Kanji-modus
Een gespecialiseerde modus voor twee-byte Japanse tekens (Shift JIS-codering). Elk Kanji-teken wordt in 13 bits gecomprimeerd in plaats van 16 bits. Maximale capaciteit: 1.817 tekens. Buiten Japan minder gebruikelijk, maar het toont het erfgoed van het formaat.
Coderingsproces stap voor stap
- Gegevensanalyse — De encoder analyseert de invoerinhoud en selecteert de meest efficiënte modus
- Modusindicator — Een 4-bits code geeft aan welke coderingsmodus is gekozen
- Tekenaantal — Een bitreeks registreert de lengte van de gegevens
- Gegevenscodering — De inhoud wordt met behulp van de geselecteerde modus omgezet in een bitstroom
- Terminator — Een korte opvulreeks markeert het einde van de gegevens
- Bitopvulling — De resterende capaciteit wordt gevuld met afwisselende 0- en 1-bits om een volledige codewoordgrens te bereiken
- Generatie van foutcorrectie — Reed-Solomon-codewoorden worden berekend en toegevoegd
QR-codeversies en -groottes
QR-codes worden gedefinieerd in 40 versies, variërend van versie 1 (21x21 modules) tot versie 40 (177x177 modules). Elke opeenvolgende versie voegt 4 modules per zijde toe.
| Versie | Afmetingen | Numerieke capaciteit (L) | Typisch gebruik | |---------|-----------|---------------------|-------------| | 1 | 21x21 | 41 | Eenvoudige URL's | | 2 | 25x25 | 77 | Korte links | | 4 | 33x33 | 187 | vCards, URL's | | 6 | 41x33 | 322 | WiFi-configuraties | | 10 | 57x57 | 652 | Middellange tekst | | 20 | 97x97 | 1.746 | Documenten | | 40 | 177x177 | 7.089 | Maximale gegevens |
De meeste consumentgerichte QR-codes gebruiken versie 2 tot en met versie 10. Hogere versies bevatten kleinere modules, die een print in hogere resolutie en nauwkeuriger scannen vereisen.
Reed-Solomon-foutcorrectie
QR-codes maken gebruik van Reed-Solomon-foutcorrectie, waarbij de gegevens in blokken worden verdeeld en voor elk blok redundante codewoorden worden gegenereerd. Er zijn vier niveaus:
- Niveau L — Herstelt 7% van beschadigde gegevens. Maximale gegevenscapaciteit, minimale bescherming.
- Niveau M — Herstelt 15%. Standaardkeuze voor algemeen gebruik. De meeste QR-generatoren kiezen standaard dit niveau.
- Niveau Q — Herstelt 25%. Sterke bescherming voor codes op verpakte goederen of veelvuldig vastgepakte artikelen.
- Niveau H — Herstelt 30%. Maximale bescherming voor buiten- of industriële omgevingen.
Het foutcorrectiesysteem maakt ook de populaire praktijk van het inbedden van logo's en afbeeldingen in QR-codes mogelijk. De geblokkeerde modules worden gereconstrueerd uit de redundante gegevens, op voorwaarde dat de obstructie de foutcorrectiecapaciteit niet overschrijdt.
Hoe scannen werkt
Moderne QR-code-scans omvatten een geavanceerde pijplijn die in milliseconden draait:
- Detectie — De camera legt een beeld vast en software lokaliseert de vindpatronen om de grenzen van de code te bepalen
- Perspectiefcorrectie — De scanner past geometrische transformaties toe om scheve kijkhoeken en gebogen oppervlakken te corrigeren
- Binarisatie — Het beeld wordt omgezet in puur zwart en wit met behulp van adaptieve drempelbepaling om wisselende verlichting aan te kunnen
- Modulebemonstering — De scanner leest de kleur van elke module op de snijpunten van het raster
- Formaatdecodering — Het foutcorrectieniveau en het maskerpatroon worden uit de formaatgebieden gehaald
- Gegevensextractie — Het maskeren wordt teruggedraaid en de databitstroom wordt in de gespecificeerde volgorde gelezen
- Foutcontrole — De berekening van Reed-Solomon-syndromen detecteert en corrigeert fouten
- Decodering — De schone bitstroom wordt met behulp van de opgegeven coderingsmodus teruggezet naar de oorspronkelijke inhoud
Maskerpatronen
QR-codes passen een van de acht maskerpatronen (genummerd 0 tot en met 7) toe op het gegevensgebied vóór de uiteindelijke weergave. Maskeren zorgt voor een evenwichtige verdeling van zwarte en witte modules, waardoor grote lege gebieden die scanners in verwarring zouden brengen, worden voorkomen. De scanner leest de maskerreferentie uit de formatinformatie en draait het masker tijdens het decoderen terug.
Micro-QR-codes
Een variant die Micro QR Code heet, gebruikt één vindpatroon (in plaats van drie) en is verkrijgbaar in vier kleinere versies. Micro-QR-codes zijn nuttig voor zeer kleine ruimtes, zoals elektronische componenten en medische apparaten, met een maximale capaciteit van 355 numerieke tekens.
QR-codes met vertrouwen genereren
Inzicht in de onderliggende technologie helpt je QR-codes te maken die in elke omgeving betrouwbaar scannen. Onze gratis online QR-codegenerator automatiseert alle technische beslissingen — versiekeuze, modusoptimalisatie, foutcorrectie en maskeren — zodat je binnen enkele seconden een productieklaar code krijgt. Kies uit URL-, tekst-, vCard-, WiFi- en meer formaten met volledige aanpassingsopties.