Logo

Kako QR koda v resnici deluje? Tehnika za pikselnim mozaikom

29.08.2026 9 min Čas branja
Kako QR koda v resnici deluje? Tehnika za pikselnim mozaikom

Zadostuje kratek premik kamere pametnega telefona – in že se odpre spletna stran, WiFi se poveže ali vCard se shrani v imenik. Kar je v vsakdanu videti kot čarovnija, je izjemno premišljena kombinacija informatike, matematike in optike.

Kako pa iz dolgega spletnega naslova ali besedila sploh nastane ta značilni črno-beli vzorec? Kje so podatki v kodi skriti in zakaj kamera prepozna vsebino celo takrat, ko je QR koda poševna ali rahlo poškodovana?

V tem članku korak za korakom razstavimo delovanje kode Quick Response (QR koda).

1. Osnovno načelo je preprosto: znaki postanejo ničle in enice.

Računalniki govorijo binarni jezik, kar pomeni, da razumejo izključno 0 in 1. Preden je informacijo mogoče prikazati kot vzorec v QR kodi, jo je zato treba najprej pretvoriti v bite. Da bi prihranila prostor, programska oprema QR uporablja različne načine kodiranja:

  1. Numerični način: za same številke (0–9). Zelo učinkovit, saj se vsakokrat tri števke združijo v deset bitov.
  2. Alfanumerični način: za številke, velike črke in izbrane posebne znake.
  3. Bajtni način: za splošna besedila, male črke, šumnike (UTF-8) in URL-je.
  4. Način kanji: posebej stisnjen za japonske znake.

Pogled v zakulisje pokaže, kako »QR« postane binarna koda.

Da bi razumeli, kako varčno s prostorom deluje QR koda, si oglejmo alfanumerični način. Vsak znak pri tem dobi fiksno številsko vrednost (A = 10, B = 11, ..., Q = 26, R = 27).

Da ni treba vsake črke shraniti posebej, algoritem vedno združi dva znaka.

  1. Vrednosti Q (26) in R (27) se preračunata: $26 \times 45 + 27 = 1197$.
  2. Število 1197 se prikaže kot 11-bitno binarno število: 10010101101.

Tako iz dveh črk QR nastane natanko 11 bitov iz ničel in enic. Če bi na koncu niza ostala ena sama črka, se kodira s 6 biti (npr. $Q \rightarrow 26 \rightarrow 011010$).

2. Pot od binarne kode do končnega slikovnega vzorca

Ko je vaše besedilo prevedeno v niz ničel in enic, ta potuje skozi več tehničnih korakov obdelave:

[ Vaš vnos ] (npr. "https://qrown.io")
│
▼
[ Analiza načina & binarno kodiranje ] (znaki postanejo 0 & 1)
│
▼
[ Glava & metapodatki ] (dodajo se podatki o dolžini & načinu)
│
▼
[ Izračun popravljanja napak ] (ustvarijo se kode Reed-Solomon)
│
▼
[ Namestitev v mrežo ] (biti se razporedijo od spodaj desno navzgor)
│
▼
[ Maskiranje ] (matematični filter prepreči moteče vzorce)
│
▼
[ Končana QR koda ] (črna = 1, bela = 0)

Korak A: tehnični dodatni podatki in popravljanje napak

Niz ničel in enic, ki vsebuje vašo vsebino, ni sestavljen samo iz nje. Pred uporabne podatke se postavi glava. Ta skenerju sporoči: »Pozor, zdaj pride besedilo v bajtnem načinu z dolžino 25 znakov!«

Nato matematični postopek, tako imenovano popravljanje napak Reed-Solomon, izračuna dodatne varnostne bite. Ti zagotovijo, da je kodo mogoče prebrati tudi takrat, ko je do približno 30 % podatkov (stopnja H) prekritih ali poškodovanih (npr. zaradi logotipa podjetja na sredini).

Korak B: razporeditev v mrežo (moduli)

Posamezni kvadratki v QR kodi se imenujejo moduli. Načeloma velja:

  1. 0 = bel modul
  2. 1 = črn modul

Biti pa se ne zapišejo preprosto vrstico za vrstico od zgoraj levo do spodaj desno. Zapis podatkov se začne spodaj desno in se v ozkih stolpcih po dva izmenično vije navzgor in navzdol skozi mrežo. Pri tem se rezervirana funkcijska področja (kot so koti) samodejno preskočijo.

Zato v končani QR kodi nikoli ne morete pokazati na en sam črn kvadratek in reči: »Tole je ›h‹ v spletnem naslovu.«

Korak C: trik z maskiranjem (zakaj 1 ni vedno črna)

Če bi bite narisali neposredno, bi lahko naključno nastali veliki črni bloki, dolge bele proge ali zavajajoči vzorci, ki bi zmedli programsko opremo kamere.

Zato programska oprema čez matriko položi vzorec maske. Skupaj obstaja osem standardiziranih mask. Z matematično operacijo XOR maska obrne določene bite:

  1. 0 postane 1 (bela postane črna)
  2. 1 postane 0 (črna postane bela)

Skener na podlagi informacije o formatu ob kotnih kvadratih prepozna, katera maska je bila uporabljena, in ta korak pri branju v delčku sekunde spet razveljavi.

3. Anatomija QR kode: kaj pomenijo posamezni vzorci?

Če QR kodo pogledate natančneje, je videti kot naključen mozaik. V resnici pa je vsak posamezen element postavljen strogo po standardu ISO. Zgradbo si lahko predstavljate kot anatomijo obraza. Določene značilnosti so vedno na istem mestu, da pametni telefon kodo prepozna na prvi pogled.

Klasična QR koda se deli na naslednja glavna področja:

1. Trije veliki kotni kvadrati (vzorci za zaznavanje položaja/Finder Patterns)

  1. Ležijo zgoraj levo, zgoraj desno in spodaj levo.
  2. Kaj počnejo: so najbolj opazen del QR kode. Te tri sidrne točke kameri takoj sporočijo: »Pozor, tukaj je QR koda!« Programski opremi bliskovito razkrijejo položaj, velikost in kot nagiba, tako da kamera prepozna, ali pametni telefon držite naravnost ali poševno.

2. Črtkane povezovalne linije (Timing Patterns)

  1. Potekajo med tremi kotnimi kvadrati – vodoravno med zgoraj levo in zgoraj desno, navpično med zgoraj levo in spodaj levo. Določajo mrežo (velikost modula); usmeritev prihaja od treh kotnih kvadratov.
  2. Kaj počnejo: te linije so sestavljene iz izmenično črnih in belih modulov. Za skener delujejo kot ravnilo: na podlagi teh točk programska oprema prešteje, kako velik je mrežni sistem (od različice 1 z 21 × 21 polji do različice 40 s 177 × 177 polji).

3. Majhni notranji kvadrati (vzorci poravnave/Alignment Patterns)

  1. Ležijo v desnem spodnjem delu, pri zapletenih kodah pa so razporejeni po celotnem vzorcu.
  2. Kaj počnejo: ti manjši kvadrati služijo kot digitalni merilni križi. Skenerju pomagajo izravnati popačenja, na primer ko je QR koda natisnjena na ukrivljeni pločevinki kole ali ko je letak zmečkan.

4. Krmilno območje (informacije o formatu)

  1. Ležijo neposredno ob treh velikih kotnih kvadratih.
  2. Kaj počnejo: tu so tehnična navodila za skener. V teh nekaj pikslih sta shranjeni dve odločilni informaciji: katera stopnja popravljanja napak (L, M, Q ali H) se uporablja in kateri vzorec maske je bil položen čez podatke.

5. Nevidni zaščitni okvir (tiha cona/Quiet Zone)

  1. To je popolnoma bel, nepotiskan rob okoli celotne QR kode.
  2. Funkcija: da lahko kamera čisto zazna zunanje robove kode, potrebuje varnostni razmik od besedil, slik ali grafik v ozadju. Ta rob mora biti širok vsaj štiri module (širine pikslov). Če tihe cone ni, kamera skeniranje pogosto zavrne.

4. Kaj se zgodi pri skeniranju na vašem pametnem telefonu?

Ko kamero usmerite v QR kodo, v ozadju potekajo naslednji koraki:

  1. Iskanje: Kamera v video sliki išče tri velike Finder Patterns.
  2. Transformacija: Programska oprema izračuna perspektivo in digitalno »izravna« morebiti poševno posneto sliko.
  3. Odstranitev maske: Mrežni sistem prebere informacije o formatu, prepozna vzorec maske in masko odstrani.
  4. Uporaba popravljanja napak: Morebitne praske, nejasnosti ali prekritja se matematično popravijo.
  5. Dekodiranje: Ničle in enice se po pravilih načina spet pretvorijo v berljivo besedilo, številke ali krmilne ukaze.
  6. Izvedba dejanja: Pametni telefon prepozna vrsto podatkov (npr. https:// za URL, WIFI: za dostopne podatke ali BEGIN:VCARD za kontakte) in predlaga ustrezno aplikacijo.

Tehnični poglobljeni pregled: razlaga najpomembnejših vprašanj

Ali za skeniranje QR kode potrebujete internet?

Ne, za sam postopek skeniranja ne. Pretvorba pikslov v besedilo poteka lokalno na vašem pametnem telefonu. Če je vsebina zgolj besedilo, vCard ali dostopni podatki za WiFi, vse deluje popolnoma brez povezave. Podatkovno povezavo potrebujete šele, ko koda vsebuje spletni naslov (URL) in ga želite odpreti.

Ali je QR koda šifrirana?

Ne. QR koda je le kodirana, ne pa šifrirana. Vsak univerzalni skener QR kod lahko prebere podatke v njej. Zaupnih informacij, kot so gesla, bančni podatki ali osebne kode PIN, zato nikoli ne shranjujte nezaščitenih v standardno QR kodo.

Zakaj so nekatere QR kode videti veliko drobnejše in gostejše od drugih?

Več podatkov kot je shranjenih neposredno v kodi – na primer dolgo besedilo v primerjavi s kratko povezavo –, več modulov je potrebnih. Koda takrat preide v višjo različico (od različice 1 z 21 × 21 moduli do različice 40 s 177 × 177 moduli).

Statična in dinamična: zakaj dinamične kode ostanejo bolj kompaktne

  1. Statične QR kode: končni cilj (npr. 150 znakov dolg URL) shranijo neposredno. Vzorec postane zelo gost in težje berljiv.
  2. Dinamične QR kode: shranijo le izjemno kratko preusmeritveno povezavo (npr. qron.ch/12da7). Koda ostane vizualno zelo preprosta in lahko berljiva, dejanski cilj pa lahko na strežniku kadar koli zamenjate, ne da bi bilo treba kodo ponovno natisniti.

Kontrolni seznam za delujoče QR kode

Ko ustvarjate lastne QR kode ali jih daste oblikovati, bodite pozorni na naslednje osnove:

  1. Uporabljajte kratke povezave: uporabljajte dinamične QR kode, da ostane gostota modulov nizka.
  2. Upoštevajte kontrast: izberite temen vzorec na svetli podlagi (obrnjene kode nekaterim starejšim kameram povzročajo težave).
  3. Upoštevajte tiho cono: pustite vsaj 4 module razmika do besedil, robov reza ali grafik.
  4. Prilagodite popravljanje napak: logotip porabi rezervo za popravljanje napak – večji kot je logotip, višja naj bo stopnja. Pri dinamičnih kodah QRown stopnjo določi sam in po oblikovanju preveri berljivost.

Pogosta vprašanja (FAQ)

Iz koliko modulov je sestavljena QR koda?

Najmanjše QR kode (različica 1) so sestavljene iz 21 × 21 modulov, torej 441 polj. Največja različica (različica 40) ima mrežo s 177 × 177 moduli, torej 31.329 polj.

Ali lahko QR koda vsebuje viruse ali zlonamerno programsko opremo?

QR koda sama vsebuje le besedilo in ne more neposredno izvesti škodljive programske kode. Lahko pa vodi do pripravljene lažne (phishing) spletne strani ali škodljivega prenosa. Zato pred odpiranjem vedno preverite predogled domene na svojem pametnem telefonu!

Kateri način v QR kodi prihrani največ prostora?

Najučinkovitejši je numerični način (same številke), sledi mu alfanumerični način. Bajtni način (za splošne URL-je in posebne znake) pa potrebuje največ pomnilnika na znak.

Več objav