}
FreeQR
Back to Blog
Korekcja Bledow w Kodach QR: Dlaczego Uszkodzone Kody Nadal Dzialaja

Korekcja Bledow w Kodach QR: Dlaczego Uszkodzone Kody Nadal Dzialaja

Dowiedz sie, jak dziala korekcja bledow w kodach QR, poznaj cztery poziomy (L, M, Q, H) i dlaczego uszkodzone kody nadal sie skanuja. Wybierz odpowiedni poziom z FreeQR.

Kod QR z menu restauracyjnego z pladem od kawy na rogu. Tabliczka ogrodowa wyblakla po trzech miesiacach bezposredniego slonca. Etykieta magazynowa rozmazana smarem. Wszystkie trzy nadal sie skanuja.

To nie jest przypadek. Kazdy kod QR zawiera nadmiarowe dane, ktore pozwalaja skanerom odtworzyc uszkodzone lub brakujace czesci. Specyfikacja ISO/IEC 18004:2024 nazywa to korekcja bledow w kodach QR i jest to czesc formatu od momentu jego pierwszej standaryzacji w 2000 roku. Tradycyjny kod kreskowy z takim samym uszkodzeniem bylby nieczytelny.

Najwazniejsze informacje:

  • Kody QR wykorzystuja korekcje bledow Reed-Solomon do odzyskiwania danych po uszkodzeniach fizycznych, zgodnie z ISO/IEC 18004:2024.

  • Cztery poziomy: L (7%), M (15%), Q (25%), H (30%). Procent odnosi sie do odzyskiwalnych slow kodowych, nie do powierzchni fizycznej.

  • Wyzsza korekcja oznacza wieksza tolerancje na uszkodzenia, ale mniejsza pojemnosc danych.

  • Kody QR nigdy nie zwracaja blednych danych. Przestaja dzialac w bezpieczny sposob, gdy uszkodzenie przekracza mozliwosci korekcji.

  • Dynamiczne kody QR przechowuja krotkie adresy URL przekierowan, wiec poziom M zapewnia wystarczajacy zapas w wiekszosci przypadkow.

Czym jest korekcja bledow w kodach QR?

Uszkodzone moduly kodu QR podswietlone na czerwono i odtworzone na zielono dzieki korekcji bledow Reed-Solomon

Mozna to sobie wyobrazic jako kopie zapasowa danych wbudowana w sam kod. Gdy brud, zarysowania lub blakniecienie niszcza czesc czarno-bialych modulow, skaner wykorzystuje te kopie zapasowa, aby uzupelnic luki. Pelna wiadomosc dociera nawet wtedy, gdy brakuje fragmentow.

Matematyka stojaca za tym rozwiazaniem nazywa sie korekcja bledow Reed-Solomon. Irving S. Reed i Gustave Solomon opublikowali ja w 1960 roku w MIT Lincoln Laboratory na potrzeby komunikacji satelitarnej, gdzie szum sygnalu znieksztalca przesylane dane. Ten sam algorytm trafil do plyt CD, DVD, Blu-ray oraz systemow danych sond Voyager NASA. Gdy DENSO WAVE projektowalo kod QR w 1994 roku, Reed-Solomon byl naturalnym wyborem. Algorytm ten przetrwal juz gleboka przestrzen kosmiczna.

Standard kodow QR okresla cztery poziomy korekcji bledow. Kazdy poziom determinuje ilosc nadmiarowych danych w kodzie i, jako bezposrednia konsekwencja, calkowita pojemnosc danych, jaka kod moze pomiescic.

Cztery poziomy korekcji bledow w kodach QR

Kazdy kod QR jest generowany na jednym z czterech poziomow korekcji bledow. Ponizasza tabela pokazuje, ile kazdy poziom odzyskuje, jaka pojemnosc danych oferuje przy maksymalnym rozmiarze (Wersja 40, najwiekszy kod QR zdefiniowany w specyfikacji) i do jakich zastosowan najlepiej sie nadaje.

Poziom

Nazwa

Odzyskiwanie

Maks. pojemnosc (V40)

Najlepszy do

L

Low

7%

2 953 bajty

Ekrany cyfrowe, czyste srodowiska

M

Medium

15%

2 331 bajtow

Druk wewnetrzny, ulotki, menu (najczestsza wartosc domyslna)

Q

Quartile

25%

1 663 bajty

Oznakowanie zewnetrzne, opakowanie, powierzchnie narazone na zuzycie

H

High

30%

1 273 bajty

Logo na kodzie, srodowiska przemyslowe i fabryczne

Wieksza ochrona kosztuje miejsce. W Wersji 40 poziom L przechowuje 2 953 bajty. Poziom H przechowuje 1 273. To redukcja pojemnosci o 57% na rzecz odpornosci na uszkodzenia.

Wiekszosc generatorow domyslnie ustawia poziom M. DENSO WAVE potwierdza, ze jest to najczesciej wybierany poziom w praktyce. Poziom M radzi sobie z drobnymi zarysowaniami, lekkim blaknieciem i sladami odciskow palcow, nie powiekszajac kodu bardziej niz to konieczne.

Te procentowe wartosci ISO to jednak maksima teoretyczne. W praktyce kody zwykle przestaja dzialac wczesniej. Inzynier oprogramowania Huon Wilson przetestowal 12 800 konfiguracji kodow QR z symulowanymi uszkodzeniami i odkryl, ze kody na poziomie H generowaly o 60% wiecej udanych skanowan niz kody na poziomie L. Praktyczne progi awarii wynosily okolo 6% dla L, 12% dla M, 18% dla Q i 20% dla H. Rzeczywiste uszkodzenia nie rozkladaja sie rownomiernie, wiec kod osiaga swoj limit szybciej, niz sugeruje specyfikacja.

Ile uszkodzen moze przetrwac kod QR?

Kod QR z plama kawy na srodku, ktory nadal sie skanuje, w porownaniu z kodem QR z odartym rogiem, ktory nie dziala

Procentowe wartosci w tabeli odnosza sie do slow kodowych (jednostek zakodowanych danych), a nie do powierzchni fizycznej. Uszkodzenie 15% powierzchni niekoniecznie oznacza uszkodzenie 15% slow kodowych. Przyczyna tkwi w sposobie rozmieszczenia danych wewnatrz siatki.

Przeplot slow kodowych

W wiekszych kodach QR zakodowane dane sa dzielone na wiele blokow Reed-Solomon, a nastepnie przeplatane przed umieszczeniem w siatce. Zarysowanie biegnace po przekatnej kodu nie niszczy kolejnych slow kodowych. Zamiast tego uszkadza jedno slowo kodowe tutaj, pomija trzy, uszkadza inne tam. Uszkodzenie rozkada sie na wiele blokow korekcji zamiast przeciazac pojedynczy. Dlatego dlugie zarysowanie jest czesto latwiejsze do przezycia niz gleboki otwor w jednym miejscu.

Wykrywanie bledow a korekcja bledow

Reed-Solomon potrafi wykryc dwa razy wiecej bledow, niz jest w stanie skorygowac. Na poziomie M algorytm koryguje do 15% uszkodzonych slow kodowych, ale wykrywa uszkodzenia do 30%. Gdy uszkodzenie przekracza budzet korekcji, ale miesci sie w zakresie wykrywania, skaner wie, ze dane sa naruszone i nie zwraca niczego.

To jest funkcja bezpieczenstwa. Uszkodzony kod QR nigdy nie przekieruje cie na zla strone internetowa ani nie obciazy niewlasciwego konta. Dziala poprawnie albo nie zwraca niczego. W przypadku kodow platniczych i tokenow uwierzytelniajacych ta roznica ma ogromne znaczenie.

Wyjatek wzorcow wyszukiwania

Trzy duze kwadraty w rogach kazdego kodu QR to wzorce wyszukiwania. Skaner wykorzystuje je do lokalizacji i orientacji kodu. Nie sa chronione przez korekcje bledow w taki sam sposob jak moduly danych. Jesli rozdarcie, zgiecie lub naklejka zakryje jeden z trzech rogow, kod prawie na pewno przestanie dzialac, niezaleznie od poziomu korekcji. Zadna ilosc redundancji nie uratuje kodu z brakujacym rogiem.

Jaki poziom korekcji bledow wybrac?

Oto co wybrac w typowych scenariuszach.

Druk wewnetrzny (menu, ulotki, wizytowki): Poziom M. Czyste srodowiska z minimalnym kontaktem fizycznym. Poziom M radzi sobie z okazjonalnym zabrudzeniem lub zagieciem, nie powiekszajac kodu bardziej niz to konieczne.

Powierzchnie zewnetrzne lub narazone na warunki atmosferyczne (tabliczki ogrodowe, naklejki na samochody, przystanki autobusowe): Poziom Q lub H. Blakniecienie pod wplywem UV, deszcz, kontakt fizyczny ze strony przechodniow. Te kody potrzebuja wiekszego budzetu korekcji bledow, poniewaz uszkodzenia kumuluja sie przez tygodnie i miesiace.

Kody QR z logo lub marki: Poziom H. Centralne logo celowo zakrywa moduly danych, zazwyczaj 20-30% powierzchni kodu. 30% budzet korekcji poziomu H absorbuje to. Bez niego ryzykujesz. Badanie AutoID Lab University of Memphis przetestowalo kody QR z designem i stwierdzilo, ze sredni wskaznik odczytu wynosil 61,5%, a najgorszy spadl do 9,6%. Niezmodyfikowane kody osiagaly okolo 95%. Glowna przyczyna niepowodzen to uszkodzenie rogow wzorcow wyszukiwania.

Wyswietlacz cyfrowy (ekrany, prezentacje, e-mail): Poziom L. Brak ryzyka uszkodzen fizycznych. Kod istnieje jako piksele na ekranie. Poziom L utrzymuje kod kompaktowy i szybki do skanowania.

Dynamiczne kody QR: Poziom M jest zazwyczaj wystarczajacy. Dynamiczny kod QR przechowuje tylko krotki adres URL przekierowania (np. freeqr.to/abc123), a nie pelna zawartosc docelowa. Mniej danych oznacza mniej modulow, co z kolei oznacza, ze korekcja bledow ma proporcjonalnie wiecej miejsca do dzialania.

W designerze FreeQR cztery ustawienia korekcji bledow sa oznaczone jako Low, Medium, High i Highest (odpowiadajace L, M, Q i H). Domyslnie ustawiony jest Medium. Po dodaniu logo wskaznik skanowalnosci informuje, czy logo zakrywa zbyt wiele modulow dla wybranego poziomu. Dynamiczne kody pozwalaja rowniez aktualizowac miejsce docelowe bez ponownego drukowania.

Jedno zastrzezenie: poziom korekcji bledow jest ustawiany podczas generowania kodu. Nie mozna go zmienic po wydrukowaniu. Jesli wybierzesz poziom L, a pozniej przeniesiesz kod na zewnatrz, jedynym rozwiazaniem jest nowy kod na wyzszym poziomie. W razie watpliwosci wybierz poziom M.

Chcesz zobaczyc, jak to dziala? Stworz darmowy kod QR na FreeQR i wybierz swoj poziom korekcji bledow.

Najczesciej zadawane pytania

Czym jest korekcja bledow w kodach QR?

Dodatkowe dane osadzone w kodzie QR, ktore pozwalaja skanerom odtworzyc uszkodzone lub brakujace moduly. Mechanizm wykorzystuje kody Reed-Solomon, algorytm matematyczny pierwotnie opracowany do komunikacji satelitarnej, a nastepnie wlaczony do specyfikacji kodow QR (ISO/IEC 18004:2024).

Ile moze byc uszkodzony kod QR i nadal dzialac?

Do 30% na poziomie H, 25% na Q, 15% na M i 7% na L. Te procentowe wartosci odnosza sie do proporcji odzyskiwalnych slow kodowych, a nie do fizycznej powierzchni kodu. Rzeczywista zywotnosc zalezy od tego, gdzie wystepuje uszkodzenie i jak oddzialuje na przeplot slow kodowych.

Jakie sa cztery poziomy korekcji bledow?

L (Low, 7%), M (Medium, 15%), Q (Quartile, 25%) i H (High, 30%). Wiekszosc generatorow domyslnie ustawia M.

Jakiego poziomu korekcji bledow uzyc dla logo?

Poziom H (30%). Centralne logo zazwyczaj zakrywa 20-30% modulow kodu. Poziom H zapewnia skanerowi wystarczajaca ilosc nadmiarowych danych do odtworzenia tego, co logo przeslania. Uzycie nizszego poziomu z logo grozi tym, ze kod bedzie nieskanowalny.

Czy uszkodzony kod QR moze podac bledne informacje?

Nie. Gdy uszkodzenie przekracza mozliwosci algorytmu, skaner nie zwraca niczego. Otrzymujesz pusty wynik, nigdy bledny adres URL ani bledny adres platnosci. Reed-Solomon potrafi wykryc dwa razy wiecej bledow, niz jest w stanie skorygowac, wiec kod wie, kiedy jest zbyt uszkodzony, aby mozna mu bylo zaufac.


Napisane przez Andy Lee, specjaliste ds. technologii QR w FreeQR.