Un codice QR di un menu di un ristorante con un alone di caffe su un angolo. Un cartello da giardino sbiadito da tre mesi di luce solare diretta. Un'etichetta da magazzino macchiata di grasso. Tutti e tre continuano a funzionare.
Non e fortuna. Ogni codice QR contiene dati ridondanti che permettono agli scanner di ricostruire le parti danneggiate o mancanti. La specifica ISO/IEC 18004:2024 la definisce correzione errori dei codici QR, ed e parte del formato fin dalla prima standardizzazione nel 2000. Un codice a barre tradizionale con lo stesso danno sarebbe illeggibile.
Punti chiave:
I codici QR utilizzano la correzione errori Reed-Solomon per recuperare i danni fisici, secondo lo standard ISO/IEC 18004:2024.
Quattro livelli: L (7%), M (15%), Q (25%), H (30%). La percentuale si riferisce alle codeword recuperabili, non all'area fisica.
Una correzione piu elevata significa maggiore tolleranza ai danni, ma minore capacita di dati.
I codici QR non restituiscono mai dati errati. Smettono di funzionare in modo controllato quando il danno supera la capacita di correzione.
I codici QR dinamici memorizzano URL di reindirizzamento brevi, quindi il Livello M offre un margine sufficiente per la maggior parte degli utilizzi.
Cos'e la correzione errori dei codici QR?

Pensala come una copia di sicurezza dei dati integrata direttamente nel codice. Quando sporco, graffi o sbiadimento distruggono alcuni dei moduli bianchi e neri, lo scanner utilizza quella copia per colmare le lacune. Il messaggio completo arriva comunque, anche con parti mancanti.
La matematica alla base si chiama correzione errori Reed-Solomon. Irving S. Reed e Gustave Solomon la pubblicarono nel 1960 al MIT Lincoln Laboratory per le comunicazioni satellitari, dove il rumore del segnale corrompe i dati trasmessi. Lo stesso algoritmo e stato poi adottato in CD, DVD, dischi Blu-ray e nei sistemi di trasmissione dati delle sonde Voyager della NASA. Quando DENSO WAVE progetto il codice QR nel 1994, Reed-Solomon fu una scelta naturale. Aveva gia superato la prova dello spazio profondo.
Lo standard dei codici QR specifica quattro livelli di correzione errori. Ogni livello determina quanti dati ridondanti contiene il codice e, come diretta conseguenza, quanti dati totali il codice puo contenere.
I quattro livelli di correzione errori dei codici QR
Ogni codice QR viene generato con uno dei quattro livelli di correzione errori. La tabella seguente mostra cosa recupera ogni livello, quanti dati puo contenere alla dimensione massima (Versione 40, il codice QR piu grande definito nelle specifiche) e per quali situazioni e piu adatto.
Livello | Nome | Recupero | Capacita max (V40) | Ideale per |
|---|---|---|---|---|
L | Low | 7% | 2,953 bytes | Schermi digitali, ambienti puliti |
M | Medium | 15% | 2,331 bytes | Stampa da interni, volantini, menu (impostazione predefinita piu comune) |
Q | Quartile | 25% | 1,663 bytes | Segnaletica esterna, packaging, superfici soggette a usura |
H | High | 30% | 1,273 bytes | Logo sul codice, ambienti industriali e di fabbrica |
Maggiore protezione significa meno spazio di archiviazione. Alla Versione 40, il Livello L contiene 2,953 bytes. Il Livello H ne contiene 1,273. Si tratta di una riduzione del 57% della capacita a favore della resistenza ai danni.
La maggior parte dei generatori utilizza il Livello M come impostazione predefinita. DENSO WAVE conferma che e il livello piu frequentemente selezionato nella pratica. Il Livello M gestisce graffi minori, leggero sbiadimento e impronte digitali senza rendere il codice piu grande del necessario.
Tuttavia, quelle percentuali ISO sono massimi teorici. Nella pratica, i codici tendono a smettere di funzionare prima. L'ingegnere software Huon Wilson ha testato 12.800 configurazioni di codici QR con danni simulati e ha scoperto che i codici di Livello H producevano il 60% in piu di scansioni riuscite rispetto al Livello L. Le soglie pratiche di errore erano circa il 6% per L, il 12% per M, il 18% per Q e il 20% per H. I danni nel mondo reale non si distribuiscono in modo uniforme, quindi il codice raggiunge il suo limite prima di quanto suggerisca la specifica.
Quanto danno puo sopportare un codice QR?

Le percentuali nella tabella si riferiscono alle codeword (unita di dati codificati), non all'area fisica. Danneggiare il 15% della superficie non significa necessariamente corrompere il 15% delle codeword. Il motivo dipende da come i dati sono disposti all'interno della griglia.
Interleaving delle codeword
Per i codici QR piu grandi, i dati codificati vengono suddivisi in piu blocchi Reed-Solomon e poi sottoposti a interleaving prima di essere posizionati nella griglia. Un graffio che attraversa il codice in diagonale non distrugge codeword consecutive. Invece, danneggia una codeword qui, ne salta tre, ne danneggia un'altra la. Il danno si distribuisce su piu blocchi di correzione invece di sovraccaricare un singolo blocco. Ecco perche un graffio lungo e spesso piu sopportabile di un foro profondo in un unico punto.
Rilevamento degli errori contro correzione degli errori
Reed-Solomon puo rilevare il doppio degli errori rispetto a quelli che puo correggere. Al Livello M, l'algoritmo corregge fino al 15% delle codeword corrotte, ma rileva la corruzione fino al 30%. Quando il danno supera la capacita di correzione ma rientra nella soglia di rilevamento, lo scanner riconosce che i dati sono compromessi e non restituisce nulla.
Questa e una funzione di sicurezza. Un codice QR danneggiato non ti inviera mai al sito sbagliato e non addebiterai mai l'importo sul conto sbagliato. Funziona correttamente oppure non restituisce nulla. Per i codici di pagamento e i token di autenticazione, questa distinzione e molto importante.
L'eccezione dei pattern di rilevamento
I tre grandi quadrati agli angoli di ogni codice QR sono i pattern di rilevamento. Lo scanner li utilizza per individuare e orientare il codice. Non sono protetti dalla correzione errori come i moduli dati. Se uno strappo, una piega o un adesivo copre uno dei tre angoli, il codice quasi certamente non funzionera, indipendentemente dal livello di correzione. Nessuna ridondanza puo salvare un codice con un angolo mancante.
Quale livello di correzione errori scegliere?
Ecco cosa scegliere per gli scenari piu comuni.
Stampa da interni (menu, volantini, biglietti da visita): Livello M. Ambienti puliti con contatto fisico minimo. Il Livello M gestisce la macchia o la piega occasionale senza rendere il codice piu grande del necessario.
Superfici esterne o esposte alle intemperie (cartelli da giardino, adesivi per auto, pensiline degli autobus): Livello Q o H. Sbiadimento da raggi UV, pioggia, contatto fisico dei passanti. Questi codici hanno bisogno di un margine di correzione errori maggiore perche i danni si accumulano nel corso di settimane e mesi.
Codici QR con logo o personalizzati: Livello H. Un logo al centro copre intenzionalmente dei moduli dati, tipicamente il 20-30% dell'area del codice. Il margine di correzione del 30% del Livello H assorbe questa copertura. Con un livello inferiore, si rischia. Uno studio dell'AutoID Lab dell'University of Memphis ha testato codici QR personalizzati e ha rilevato che il tasso di lettura medio era del 61,5%, con il peggiore sceso al 9,6%. I codici non modificati raggiungevano circa il 95%. La causa principale di errore era il danno ai pattern di rilevamento negli angoli.
Display digitali (schermi, presentazioni, email): Livello L. Nessun rischio di danno fisico. Il codice esiste come pixel su uno schermo. Il Livello L mantiene il codice compatto e veloce da scansionare.
Codici QR dinamici: il Livello M e solitamente sufficiente. Un codice QR dinamico memorizza solo un breve URL di reindirizzamento (ad esempio, freeqr.to/abc123), non il contenuto completo della destinazione. Meno dati significano meno moduli, il che significa che la correzione errori ha proporzionalmente piu spazio per lavorare.
Nel designer di FreeQR, le quattro impostazioni di correzione errori sono etichettate Low, Medium, High e Highest (corrispondenti a L, M, Q e H). L'impostazione predefinita e Medium. Aggiungendo un logo, l'indicatore di scansionabilita segnala se il logo copre troppi moduli per il livello selezionato. I codici dinamici permettono anche di aggiornare la destinazione senza ristampare.
Un aspetto da considerare: il livello di correzione errori viene impostato al momento della generazione del codice. Non e possibile modificarlo dopo la stampa. Se si sceglie il Livello L e successivamente si sposta il codice all'esterno, l'unica soluzione e un nuovo codice con un livello piu alto. In caso di dubbio, scegliere il Livello M.
Vuoi vedere come funziona? Crea un codice QR gratis su FreeQR e scegli il tuo livello di correzione errori.
FAQ
Cos'e la correzione errori dei codici QR?
Dati aggiuntivi incorporati in un codice QR che permettono agli scanner di ricostruire i moduli danneggiati o mancanti. Il meccanismo utilizza i codici Reed-Solomon, un algoritmo matematico sviluppato originariamente per le comunicazioni satellitari e successivamente adottato nelle specifiche dei codici QR (ISO/IEC 18004:2024).
Quanto puo essere danneggiato un codice QR e continuare a funzionare?
Fino al 30% al Livello H, 25% al Q, 15% al M e 7% al L. Queste percentuali si riferiscono alla proporzione di codeword recuperabili, non all'area fisica del codice. La capacita di sopravvivenza effettiva dipende da dove si verifica il danno e da come interagisce con l'interleaving delle codeword.
Quali sono i quattro livelli di correzione errori?
L (Low, 7%), M (Medium, 15%), Q (Quartile, 25%) e H (High, 30%). La maggior parte dei generatori utilizza M come impostazione predefinita.
Quale livello di correzione errori usare per un logo?
Livello H (30%). Un logo al centro copre tipicamente il 20-30% dei moduli del codice. Il Livello H fornisce allo scanner dati ridondanti sufficienti per ricostruire cio che il logo copre. Utilizzare un livello inferiore con un logo rischia di rendere il codice non scansionabile.
Un codice QR danneggiato puo fornire informazioni sbagliate?
No. Quando il danno supera cio che l'algoritmo puo correggere, lo scanner non restituisce nulla. Si ottiene un risultato vuoto, mai un URL sbagliato o un indirizzo di pagamento errato. Reed-Solomon puo rilevare il doppio degli errori rispetto a quelli che puo correggere, quindi il codice sa quando e troppo danneggiato per essere affidabile.
Scritto da Andy Lee, QR Technology Specialist presso FreeQR.