7 min czytaniaPoradniki

Poziomy korekcji błędów kodu QR: L, M, Q, H wyjaśnione

Poziomy korekcji błędów kodu QR L, M, Q i H odzyskują 7, 15, 25 i 30% uszkodzonego kodu. Zobacz liczbę modułów na każdym poziomie i kiedy który się opłaca.

Marius Voß
DevRel · edge infra
Poziomy korekcji błędów kodu QR L, M, Q i H pokazane jako słupki odzyskiwania 7, 15, 25 i 30 procent obok prawdziwego kodu QR

Poziomy korekcji błędów kodu QR to ilość nadmiarowych danych, które kod nosi w sobie, aby skaner mógł odbudować to, co jest rozmazane, zarysowane lub zasłonięte logo. Są cztery: L, M, Q i H, które odzyskują mniej więcej 7%, 15%, 25% i 30% kodu. Wybierz M dla większości ekranów i krótkich linków, a H, gdy logo lub ostre traktowanie zje część kodu. Ceną każdego kroku w górę jest gęstość: więcej modułów, mniejsze kwadraty przy tej samej szerokości wydruku.

W tym kompromisie zaczyna się większość historii "mój kod QR się nie skanuje" i dlatego ten poradnik pracuje na prawdziwych liczbach modułów zamiast machać rękami. Jeśli nie stworzyłeś jeszcze kodu, jak utworzyć kod QR to miejsce na start; ten tekst dotyczy wyboru poziomu, gdy już go masz.

Co właściwie robi korekcja błędów w kodzie QR

Kod QR zapisuje Twoje dane jako bajty zwane słowami kodowymi. Obok nich zapisuje dodatkowe słowa kodowe obliczone za pomocą korekcji błędów Reeda-Solomona, z tej samej rodziny matematyki, której używa się na płytach CD. Gdy skaner czyta uszkodzony kod, wykorzystuje te dodatkowe słowa, by ustalić, które słowa danych są błędne i czym powinny były być.

Wybrany poziom decyduje, ile jest dodatkowych słów kodowych. Denso Wave, które wynalazło ten format, opisuje funkcję korekcji błędów jako cztery poziomy i zauważa, że podniesienie poziomu poprawia odzyskiwanie, ale zwiększa ilość danych, a więc rozmiar symbolu. Poniższe wartości odzyskiwania to te z normy ISO/IEC 18004, powtórzone w haśle o kodzie QR w Wikipedii.

  • Poziom L (Low): około 7% słów kodowych do odtworzenia.
  • Poziom M (Medium): około 15%.
  • Poziom Q (Quartile): około 25%.
  • Poziom H (High): około 30%.

Zwróć uwagę na słowo "około". Procent liczy słowa kodowe, a nie plamę tuszu. Myśl o tym jak o budżecie napraw, a nie gwarancji odporności na uszkodzenia.

Cztery poziomy korekcji błędów kodu QR: L, M, Q i H, z przybliżonym odzyskiwaniem 7, 15, 25 i 30 procent oraz typowym zastosowaniem każdego z nich

Kompromis gęstości: dlaczego wyższy nie zawsze znaczy bezpieczniejszy

Nadmiarowość musi gdzieś mieszkać. Wyższy poziom wpycha Twoje dane do większego symbolu. Kody QR występują w wersjach od 1 do 40, a długość boku to 17 + 4 x wersja modułów: wersja 1 to 21 x 21, a wersja 40 to 177 x 177, według tabeli wersji i pojemności Denso Wave. Enkoder wybiera najmniejszą wersję, której pojemność na wybranym poziomie mieści Twoje dane.

W przypadku adresów URL dane to tekst w trybie bajtowym. Wersja 2 mieści 32 bajty na L, 26 na M, 20 na Q i 14 na H. Wersja 8 mieści 192, 152, 108 i 84. Wersja 11 mieści 321, 251, 177 i 137.

Koszt widać w wersji 8: 192 bajty na L, 84 na H. Ta sama siatka, mniej niż połowa miejsca na Twój URL, bo reszta to parzystość.

Dlaczego gęstszy kod skanuje się gorzej

Telefon musi rozdzielić każdy moduł. Wydrukuj kod o szerokości 3 cm, a siatka 33 modułów daje moduły o szerokości około 0,9 mm; siatka 61 modułów daje około 0,5 mm. Ten sam aparat, to samo światło, ta sama drżąca ręka. Połowa zapasu. Zasady rozmiaru w jak duży powinien być kod QR zakładają rozsądny rozmiar modułu, a gęstość po cichu łamie to założenie.

Przykład praktyczny: jeden URL na każdym poziomie

Oto eksperyment, który uruchamiam za każdym razem, gdy ktoś mówi, żeby "po prostu ustawić H". Wziąłem śledzony adres URL kampanii o długości 126 znaków: domena, ścieżka oraz parametry utm_source, utm_medium, utm_campaign i utm_content. Potem wziąłem 25-znakowy krótki link, https://s.elido.me/qr7kP2, jako przykład ilustracyjny. Oba w trybie bajtowym. Zakodowałem każdy na wszystkich czterech poziomach standardowym enkoderem, a powyższa tabela pojemności przewiduje wynik.

PoziomOdzyskiwanieURL 126 znakówKrótki link 25 znaków
L~7%V6, 41 x 41V2, 25 x 25
M~15%V8, 49 x 49V2, 25 x 25
Q~25%V9, 53 x 53V3, 29 x 29
H~30%V11, 61 x 61V4, 33 x 33

Rzucają się w oczy dwie rzeczy. Po pierwsze, długi URL rośnie z 41 do 61 modułów na bok przy przejściu z L na H, czyli z 1681 do 3721 modułów, około 2,2 razy w polu. Po drugie, i o tym nikt nie wspomina: krótki link na najsilniejszym poziomie H (33 x 33) jest nadal mniejszy niż długi URL na najsłabszym poziomie L (41 x 41).

Dwa prawdziwe kody QR na poziomie H obok siebie: 126-znakowy śledzony URL w siatce 61 na 61 modułów i 25-znakowy krótki link w siatce 33 na 33 moduły, z tabelą liczby modułów dla wszystkich czterech poziomów

Ładunek liczy się bardziej niż poziom. Możesz kupić maksymalny 30% budżet napraw dla krótkiego linku i skończyć z rzadszym, grubszym kodem niż "efektywny" kod poziomu L dla długiego URL.

Kiedy wybrać H, a kiedy lepsze jest L lub M

Dopasuj poziom do tego, co faktycznie stanie się z kodem. Ostrożność w ogóle nie jest specyfikacją.

Wybierz H (lub Q), gdy

  • Pośrodku znajduje się logo lub znak marki. Zasłania moduły, które skaner musi odbudować.
  • Kod jest drukowany na opakowaniu, ulotce w kieszeni, naklejce, stole, który się wyciera, lub czymkolwiek na dworze.
  • Powierzchnia jest szorstka lub zakrzywiona i nie kontrolujesz wykończenia.
  • Ponowne zeskanowanie nie jest możliwe, na przykład kod na produkcie, który już wysłano.

Artykuł pomocy o kodach QR w Elido mówi to samo: trzymaj logo poniżej 20% powierzchni kodu i przełącz na H, gdy to przekroczysz lub drukujesz z logo.

Wybierz L lub M, gdy

  • Kod pojawia się na ekranie: slajdzie, stronie internetowej, potwierdzeniu zamówienia.
  • URL jest krótki i nic go nie zakryje ani nie zarysuje.
  • Miejsca jest mało, a kod musi pozostać mały, więc liczy się każdy moduł.

M to praktyczne ustawienie domyślne. Denso Wave podaje, że jest to poziom wybierany najczęściej, a nasz własny wpis o kodzie QR, który się nie skanuje mówi to samo od strony działu wsparcia: H to złe ustawienie domyślne dla zwykłego kodu, bo dodawana przez nie gęstość powoduje więcej nieudanych skanów niż uszkodzeń, przed którymi chroni.

Ostrzeżenie dotyczące logo: korekcja błędów naprawia brakujące moduły, ale nie naprawi słabego kontrastu, rozmycia ani przyciętego marginesu. Zasady projektowe wydawania tego budżetu na logo opisano w projektowaniu kodów QR z marką, łącznie z tym, dlaczego trzy kwadraty narożne pozostają nietknięte.

Krótkie linki utrzymują kod rzadkim (a dynamiczne kody QR z nich korzystają)

Przykład praktyczny daje regułę, którą możesz zastosować dziś: zmniejsz ładunek, zanim podniesiesz poziom. Dynamiczny kod QR robi dokładnie to. Zamiast kodować pełny cel, koduje krótki link, a krótki link przekierowuje tam, gdzie go skierujesz.

Zakodowanie krótkiego linku ma trzy skutki dla niezawodności:

  1. Siatka pozostaje w niskiej wersji, więc moduły są duże przy każdym rozmiarze wydruku.
  2. Stać Cię na poziom Q lub H dla logo lub zużycia wydruku bez rozdęcia kodu.
  3. Parametry śledzące mieszkają w celu, a nie we wzorze, więc zmiana tagu kampanii nigdy nie wymusza nowego, gęstszego kodu.

Jest czwarta korzyść, która nie ma nic wspólnego z gęstością: ponieważ kod wskazuje krótki link, możesz przekierować go później bez ponownego druku i dostajesz liczniki skanów za darmo. W kodzie statycznym cel jest wypalony we wzorze, więc jedynym sposobem naprawy literówki jest ponowny druk.

Jeśli chcesz wypróbować to na własnych linkach, generator kodów QR pozwala ustawić poziom dla każdego kodu, z M jako punktem startowym, a szczegóły planów są na stronie z cennikiem. Zrób jeden na M i jeden na H z tego samego krótkiego linku, wydrukuj je w rozmiarze 3 cm i porównaj. Założę się, że trudno Ci będzie odróżnić je na oko, i o to chodzi.

Krótka lista kontrolna przed drukiem

Wykonuj w kolejności.

  1. Najpierw skróć URL; parametry śledzące trzymaj w celu.
  2. Wybierz poziom z tabeli: M dla ekranów i zwykłego druku, Q lub H dla logo i zużycia.
  3. Sprawdź wersję wybraną przez generator. Powyżej mniej więcej wersji 10 dla URL zapytaj, dlaczego ładunek jest tak długi.
  4. Zachowaj strefę ciszy: co najmniej cztery moduły pustej ramki z każdej strony.
  5. Wydrukuj w docelowym rozmiarze i zeskanuj dwoma różnymi telefonami w zwykłym świetle.

Krok 5 wyłapuje to, czego żadna tabela nie przewidzi. Logo, które wyglądało na małe na ekranie, może zakrywać więcej modułów, niż byś zgadł.

Przeczytaj serię cornerstone

Ten wpis należy do klastra poradników, a jego cornerstone to jak utworzyć kod QR. Zasady rozmiaru i odległości, które rozstrzygają, czy Twój moduł jest wystarczająco duży, znajdziesz w jak duży powinien być kod QR.

Powiązane na blogu

Najczęściej zadawane pytania

Jaki jest najlepszy poziom korekcji błędów dla kodu QR?

Poziom M to rozsądne ustawienie domyślne: odzyskuje około 15% kodu i utrzymuje małą siatkę. Denso Wave, twórca formatu, podaje, że M to poziom wybierany najczęściej. Przejdź na Q lub H, gdy kod niesie logo albo będzie drukowany na czymś, co się ściera, zgina lub zostaje na dworze.

Co oznacza 30% korekcji błędów w kodzie QR?

Oznacza, że kod poziomu H nadal da się zdekodować, gdy do około 30% jego słów kodowych danych jest nieczytelnych lub zasłoniętych. Kod przechowuje dodatkowe dane parzystości Reeda-Solomona, a skaner wykorzystuje je do odbudowy brakujących części. To górna granica naprawialnych uszkodzeń, a nie obietnica, że dowolne 30% powierzchni może zniknąć.

Czy wyższy poziom korekcji błędów utrudnia skanowanie kodu QR?

Pośrednio tak. Wyższe poziomy dodają dane parzystości, więc ten sam adres URL wymaga wyższej wersji z większą liczbą mniejszych modułów. Przy tej samej szerokości wydruku mniejsze moduły trudniej rozdzielić aparatowi telefonu. Rozwiązaniem jest krótszy ładunek, a nie niższy poziom w kodzie, który potrzebuje ochrony.

Czy potrzebuję poziomu H, żeby umieścić logo w kodzie QR?

Użyj H, a przynajmniej Q, dla każdego kodu z logo pośrodku. Logo zasłania moduły, a skaner traktuje je jako uszkodzenie do naprawy. Trzymaj logo wyraźnie poniżej jednej czwartej powierzchni kodu i z dala od trzech kwadratów narożnych, aby zużycie wydruku miało jeszcze zapas.

Czy uszkodzony kod QR da się jeszcze zeskanować?

Często tak, w granicach danego poziomu. Zarysowany, rozmazany lub częściowo zasłonięty kod się dekoduje, jeśli utracona powierzchnia mieści się w tym, co jego poziom potrafi naprawić, a kwadraty narożne są nienaruszone. Kod poziomu L toleruje około 7% uszkodzeń, a kod poziomu H około 30%.

Jaki jest domyślny poziom korekcji błędów kodu QR?

W standardzie nie ma jednego ustawienia domyślnego; każdy generator wybiera własne, a M jest najczęstszym wyborem. Plac zabaw QR w Elido startuje od M, a L, Q i H są dostępne z tej samej kontrolki.

Wypróbuj Elido

Wklej URL, otrzymaj krótki link

Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.

Za darmo, bez rejestracji · 2 dziennie

Wypróbuj Elido

Skracarka URL hostowana w UE: własne domeny, głęboka analityka i otwarte API. Darmowy plan - bez karty kredytowej.

Tagi
qr code error correction levels
qr code error correction
qr code level h
qr code version
reed-solomon qr code
qr code density

Czytaj dalej