Jak QR kód skutečně funguje? Technika za pixelovou mozaikou
Stačí krátce namířit fotoaparát chytrého telefonu – a už se otevře web, připojí se Wi-Fi nebo se do adresáře uloží vCard. To, co v běžném životě působí jako kouzlo, je mimořádně promyšlená kombinace informatiky, matematiky a optiky.
Jak ale z dlouhé internetové adresy nebo textu vůbec vznikne ten charakteristický černobílý vzor? Kde jsou v kódu ukryta data a proč fotoaparát rozpozná obsah i tehdy, když je QR kód šikmo nebo mírně poškozený?
V tomto článku krok za krokem rozebereme, jak funguje Quick Response Code (QR kód).
1. Základní princip je jednoduchý: ze znaků se stanou nuly a jedničky.
Počítače mluví binárním jazykem, tzn. rozumějí výhradně 0 a 1. Než může být informace zobrazena jako vzor v QR kódu, musí být nejprve převedena na bity.Aby se ušetřilo místo, používá software QR kódů různé režimy kódování:
- Numerický režim: Pro samotné číslice (0–9). Velmi efektivní, protože vždy tři číslice se sloučí do deseti bitů.
- Alfanumerický režim: Pro číslice, velká písmena a vybrané speciální znaky.
- Bajtový režim: Pro obecné texty, malá písmena, znaky s diakritikou (UTF-8) a URL.
- Režim Kanji: Speciálně komprimovaný pro japonské znaky.
Pohled do zákulisí ukazuje, jak se z „QR” stane binární kód.
Abychom pochopili, jak úsporně QR kód pracuje, podíváme se na alfanumerický režim. Každý znak přitom dostane pevnou číselnou hodnotu (A = 10, B = 11, ..., Q = 26, R = 27).
Aby se nemusel ukládat každý znak zvlášť, algoritmus vždy sloučí dva znaky dohromady.
- Hodnoty Q (26) a R (27) se spočítají: $26 \times 45 + 27 = 1197$.
- Číslo 1197 se zapíše jako 11bitové binární číslo:
10010101101.
Ze dvou písmen QR se tak stane přesně 11 bitů z nul a jedniček. Pokud by na konci řetězce zbyl jeden znak samostatně, zakóduje se 6 bity (např. $Q \rightarrow 26 \rightarrow 011010$).
2. Cesta od binárního kódu k hotovému obrazovému vzoru
Jakmile je váš text převeden na řetězec nul a jedniček, prochází několika technickými kroky zpracování:
Krok A: Technická doplňková data a korekce chyb
Řetězec nul a jedniček, který obsahuje váš obsah, se neskládá jen z něj. Před užitečná data se vloží hlavička. Ta skeneru prozradí: „Pozor, teď přichází text v bajtovém režimu o délce 25 znaků!”
Následně matematický postup, takzvaná korekce chyb Reed-Solomon, vypočítá dodatečné zabezpečovací bity. Ty zajistí, že kód lze přečíst i tehdy, když je až zhruba 30 % dat (úroveň H) zakryto nebo poškozeno (např. firemním logem umístěným uprostřed).
Krok B: Rozmístění v mřížce (moduly)
Jednotlivé čtverečky v QR kódu se nazývají moduly. V zásadě platí:
- 0 = bílý modul
- 1 = černý modul
Bity se však nezapisují jednoduše po řádcích zleva shora doprava dolů. Ukládání dat začíná vpravo dole a vine se mřížkou v úzkých dvojsloupcích střídavě nahoru a dolů. Vyhrazené funkční oblasti (jako rohy) se přitom automaticky přeskakují.
Proto v hotovém QR kódu nikdy nemůžete ukázat na jeden černý čtvereček a říct: „Tohle je to ‚h‘ ve webové adrese.“
Krok C: Trik s maskováním (proč 1 není vždy černá)
Kdyby se bity vykreslily přímo, mohly by náhodně vzniknout velké černé bloky, dlouhé bílé pruhy nebo zavádějící vzory, které by software fotoaparátu mátly.
Software proto přes matici položí maskovací vzor. Celkem existuje osm standardizovaných masek. Pomocí matematické operace XOR maska určité bity převrátí:
- 0 se změní na 1 (bílá se změní na černou)
- 1 se změní na 0 (černá se změní na bílou)
Skener podle formátové informace vedle rohových čtverců pozná, která maska byla použita, a při čtení tento krok během zlomku sekundy opět vrátí.
3. Anatomie QR kódu: Co znamenají jednotlivé vzory?
Při bližším pohledu působí QR kód jako náhodná mozaika. Ve skutečnosti je však každý jednotlivý prvek umístěn přesně podle normy ISO. Strukturu si lze představit jako anatomii obličeje. Určité rysy jsou vždy na stejném místě, aby chytrý telefon kód poznal na první pohled.
Klasický QR kód se člení na tyto hlavní zóny:
1. Tři velké rohové čtverce (vzory pro detekci polohy/Finder Patterns)
- Nacházejí se vlevo nahoře, vpravo nahoře a vlevo dole.
- Co dělají: Jsou na QR kódu nejnápadnější. Tyto tři kotevní body fotoaparátu okamžitě signalizují: „Pozor, tady je QR kód!” Softwaru bleskově prozradí polohu, velikost a úhel sklonu, takže fotoaparát pozná, zda je telefon držen rovně, nebo šikmo.
2. Přerušované spojovací linie (Timing Patterns)
- Vedou mezi třemi rohovými čtverci – vodorovně mezi levým horním a pravým horním, svisle mezi levým horním a levým dolním. Určují mřížku (velikost modulu); orientaci zajišťují tři rohové čtverce.
- Co dělají: Tyto linie se skládají ze střídavě černých a bílých modulů. Fungují pro skener jako pravítko: podle těchto bodů software spočítá, jak velký je systém mřížky (od verze 1 s 21 × 21 poli až po verzi 40 se 177 × 177 poli).
3. Malé vnitřní čtverce (zarovnávací vzory/Alignment Patterns)
- Nacházejí se v pravé dolní části a u složitějších kódů rozmístěné po celém vzoru.
- Co dělají: Tyto menší čtverce slouží jako digitální zaměřovací kříže. Pomáhají skeneru vyrovnat zkreslení, například když je QR kód vytištěn na zakřivené plechovce od koly nebo když je leták zmačkaný.
4. Řídicí zóna (formátové informace)
- Nachází se přímo u tří velkých rohových čtverců.
- Co dělají: Zde jsou technické pokyny pro skener. V těchto několika pixelech jsou uloženy dvě klíčové informace: 1. Jaká úroveň korekce chyb (L, M, Q nebo H) se používá a jaký maskovací vzor byl přes data položen.
5. Neviditelný ochranný rámeček (klidová zóna/Quiet Zone)
- Je to zcela bílý, nepotištěný okraj kolem celého QR kódu.
- Funkce: Aby fotoaparát mohl čistě zachytit vnější hrany kódu, potřebuje bezpečnostní odstup od textů, obrázků nebo grafiky na pozadí. Tento okraj musí být široký alespoň čtyři moduly (šířky pixelu). Pokud klidová zóna chybí, fotoaparát často sken odmítne.
4. Co se děje při skenování ve vašem chytrém telefonu?
Když namíříte fotoaparát na QR kód, na pozadí proběhnou tyto kroky:
- Vyhledávání: Fotoaparát prohledává videoobraz kvůli třem velkým Finder Patterns.
- Transformace: Software vypočítá perspektivu a digitálně "narovná" případně šikmo vyfocený obraz.
- Odmaskování: Systém mřížky přečte formátovou informaci, rozpozná maskovací vzor a masku zruší.
- Použití korekce chyb: Případné škrábance, neostrosti nebo zakrytí se matematicky opraví.
- Dekódování: Nuly a jedničky se podle pravidel režimu opět převedou na čitelný text, čísla nebo řídicí příkazy.
- Provedení akce: Chytrý telefon rozpozná typ dat (např.
https://pro URL,WIFI:pro přístupové údaje neboBEGIN:VCARDpro kontakty) a navrhne vhodnou aplikaci.
Technický ponor: nejdůležitější otázky vysvětleny
Potřebujete ke skenování QR kódu internet?
Ne, pro samotné skenování ne. Převod pixelů na text probíhá lokálně ve vašem chytrém telefonu. Pokud je obsahem čistý text, vCard nebo přístupové údaje k Wi-Fi, funguje vše zcela offline. Datové připojení potřebujete teprve tehdy, když kód obsahuje internetovou adresu (URL) a chcete ji otevřít.
Je QR kód šifrovaný?
Ne. QR kód je pouze zakódovaný, nikoli zašifrovaný. Data v něm obsažená může přečíst každá univerzální čtečka QR kódů. Důvěrné informace, jako jsou hesla, bankovní údaje nebo osobní PIN, by proto nikdy neměly být uloženy nechráněné ve standardním QR kódu.
Proč některé QR kódy vypadají mnohem jemněji a hustěji než jiné?
Čím více dat je uloženo přímo v kódu – například dlouhý text oproti krátkému odkazu –, tím více modulů je potřeba. Kód pak přejde do vyšší verze (od verze 1 s 21 × 21 moduly až po verzi 40 se 177 × 177 moduly).
Statický vs. dynamický: proč dynamické kódy zůstávají kompaktnější
- Statické QR kódy: Ukládají konečný cíl (např. URL o délce 150 znaků) přímo. Vzor je velmi hustý a hůře čitelný.
- Dynamické QR kódy: Ukládají jen ultrakrátký přesměrovací odkaz (např.
qron.ch/12da7). Kód zůstává vizuálně velmi jednoduchý, snadno čitelný a samotný cíl lze na serveru kdykoli vyměnit, aniž by bylo nutné kód znovu tisknout.
Kontrolní seznam pro funkční QR kódy
Pokud si vytváříte nebo necháváte navrhnout vlastní QR kódy, dbejte na tyto základy:
- Používejte krátké odkazy: Používejte dynamické QR kódy, aby hustota modulů zůstala nízká.
- Dodržujte kontrast: Zvolte tmavý vzor na světlém pozadí (invertované kódy dělají některým starším fotoaparátům problémy).
- Dbejte na klidovou zónu: Ponechte alespoň 4 moduly odstupu od textů, ořezových hran nebo grafiky.
- Upravte korekci chyb: Logo spotřebovává rezervu korekce chyb – čím větší logo, tím vyšší by měla být úroveň. U dynamických kódů nastaví QRown úroveň sám a po navržení zkontroluje čitelnost.
Časté otázky (FAQ)
Z kolika modulů se QR kód skládá?
Nejmenší QR kódy (verze 1) se skládají z 21 × 21 modulů, tedy 441 polí. Největší varianta (verze 40) má mřížku 177 × 177 modulů, tedy 31 329 polí.
Může QR kód obsahovat viry nebo malware?
Samotný QR kód obsahuje jen text a nemůže přímo spustit škodlivý programový kód. Může však vést na podvržený phishingový web nebo ke škodlivému stahování. Před otevřením proto vždy zkontrolujte náhled domény ve svém chytrém telefonu!
Který režim v QR kódu ušetří nejvíce místa?
Nejefektivnější je numerický režim (pouze čísla), následovaný alfanumerickým režimem. Bajtový režim (pro obecné URL a speciální znaky) naopak potřebuje na znak nejvíce místa.