Czym jest kod QR?
24 lutego 2022 | Tomasz Drewniak
Odpowiedź szybka… nośnikiem danych jak każdy inny. Odpowiedź dokładna… nośnikiem danych różnym od innych.
Geneza powstania kodu
Kody QR (czyli Quick Response Code) zostały wytworzone przez pracowników firmy Denso-Wave w 1994 r. Było to wynikiem zmian jakie następowały w przemyśle. Następował wówczas proces przechodzenia z masowej produkcji jednego produktu przez jedną fabrykę w stronę bardziej elastycznych fabryk zdolnych do produkcji wielu rodzajów, bardziej skomplikowanych produktów.
Boleśnie oczywiste stały się wówczas ograniczenia kodu kreskowego, który mógł pomieścić jedynie 20 znaków alfanumerycznych. Powodowało to konieczność naklejania wielu kodów kreskowych na jeden produkt co ograniczało sprawność pracowników a czasami było po prostu niemożliwe do zrobienia, ponieważ wiele drobnych elementów było w stanie pomieścić tylko jeden kod kreskowy. Wówczas właśnie na scenę wchodzi kod QR.
Budowa kodu
W przeciwieństwie do kodu kreskowego który przechowuje informacje w jednym wymiarze, kod QR przechowuje informacje w dwóch wymiarach. Pozwala to na przechowywanie większej ilości danych i szybszy ich odczyt.
Odczytywanie w dwóch wymiarach powoduje jednak kilka problemów. Pierwszym z nich jest odpowiednie odczytanie orientacji kodu. Jest to konieczne do odczytania reszty kodu. Dzieje się to dzięki tym trzem kwadratom znajdującym się w trzech rogach kodu. Wygląd tych kwadratów jest ściśle określony składają się one z wewnętrznego, czarnego kwadratu o wielkości 3×3 pola, białej ramce o szerokości 1 pola i czarnej ramki o szerokości 1 pola. Te kwadraty z kolei muszą być ponownie oddzielone białymi polami od danych zapisanych na kodzie.
Kolejnym problemem jest błąd paralaksy który może nastąpić w momencie gdy nie sczytujemy kodu dokładnie pod kątem prostym do jego powierzchni. Wówczas z pomocą przychodzą mniejsze kwadraty, których budowa jest następująca: jedno pole czarne, następnie biała ramka o szerokości jednego pola i dalej czarna ramka o szerokości jednego pola. Dzięki tym kwadracikom i ich stałej budowie oraz regularnych odległościach między nimi w kodzie, urządzenie sczytujące kod będzie wiedziało pod jakim kątem się znajduje. Pozwoli to z kolei na uniknięcie wcześniej już wymienionego błędu paralaksy.
Kolejne elementy konieczne do działania kodu to informacja o wersji kodu oraz informacja o formacie kodu.
Są jednak również inne elementy kodu które nie są konieczne do jego działania ale wspomagają go. Są to dwa paski które są na zmianę białe i czarne. Pomagają one przyspieszyć czas sczytywania kodu oraz sprawdzić czy kod nie został uszkodzony. Kolejnym elementem wspomagającym jest odpowiednia biała ramka wokół kodu. Jej zadaniem z kolei jest pozbycie się ewentualnych zakłóceń i ułatwienie odczytania kodu przez kamerę.

A co z częściowo uszkodzonym kodem
Podobnie jak wiele innych nośników danych, kody QR, są zagrożone utratą części danych. Może się to stać na wiele różnych sposobów np. zasłonięcie części kodu palcem lub urwanie kawałka kartki na którym znajduje się kod. Wówczas z pomocą przychodzą odpowiednie poziomy korekcji i odzyskiwania danych (algorytm Reeda-Solomona).
Zgodnie ze specyfikacją istnieją 4 poziomy korekcji i odzyskiwania danych:
- L – umożliwiający odzyskanie około 7 procent uszkodzonych danych
- M – umożliwiający odzyskanie około 15 procent uszkodzonych danych
- Q – umożliwiający odzyskanie około 25 procent uszkodzonych danych
- H – umożliwiający odzyskanie około 30 procent uszkodzonych danych.
(Na zdjęciu uszkodzony ale wciąż dający się odczytać kod QR zawierający link do naszej strony)
Poziomy korekcji ograniczają jednak drastycznie pojemność kodu QR, dla przykładu kod QR o danych rozmiarach korzystając z poziomu korekcji H będzie w stanie pomieścić tylko 44% danych w porównaniu do kodu QR o tych samych rozmiarach lecz poziomie korekcji L.

Wykorzystanie kodu QR
Kody QR są obecnie wykorzystywane w wielu miejscach. Głównie na przystankach, biletach lub magazynach. Kody te stały się wyjątkowo powszechne w trakcie pandemii COVID-19, ponieważ dążono do bezdotykowego przekazywania informacji.
Jest jednak również ciemna strona kodów QR. Ponieważ są one nośnikiem danych, jak każdy inny nośnik danych, mogą one służyć do rozprzestrzeniania linków na podejrzane strony z wirusami lub do wgrywania również samych wirusów.
W 2012 r. Miał miejsce pewien incydent z tą ciemną stroną związany. Sczytanie odpowiedniego kodu QR przez telefon z androidem mogło spowodować jego przywrócenie do ustawień fabrycznych bez potrzeby potwierdzenia tego działania przez użytkownika. W konsekwencji wiele osób bezpowrotnie utraciło swoje dane które były zapisane na tych telefonach. Błąd ten został już jednak poprawiony.