Nivelurile de corecție a erorilor la codurile QR reprezintă cantitatea de date redundante pe care o poartă un cod, ca un scaner să poată reconstrui ce este murdărit, zgâriat sau acoperit de un logo. Sunt patru: L, M, Q și H, care recuperează aproximativ 7%, 15%, 25% și 30% din cod. Alege M pentru majoritatea ecranelor și linkurilor scurte și H atunci când un logo sau manevrarea brutală vor roade din cod. Prețul fiecărui pas în sus este densitatea: mai multe module, pătrate mai mici la aceeași lățime tipărită.
Acest compromis este locul unde încep cele mai multe povești de tipul "codul meu QR nu se scanează", și de aceea tutorialul acesta lucrează cu numere reale de module, nu cu vorbe în vânt. Dacă nu ai creat încă un cod, cum creezi un cod QR este locul de unde să începi; articolul de față tratează alegerea nivelului după ce ai unul.
Ce face de fapt corecția erorilor într-un cod QR
Un cod QR stochează datele tale ca octeți numiți cuvinte de cod. Lângă ele stochează cuvinte de cod suplimentare, calculate cu corecția de erori Reed-Solomon, din aceeași familie de matematică folosită pe CD-uri. Când un scaner citește un cod deteriorat, folosește acele cuvinte de cod suplimentare ca să-și dea seama care cuvinte de date sunt greșite și ce ar fi trebuit să fie.
Nivelul pe care îl alegi decide câte cuvinte de cod suplimentare există. Denso Wave, care a inventat formatul, descrie funcția de corecție a erorilor ca fiind pe patru niveluri și notează că ridicarea nivelului îmbunătățește recuperarea, dar crește cantitatea de date, deci dimensiunea simbolului. Cifrele de recuperare de mai jos sunt cele listate în ISO/IEC 18004 și repetate în articolul Wikipedia despre codul QR.
- Nivelul L (Low): aproximativ 7% din cuvintele de cod restaurabile.
- Nivelul M (Medium): aproximativ 15%.
- Nivelul Q (Quartile): aproximativ 25%.
- Nivelul H (High): aproximativ 30%.
Observă cuvântul "aproximativ". Procentul numără cuvinte de cod, nu o pată de cerneală. Gândește-te la el ca la un buget de reparații, nu ca la o garanție împotriva deteriorării.
Compromisul densității: de ce mai mare nu înseamnă mereu mai sigur
Redundanța trebuie să locuiască undeva. Un nivel mai mare îți împinge datele într-un simbol mai mare. Codurile QR vin în versiunile de la 1 la 40, iar lungimea laturii este 17 + 4 x versiune module: versiunea 1 este 21 x 21, iar versiunea 40 este 177 x 177, conform tabelului de versiuni și capacități al Denso Wave. Codificatorul alege cea mai mică versiune a cărei capacitate, la nivelul ales de tine, încape datele tale.
Pentru URL-uri, aceste date sunt text în modul octet. Versiunea 2 conține 32 de octeți la L, 26 la M, 20 la Q și 14 la H. Versiunea 8 conține 192, 152, 108 și 84. Versiunea 11 conține 321, 251, 177 și 137.
Costul se vede la versiunea 8: 192 de octeți la L, 84 la H. Aceeași grilă, mai puțin de jumătate din spațiu pentru URL-ul tău, pentru că restul este paritate.
De ce un cod mai dens se scanează mai prost
Un telefon trebuie să rezolve fiecare modul. Tipărește codul cu o lățime de 3 cm și o grilă de 33 de module dă module de aproximativ 0.9 mm; o grilă de 61 de module dă aproximativ 0.5 mm. Aceeași cameră, aceeași lumină, aceeași mână tremurândă. Jumătate din marjă. Regulile de dimensionare din cât de mare ar trebui să fie un cod QR presupun că lucrezi cu o dimensiune rezonabilă a modulului, iar densitatea este ceea ce strică discret această presupunere.
Exemplu lucrat: un URL la fiecare nivel
Iată experimentul pe care îl fac de fiecare dată când cineva îmi spune "pune-l pur și simplu pe H". Am luat un URL de campanie urmărit, de 126 de caractere: un domeniu, o cale și parametrii utm_source, utm_medium, utm_campaign și utm_content. Apoi am luat un link scurt de 25 de caractere, https://s.elido.me/qr7kP2, ca exemplu ilustrativ. Ambele sunt în modul octet. Am codificat fiecare la toate cele patru niveluri cu un codificator standard, iar tabelul de capacități de mai sus prezice rezultatul.
| Nivel | Recuperare | URL de 126 de caractere | Link scurt de 25 de caractere |
|---|---|---|---|
| L | ~7% | V6, 41 x 41 | V2, 25 x 25 |
| M | ~15% | V8, 49 x 49 | V2, 25 x 25 |
| Q | ~25% | V9, 53 x 53 | V3, 29 x 29 |
| H | ~30% | V11, 61 x 61 | V4, 33 x 33 |
Două lucruri sar în ochi. Mai întâi, URL-ul lung crește de la 41 la 61 de module pe latură între L și H, adică de la 1681 la 3721 de module, aproximativ de 2.2 ori aria. În al doilea rând, și aceasta este partea pe care nu o menționează nimeni: linkul scurt la cel mai puternic nivel, H (33 x 33), este totuși mai mic decât URL-ul lung la cel mai slab nivel, L (41 x 41).
Încărcătura contează mai mult decât nivelul. Poți cumpăra bugetul maxim de reparații de 30% pentru un link scurt și să ajungi cu un cod mai rar și mai îndesat decât codul "eficient" de nivel L pentru URL-ul lung.
Când să alegi H și când este mai bun L sau M
Potrivește nivelul cu ceea ce se va întâmpla de fapt cu codul. Prudența în general nu este o specificație.
Alege H (sau Q) când
- Un logo sau o marcă de brand stă la mijloc. Ascunde module pe care scanerul trebuie să le reconstruiască.
- Codul este tipărit pe ambalaje, pe un flyer din buzunar, pe un autocolant, pe o masă care se șterge sau pe orice stă afară.
- Suprafața este aspră sau curbată și nu poți controla finisajul.
- Rescanarea nu este posibilă, de exemplu un cod de pe un produs deja expediat.
Articolul nostru de ajutor despre coduri QR spune același lucru: ține logoul sub 20% din aria codului și treci la H când depășești asta sau tipărești cu logo.
Alege L sau M când
- Codul apare pe un ecran: un slide, o pagină web, o confirmare de plată.
- URL-ul este scurt și nimic nu îl va acoperi sau zgâria.
- Spațiul este strâmt și codul trebuie să rămână mic, deci fiecare modul contează.
M este valoarea implicită practică. Denso Wave spune că este nivelul ales cel mai des, iar articolul nostru codul QR nu se scanează susține aceeași idee din partea biroului de suport: H este valoarea implicită greșită pentru un cod simplu, pentru că densitatea pe care o adaugă provoacă mai multe scanări eșuate decât deteriorarea împotriva căreia protejează.
O avertizare despre logouri: corecția erorilor repară module lipsă, nu repară contrastul slab, neclaritatea sau o margine tăiată. Regulile de design pentru cheltuirea bugetului pe un logo se află în designul codului QR de brand, inclusiv de ce cele trei pătrate din colțuri rămân neatinse.
Linkurile scurte țin codul rar (iar codurile QR dinamice le folosesc)
Exemplul lucrat dă o regulă pe care o poți aplica azi: micșorează încărcătura înainte să ridici nivelul. Un cod QR dinamic face exact asta. În loc să codifice destinația completă, codifică un link scurt, iar linkul scurt redirecționează oriunde îl îndrepți.
Codificarea unui link scurt are trei efecte asupra fiabilității:
- Grila rămâne la o versiune joasă, deci modulele rămân mari la orice dimensiune de tipar.
- Îți permiți nivelul Q sau H pentru un logo sau pentru uzura din tipar, fără ca codul să se umfle.
- Parametrii de urmărire stau pe destinație, nu în model, așa că schimbarea unei etichete de campanie nu te forțează niciodată la un cod nou, mai dens.
Mai există un al patrulea beneficiu, fără nicio legătură cu densitatea: deoarece codul duce la un link scurt, îl poți redirecționa ulterior fără retipărire și primești numărul de scanări pe gratis. La un cod static, destinația este încorporată în model, deci singura cale de a corecta o greșeală de tipar este să tipărești din nou.
Dacă vrei să încerci asta pe propriile linkuri, generatorul de coduri QR îți permite să setezi nivelul pentru fiecare cod, cu M ca punct de plecare, iar detaliile planurilor sunt pe pagina de prețuri. Fă unul la M și unul la H din același link scurt, tipărește-le la 3 cm și compară. Pun pariu că vei avea greutăți să le deosebești din ochi, și acesta este rostul.
O listă scurtă de verificare înainte să tipărești
Parcurge-le în ordine.
- Scurtează mai întâi URL-ul; ține parametrii de urmărire pe destinație.
- Alege nivelul din tabel: M pentru ecrane și tipar simplu, Q sau H pentru logouri și uzură.
- Verifică versiunea aleasă de generator. Dincolo de aproximativ versiunea 10 pentru un URL, întreabă-te de ce este încărcătura atât de lungă.
- Păstrează zona liberă: cel puțin patru module de margine goală pe fiecare latură.
- Tipărește la dimensiunea finală și scanează cu două telefoane diferite, în lumină obișnuită.
Pasul 5 prinde ce nu prezice niciun tabel. Un logo care părea mic pe ecran poate acoperi mai multe module decât ai ghici.
Citește seria Cornerstone
Acest articol face parte din clusterul de tutoriale, iar articolul lui Cornerstone este cum creezi un cod QR. Pentru regulile de dimensiune și de distanță care decid dacă mărimea modulului tău este suficientă, vezi cât de mare ar trebui să fie un cod QR.
Alte articole de pe blog
Întrebări frecvente
Care este cel mai bun nivel de corecție a erorilor pentru un cod QR?
Nivelul M este alegerea implicită rezonabilă: recuperează aproximativ 15% din cod și păstrează grila mică. Denso Wave, inventatorul formatului, spune că M este nivelul ales cel mai frecvent. Treci la Q sau H când codul poartă un logo sau va fi tipărit pe ceva care se zgârie, se îndoaie sau stă afară.
Ce înseamnă o corecție a erorilor de 30% la un cod QR?
Înseamnă că un cod de nivel H poate fi totuși decodat atunci când până la aproximativ 30% din cuvintele sale de date sunt ilizibile sau ascunse. Codul stochează date suplimentare de paritate Reed-Solomon, iar scanerul le folosește ca să reconstruiască ce lipsește. Este un plafon al deteriorării reparabile, nu o promisiune că orice 30% din suprafață poate dispărea.
Face un nivel mai mare de corecție a erorilor codul QR mai greu de scanat?
Indirect, da. Nivelurile mai mari adaugă date de paritate, așa că același URL are nevoie de o versiune mai înaltă, cu module mai multe și mai mici. La aceeași lățime tipărită, modulele mai mici sunt mai greu de rezolvat pentru camera unui telefon. Soluția este o încărcătură mai scurtă, nu un nivel mai mic pentru un cod care are nevoie de protecție.
Am nevoie de nivelul H ca să pun un logo pe un cod QR?
Folosește H, sau cel puțin Q, pentru orice cod cu un logo la mijloc. Logoul ascunde module, iar scanerul le tratează ca pe o deteriorare de reparat. Ține logoul mult sub un sfert din aria codului și departe de cele trei pătrate din colțuri, ca uzura din tipar să mai aibă buget.
Mai poate fi scanat un cod QR deteriorat?
Adesea, da, în limita nivelului. Un cod zgâriat, murdărit sau parțial acoperit se decodează dacă zona pierdută rămâne în ceea ce poate repara nivelul lui, iar pătratele din colțuri sunt intacte. Un cod de nivel L tolerează aproximativ 7% deteriorare, un cod de nivel H aproximativ 30%.
Care este nivelul implicit de corecție a erorilor la un cod QR?
Standardul nu prevede o valoare implicită unică; fiecare generator o alege pe a lui, iar M este alegerea cea mai comună. Playground-ul QR Elido pornește de la M, cu L, Q și H disponibile din același control.
Încearcă Elido
Lipește un URL, obții un link scurt funcțional
Fără înregistrare. Linkul este activ timp de 30 de zile. Înregistrează-te ca să-l păstrezi pentru totdeauna.
Gratuit, fără înregistrare · 2 pe zi