Przejdź do treści
PoradnikPodstawy

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.

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:

  1. Odnajduje trzy znaczniki pozycji i oblicza położenie, rozmiar oraz obrót kodu.
  2. Koryguje perspektywę za pomocą znaczników wyrównania, dzięki czemu przechylony kod staje się płaską siatką.
  3. Próbkuje każdy moduł jako ciemny lub jasny, używając wzorców synchronizacji jak linijki.
  4. Odczytuje informację o formacie, usuwa maskę i zbiera słowa kodowe.
  5. Naprawia błędy za pomocą dekodowania Reeda–Solomona.
  6. 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: i tel:
  • 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

Czytaj dalej