Jak działają kody QR: budowa, korekcja błędów i pojemność
Co właściwie się dzieje, gdy telefon odczytuje kod QR? Przystępny przewodnik po znacznikach pozycji, modułach, wersjach, poziomach korekcji błędów i pojemności kodów QR.
Opublikowano 5 min czytania
Kody QR są wszędzie — na stolikach w restauracjach, paczkach, biletach kolejowych, wizytówkach i terminalach płatniczych. Mało kto jednak wie, co kryje się w tych czarno-białych kwadratach i dlaczego kod nadal działa, gdy część zasłania logo. W tym poradniku prostym językiem wyjaśniamy, jak działają kody QR.
Krótka historia
Kod QR (skrót od Quick Response code, czyli „kod szybkiej odpowiedzi”) wynalazł w 1994 roku Masahiro Hara z firmy Denso Wave — japońskiej spółki z grupy Toyota. Fabryki samochodów potrzebowały sposobu na śledzenie części szybszego, niż pozwalały na to jednowymiarowe kody kreskowe. Klasyczny kod kreskowy zapisuje dane tylko w jednym kierunku i mieści około 20 znaków; kod QR zapisuje dane zarówno w poziomie, jak i w pionie, i może pomieścić kilka tysięcy znaków.
Denso Wave opatentowało tę technologię, ale postanowiło nie egzekwować patentu, a format stał się międzynarodową normą (ISO/IEC 18004). Ta otwartość to główny powód, dla którego każdy może za darmo generować i odczytywać kody QR na dowolnym urządzeniu.
Budowa kodu QR
Każdy kod QR to kwadratowa siatka małych komórek zwanych modułami. Każdy moduł jest ciemny albo jasny i odpowiada jednemu bitowi. Niektóre obszary siatki mają stałe zadania:
- Znaczniki pozycji (ang. finder patterns) — trzy duże kwadraty w rogach. Dzięki nim skaner natychmiast znajduje kod i ustala jego orientację, nawet gdy kod jest odwrócony do góry nogami lub sfotografowany pod kątem.
- Znaczniki wyrównania (ang. alignment patterns) — mniejsze kwadraty (od wersji 2 wzwyż), które pomagają skorygować zniekształcenia, gdy kod jest wydrukowany na zakrzywionej powierzchni lub widziany w perspektywie.
- Wzorce synchronizacji (ang. timing patterns) — naprzemienne ciemne i jasne linie między znacznikami pozycji. Informują skaner, jak duży jest każdy moduł.
- Informacja o formacie — paski obok znaczników pozycji, w których zapisany jest poziom korekcji błędów i użyty wzorzec maski.
- Strefa ciszy (ang. quiet zone) — pusty margines wokół kodu. Jest częścią specyfikacji: bez niej skaner nie potrafi określić, gdzie kończy się kod, a zaczyna tło.
Cała reszta to słowa kodowe danych i korekcji błędów, rozmieszczone naprzemiennie w całej siatce.
Wersje: dlaczego niektóre kody są gęstsze
Kody QR występują w 40 rozmiarach zwanych wersjami. Wersja 1 ma 21 × 21 modułów; każda kolejna dodaje 4 moduły na bok, aż do wersji 40, która ma 177 × 177 modułów. Im więcej danych zakodujesz, tym wyższa wersja i tym mniejszy staje się każdy moduł przy danym rozmiarze wydruku.
Dlatego krótki adres URL daje czysty, przejrzysty wzór, a długi blok tekstu — gęsty, który trzeba wydrukować w większym formacie. Gdy tworzysz kod w naszym generatorze kodów QR, podgląd pokazuje wersję i liczbę modułów, dzięki czemu możesz kontrolować gęstość.
Tryby kodowania i pojemność
Kod QR wybiera najwydajniejszy tryb kodowania dla danej treści:
| Tryb | Znaki | Maks. pojemność (wersja 40, poziom L) |
|---|---|---|
| Numeryczny | 0–9 | 7089 cyfr |
| Alfanumeryczny | 0–9, A–Z, spacja i $%*+-./: |
4296 znaków |
| Bajtowy | Dowolne dane, zwykle tekst w UTF-8 | 2953 bajty |
| Kanji | Znaki japońskie | 1817 znaków |
To wartości teoretyczne. W praktyce kody skanują się niezawodnie do kilkuset znaków. Jeśli chcesz przekazać więcej, zakoduj zamiast tego krótki link do strony internetowej.
Korekcja błędów: sekret kodów z logo
Kody QR wykorzystują korekcję błędów Reeda–Solomona — tę samą matematykę, dzięki której porysowane płyty CD i DVD wciąż dają się odtwarzać. Do kodu dodawane są dodatkowe słowa kodowe, aby oryginalne dane dało się odtworzyć, nawet jeśli część kodu jest uszkodzona, zabrudzona lub zasłonięta. Istnieją cztery poziomy:
- L (niski) — odtwarza około 7% uszkodzonych słów kodowych
- M (średni) — około 15%
- Q (kwartyl) — około 25%
- H (wysoki) — około 30%
Wyższe poziomy sprawiają, że kod jest odporniejszy, ale też większy, bo więcej miejsca zajmują dane nadmiarowe. Właśnie to umożliwia tworzenie kodów QR z logo: logo na środku celowo „uszkadza” część kodu, a korekcja błędów uzupełnia lukę. Przy logo wybierz poziom Q lub H i pilnuj, by zajmowało mniej niż mniej więcej jedną czwartą powierzchni kodu.
Wskazówka: korekcja błędów nie zastąpi dobrego kontrastu. Kod zbyt jasny, zbyt mały lub pozbawiony strefy ciszy może nie zadziałać nawet na poziomie H.
Maskowanie: jak zachować czytelność wzoru
Surowe dane mogą przypadkiem tworzyć duże plamy jednego koloru lub kształty przypominające znaczniki pozycji, co myli skanery. Aby temu zapobiec, koder stosuje jeden z ośmiu wzorców maski — wzorów matematycznych, które odwracają wybrane moduły — i wybiera ten z najniższą „punktacją karną”. Skaner odczytuje numer maski z informacji o formacie i cofa jej działanie. Nigdy nie musisz zaprzątać sobie głowy maskami, ale to właśnie przez nie dwa kody o niemal identycznej treści mogą wyglądać zupełnie inaczej.
Co się dzieje podczas skanowania
Gdy kierujesz aparat na kod QR, skaner:
- Odnajduje trzy znaczniki pozycji i oblicza położenie, rozmiar oraz obrót kodu.
- Koryguje perspektywę za pomocą znaczników wyrównania, dzięki czemu przechylony kod staje się płaską siatką.
- Próbkuje każdy moduł jako ciemny lub jasny, używając wzorców synchronizacji jak linijki.
- Odczytuje informację o formacie, usuwa maskę i zbiera słowa kodowe.
- Naprawia błędy za pomocą dekodowania Reeda–Solomona.
- Interpretuje dane — link, dane logowania do Wi-Fi, wizytówkę — i proponuje odpowiednią akcję.
Wszystko to trwa kilka milisekund. Możesz to sprawdzić samodzielnie w naszym skanerze kodów QR online, który wykonuje te kroki bezpośrednio w przeglądarce — na przesłanym obrazie, obrazie z linku lub obrazie z kamery.
Statyczne a dynamiczne kody QR
Statyczny kod QR zawiera ostateczną treść bezpośrednio: adres URL, hasło do Wi-Fi lub sam tekst. Działa bezterminowo, nie wymaga serwera i nie da się go śledzić. Dynamiczny kod QR zawiera krótki link przekierowujący należący do usługodawcy, co pozwala później zmienić adres docelowy i zliczać skany — ale kod przestaje działać, gdy wygaśnie subskrypcja.
Każdy kod utworzony w QR.tools jest statyczny: darmowy, prywatny i trwały. Jeśli później zechcesz zmienić adres docelowy, skieruj kod na stronę, którą sam zarządzasz, i aktualizuj właśnie tę stronę.
Co może zawierać kod QR?
Ponieważ kod QR po prostu przechowuje tekst, to format tego tekstu decyduje, co zrobi z nim telefon. Standardowe formaty to m.in.:
- Adresy URL — otwierają stronę internetową (
https://…) - Wi-Fi — łączą z siecią (
WIFI:T:WPA;S:…;P:…;;) — zobacz generator kodów QR do Wi-Fi - vCard — zapisuje kontakt — zobacz generator kodów QR vCard
- E-mail, SMS i telefon — rozpoczynają wiadomość lub połączenie za pomocą
mailto:,SMSTO:itel: - Wydarzenia w kalendarzu — dodają wydarzenie za pomocą wpisu iCalendar
VEVENT - Lokalizacje — otwierają mapę ze współrzędnymi
geo:
Najważniejsze wnioski
- Kod QR to siatka modułów, w której wokół Twoich danych rozmieszczone są stałe znaczniki pozycji, znaczniki wyrównania i wzorce synchronizacji.
- Więcej treści oznacza wyższą wersję, gęstszy wzór i większy minimalny rozmiar wydruku.
- Korekcja błędów (L, M, Q, H) pozwala kodom przetrwać uszkodzenia — i umożliwia dodanie logo.
- Kody statyczne są trwałe i prywatne; dynamiczne można edytować, ale zależą od usługodawcy.
Chcesz stworzyć własny? Otwórz generator kodów QR i w kilka sekund utwórz kod we własnych kolorach i z własnym logo.
Chcesz stworzyć własny kod QR?
Zaprojektuj własny kod QR z logo i w swoich kolorach w kilka sekund — za darmo i bez rejestracji.
Otwórz generator