QR-kodar
Figur 1. Snøggaste vegen til lukka er QR-kodar.
Foto: Per Thorvaldsen
Figur 1. Snøggaste vegen til lukka er QR-kodar.
Foto: Per Thorvaldsen
Livet er herleg! No fjernstyrer eg kelneren med QR-koden på bordet som eg les med mobilen. QR står for Quick Response, og eg må innrømma at eg aldri hev fengje øl så fort før. Det måtte ein pandemi til for å få rasjonalisert restaurantbransjen.
No er det kunden sjølv som er ansvarleg for tinging og betaling av maten. Restauranten kan konsentrera seg om å laga god mat og servera han. Dei har full kontroll på alle borda til kvar tid, ingen kan stikka av frå rekninga, og innsamla QR-data kan brukast til statistikk og planlegging.
QR koden er ein todimensjonal mosaikkode, oppfunnen i 1994 av Masahiro Hara, som arbeidde i den japanske bilindustrien. QR-kodane vart fort populære også utanfor bilbransjen, då dei kunne lesast snøgt og lagra mykje meir data enn dei vanlege strekkodane. Ein QR-kode er bygd opp av svarte kvadrat på kvit bakgrunn som kan lesast av eit kamera. QR kan maksimalt innehalda 4296 teikn.
Figur 2 syner korleis QR koden er bygd opp. Ytst er ei stillesone utan informasjon for å skilja koden frå annan informasjon. I tre av hjørna er det posisjonsmarkeringar. Dei fortel kva som er opp, og i kva retning koden vert lesen. Spreidd rundt i koden er justeringsmarkeringar som gjer det lettare å lesa koden dersom han vert bøygd eller forvrengd.
Dei stipla linene mellom posisjonsmarkeringane gjer det lettare å finna data i koden, særskilt dersom han er vorten forvrengd eller skadd. Ved to av posisjonsmarkeringane finn ein versjons- og formatinformasjon som trengst ved dekoding av QR-koden. Versjon gjev storleiken på QR-koden og er gjeven frå 1 til 40, der 40 er størst.
Resten av QR-koden vert fylt med data, svarte og kvite kvadrat for anten 1 eller 0, og dermed er ein ferdig. Hadde det vore så vel. I QR-kodar brukar ein såkalla feilkorrigerande kodar, Reed-Solomon, som gjer det mogleg å tyda QR-koden, sjølv om han vert delvis øydelagd. Dess meir koden skal tole, dess meir ekstra data må me få med.
Ein startar med å velja kva slags teikn ein skal ha. Dersom ein vel alfanumerisk, får ein A til Z, 0 til 9 og nokre spesialteikn, 45 i talet. Deretter må ein velja kor mykje koden skal kunna korrigera – frå 7 prosent til 30 prosent. Dess sterkare koden skal vera, dess lengre vert han. QR-koden finst i versjon 1 til 40, som viser storleiken på han.
Dersom ein har data «IVAR AASEN» med ti alfanumeriske teikn og treng å kunna korrigera 25 prosent feil, kan ein klara seg med versjon 1, som då maksimalt kan ta 13 teikn.
Dei 45 alfanumeriske teikna har alle ein numerisk kode – 0=0,…,A=10,…,Z=35,mellomrom=36,... Data vert sette saman to og to teikn og rekna om til eit binært tal. Til dømes vert IVAR til IV AR der IV=(I*45)+V=(18*45)+31=841=01101001001 og AR=(A*45)+R=(10*45)+27 =477=00111011101.
Dersom me ynskjer å laga ein QR-kode, må han byggjast som vist i tabell 1.
For å laga feilkorrigerande kode må ein gjera lengda på dataa lik lengda på feilkorrigert data. Ein fyller på med nullar til høgre i data til talet på datasiffer er deleleg med 8, og så fyller ein resten av dataa med påfølgjande 236=11101100 og 17=00010001 til ein har fylt opp datafeltet.
Totalt har ein 104 binære siffer i QR-koden som me har valt for å koda IVAR AASEN. Det gjev 104^2, som er 2 med 31 nullar bak, ulike kombinasjonar av 1 og 0. For 13 datateikn trengst det 85 binære siffer, som gjev 4 med 25 nullar bak. Det fører til at for kvar unike QR-kode med 13 datateikn finst det om lag 1 million ulike måtar å koda han på.
Reed-Solomon brukar algebra og eit såkalla generatorpolynom for å spreia dei unike QR-kodane jamt utover blant alle dei 104^2 moglegheitene. På den måten må det mykje feil til før QR-koden vert mistolka.
For at QR-koden skal verta endå meir robust, vert koden fletta inn slik at påfølgjande binære siffer vert spreidde over heile koden. På den måten kan ein mista mykje data på éin plass, for eksempel ved ei avriving, og likevel tyde koda korrekt.
Dei binære siffera vert fylte inn to og to i eit sikksakkmønster frå nedre høgre hjørne til øvre venstre hjørne i QR-koden. Så skal ein velja maske. Det vil seia å gjera den einskilde 1 eller 0 svart eller kvit. Det finst eit sett med reglar som avgjer maska, og føremålet er å gjera QR-koden så leseleg som mogleg.
Til slutt legg ein til format- og versjonsinformasjon. Format fortel kor mykje feilkorrigering som er valt, kva maske som er brukt, og generator for feilkorrigering. For QR-kodar større enn versjon 6 må ein også ha med versjonsinformasjon. Ynskjer du å laga dine eigne QR-kodar, er det berre å finna ein generator på internett.
Som all annan teknologi kan QR-kodar misbrukast. Sidan det er vanskeleg å sjå kva som står i QR-koden, kan vondsinna personar til dømes leia oss til nettsider me ikkje ynskjer å lesa, eller dei kan ta kontroll over mobilen og pumpa han for innhald. Skal, skal ikkje.
Eg stryk mobilen over QR-koden på bordet, og få minutt etter kjem det ein ny øl og eit herleg smørbrød. Som med alt anna i verda handlar det om tillit.
Per Thorvaldsen
per.eilif.thorvaldsen@hvl.no
Som all annan teknologi kan QR-kodar misbrukast.