8 min di letturaTutorial

Livelli di correzione degli errori del codice QR: L, M, Q, H spiegati

I livelli di correzione degli errori del codice QR L, M, Q e H recuperano il 7, 15, 25 e 30% di un codice danneggiato. Scopri il numero di moduli per livello e quando conviene ciascuno.

Marius Voß
DevRel · edge infra
I livelli di correzione degli errori del codice QR L, M, Q e H mostrati come barre per un recupero del 7, 15, 25 e 30 percento accanto a un codice QR reale

I livelli di correzione degli errori del codice QR indicano la quantità di dati ridondanti che un codice contiene, in modo che uno scanner possa ricostruire ciò che è sbavato, graffiato o coperto da un logo. Ce ne sono quattro: L, M, Q e H, che recuperano circa il 7%, 15%, 25% e 30% del codice. Scegli M per la maggior parte degli schermi e dei link brevi, e H quando un logo o una manipolazione brusca intaccheranno il codice. Il prezzo di ogni gradino in più è la densità: più moduli, quadrati più piccoli alla stessa larghezza di stampa.

Questo compromesso è dove iniziano la maggior parte delle storie del tipo "il mio codice QR non si scansiona", ed è per questo che questo tutorial lavora su conteggi reali di moduli anziché su discorsi vaghi. Se non hai ancora creato un codice, come creare un codice QR è il punto da cui partire; questo articolo riguarda la scelta del livello una volta che ce l'hai.

Cosa fa davvero la correzione degli errori in un codice QR

Un codice QR memorizza i tuoi dati come byte chiamati codeword. Accanto a questi memorizza codeword aggiuntive calcolate con la correzione degli errori Reed-Solomon, la stessa famiglia di matematica usata sui CD. Quando uno scanner legge un codice danneggiato, usa quelle codeword aggiuntive per capire quali codeword di dati sono sbagliate e che cosa avrebbero dovuto essere.

Il livello che scegli decide quante codeword aggiuntive ci sono. Denso Wave, che ha inventato il formato, descrive la funzione di correzione degli errori come quattro livelli e osserva che alzare il livello migliora il recupero ma aumenta la quantità di dati, e quindi la dimensione del simbolo. Le percentuali di recupero qui sotto sono quelle riportate nella ISO/IEC 18004 e riprese nella voce di Wikipedia sul codice QR.

  • Livello L (Low): circa il 7% delle codeword ripristinabili.
  • Livello M (Medium): circa il 15%.
  • Livello Q (Quartile): circa il 25%.
  • Livello H (High): circa il 30%.

Nota la parola "circa". La percentuale conta le codeword, non una macchia d'inchiostro. Pensala come un budget di riparazione, non come una garanzia sul danno.

I quattro livelli di correzione degli errori del codice QR L, M, Q e H con un recupero approssimativo del 7, 15, 25 e 30 percento e un uso tipico per ciascuno

Il compromesso della densità: perché più alto non è sempre più sicuro

La ridondanza deve stare da qualche parte. Un livello più alto spinge i tuoi dati in un simbolo più grande. I codici QR esistono nelle versioni da 1 a 40, e la lunghezza del lato è 17 + 4 x versione moduli: la versione 1 è 21 x 21 e la versione 40 è 177 x 177, secondo la tabella di versioni e capacità di Denso Wave. L'encoder sceglie la versione più piccola la cui capacità, al livello che hai scelto, contiene i tuoi dati.

Per gli URL, quei dati sono testo in modalità byte. La versione 2 contiene 32 byte a L, 26 a M, 20 a Q e 14 a H. La versione 8 contiene 192, 152, 108 e 84. La versione 11 contiene 321, 251, 177 e 137.

Il costo si vede nella versione 8: 192 byte a L, 84 a H. Stessa griglia, meno della metà dello spazio per il tuo URL, perché il resto è parità.

Perché un codice più denso si scansiona peggio

Un telefono deve risolvere ogni modulo. Stampa il codice largo 3 cm e una griglia di 33 moduli dà moduli larghi circa 0,9 mm; una griglia di 61 moduli ne dà circa 0,5 mm. Stessa fotocamera, stessa luce, stessa mano tremante. Metà del margine. Le regole di dimensionamento in quanto deve essere grande un codice QR presuppongono che tu lavori con una dimensione ragionevole del modulo, e la densità è ciò che rompe silenziosamente questo presupposto.

Esempio pratico: un URL a ogni livello

Ecco l'esperimento che faccio ogni volta che qualcuno mi dice di "impostarlo semplicemente su H". Ho preso un URL di campagna tracciato, lungo 126 caratteri: un dominio, un percorso e i parametri utm_source, utm_medium, utm_campaign e utm_content. Poi ho preso un link breve di 25 caratteri, https://s.elido.me/qr7kP2, come esempio illustrativo. Entrambi sono in modalità byte. Ho codificato ciascuno a tutti e quattro i livelli con un encoder standard, e la tabella delle capacità qui sopra prevede il risultato.

LivelloRecuperoURL di 126 car.Link breve di 25 car.
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

Due cose saltano all'occhio. Primo, l'URL lungo passa da 41 a 61 moduli per lato andando da L a H, cioè da 1681 a 3721 moduli, circa 2,2 volte l'area. Secondo, ed è la parte che nessuno menziona: il link breve al livello più forte, H (33 x 33), è ancora più piccolo dell'URL lungo al livello più debole, L (41 x 41).

Due codici QR reali di livello H affiancati: un URL di tracciamento di 126 caratteri a 61 per 61 moduli e un link breve di 25 caratteri a 33 per 33 moduli, con una tabella dei conteggi di moduli per tutti e quattro i livelli

Il payload conta più del livello. Puoi comprare il massimo budget di riparazione del 30% per un link breve e ottenere comunque un codice più rado e più grosso del codice di livello L "efficiente" per l'URL lungo.

Quando scegliere H, e quando L o M è meglio

Abbina il livello a ciò che accadrà davvero al codice. La prudenza generica non è una specifica.

Scegli H (o Q) quando

  • Un logo o un marchio sta al centro. Nasconde moduli che lo scanner deve ricostruire.
  • Il codice è stampato su una confezione, un volantino in tasca, un adesivo, un tavolo che viene pulito o qualsiasi cosa all'aperto.
  • La superficie è ruvida o curva e non puoi controllare la finitura.
  • Non è possibile riscansionarlo, come per un codice su un prodotto già spedito.

L'articolo di aiuto sui codici QR di Elido dice lo stesso: tieni un logo sotto il 20% dell'area del codice, e passa a H quando lo superi o stampi con un logo.

Scegli L o M quando

  • Il codice compare su uno schermo: una slide, una pagina web, la conferma di un checkout.
  • L'URL è breve e nulla lo coprirà né lo graffierà.
  • Lo spazio è ridotto e il codice deve restare piccolo, quindi ogni modulo conta.

M è l'impostazione predefinita pratica. Denso Wave afferma che è il livello scelto più spesso, e il nostro articolo sul codice QR che non si scansiona fa la stessa osservazione dal lato dell'help desk: H è l'impostazione predefinita sbagliata per un codice semplice, perché la densità che aggiunge causa più scansioni fallite dei danni da cui protegge.

Una precisazione sui logo: la correzione degli errori ripara i moduli mancanti, non risolve uno scarso contrasto, la sfocatura o un margine ritagliato. Le regole di design per spendere il budget su un logo sono in design del codice QR personalizzato, compreso il motivo per cui i tre quadrati d'angolo restano intatti.

L'esempio pratico fornisce una regola che puoi applicare oggi: riduci il payload prima di alzare il livello. Un codice QR dinamico fa esattamente questo. Invece di codificare la destinazione completa, codifica un link breve, e il link breve reindirizza dove lo punti.

Codificare un link breve ha tre effetti sull'affidabilità:

  1. La griglia resta a una versione bassa, quindi i moduli restano grandi a qualsiasi dimensione di stampa.
  2. Puoi permetterti il livello Q o H per un logo o per l'usura della stampa senza che il codice si gonfi.
  3. I parametri di tracciamento stanno nella destinazione, non nel pattern, quindi cambiare un tag di campagna non obbliga mai a un nuovo codice più denso.

C'è un quarto vantaggio che non ha nulla a che fare con la densità: poiché il codice punta a un link breve, puoi reindirizzarlo altrove in seguito senza ristampare, e ottieni gratis il conteggio delle scansioni. Con un codice statico la destinazione è incorporata nel pattern, quindi l'unico modo per correggere un errore di battitura è stampare di nuovo.

Se vuoi provarlo sui tuoi link, il generatore di codici QR ti permette di impostare il livello per ogni codice, con M come punto di partenza, e i dettagli dei piani sono nella pagina dei prezzi. Creane uno a M e uno a H dallo stesso link breve, stampali a 3 cm e confrontali. Scommetto che farai fatica a distinguerli a occhio, ed è proprio questo il punto.

Una breve checklist prima di stampare

Eseguila in ordine.

  1. Accorcia prima l'URL; tieni i parametri di tracciamento nella destinazione.
  2. Scegli il livello dalla tabella: M per schermi e stampa semplice, Q o H per logo e usura.
  3. Controlla la versione scelta dal tuo generatore. Oltre circa la versione 10 per un URL, chiediti perché il payload sia così lungo.
  4. Mantieni la quiet zone: almeno quattro moduli di bordo bianco su ogni lato.
  5. Stampa alla dimensione finale e scansiona con due telefoni diversi in luce normale.

Il passaggio 5 coglie ciò che nessuna tabella prevede. Un logo che sembrava piccolo sullo schermo può coprire più moduli di quanto si immagini.

Leggi la serie cornerstone

Questo articolo fa parte del cluster dei tutorial, e il suo cornerstone è come creare un codice QR. Per le regole su dimensione e distanza che decidono se la dimensione del modulo è abbastanza grande, vedi quanto deve essere grande un codice QR.

Correlati sul blog

Domande frequenti

Qual è il miglior livello di correzione degli errori per un codice QR?

Il livello M è l'impostazione predefinita sensata: recupera circa il 15% del codice e mantiene piccola la griglia. Denso Wave, l'inventore del formato, afferma che M è il livello scelto più di frequente. Passa a Q o H quando il codice contiene un logo o verrà stampato su qualcosa che si graffia, si piega o resta all'aperto.

Cosa significa il 30% di correzione degli errori su un codice QR?

Significa che un codice di livello H può ancora essere decodificato quando fino a circa il 30% delle sue codeword di dati è illeggibile o coperto. Il codice memorizza dati di parità Reed-Solomon aggiuntivi, e lo scanner li usa per ricostruire ciò che manca. È un tetto al danno riparabile, non una promessa che qualsiasi 30% della superficie possa andare perso.

Un livello di correzione degli errori più alto rende il codice QR più difficile da scansionare?

Indirettamente, sì. I livelli più alti aggiungono dati di parità, quindi lo stesso URL richiede una versione più alta con moduli più numerosi e più piccoli. Alla stessa larghezza di stampa, moduli più piccoli sono più difficili da risolvere per la fotocamera di un telefono. La soluzione è un payload più corto, non un livello più basso su un codice che ha bisogno della protezione.

Mi serve il livello H per inserire un logo in un codice QR?

Usa H, o almeno Q, per qualsiasi codice con un logo al centro. Il logo nasconde dei moduli, e lo scanner li tratta come danni da riparare. Tieni il logo ben sotto un quarto dell'area del codice e lontano dai tre quadrati d'angolo, in modo che all'usura della stampa resti ancora del margine.

Un codice QR danneggiato può ancora essere scansionato?

Spesso sì, entro il limite del livello. Un codice graffiato, sbavato o parzialmente coperto viene decodificato se l'area persa resta entro ciò che il suo livello può riparare e i quadrati d'angolo sono intatti. Un codice di livello L tollera circa il 7% di danno, uno di livello H circa il 30%.

Qual è il livello predefinito di correzione degli errori di un codice QR?

Nello standard non esiste un unico valore predefinito; ogni generatore sceglie il proprio, e M è la scelta più comune. Il playground QR di Elido parte da M, con L, Q e H disponibili dallo stesso controllo.

Prova Elido

Incolla un URL, ottieni un link breve

Senza registrazione. Il link vive 30 giorni. Iscriviti per conservarlo.

Gratis, nessuna registrazione richiesta · 2 al giorno

Prova Elido

Accorciatore di URL ospitato nell'UE: domini personalizzati, analisi approfondite e API aperta. Piano gratuito - senza carta di credito.

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

Continua a leggere