
I codici QR, analogamente ai codici a barre di cui sono una evoluzione, trasmettono informazioni attraverso un codice grafico di pixel in bianco e nero. Se un codice a barre è unidimensionale, i codici QR sono invece bidimensionali, cioè l’informazione è veicolata sia dalla lettura della posizione orizzontale che verticale dei pixel, e la loro flessibilità e la robustezza garantiscono che rimarranno un formato molto diffuso nel prossimo futuro.
Un essere umano potrebbe decodificare parti di un codice QR e tradurne manualmente il contenuto, anche se il processo sarebbe generalmente noioso e richiederebbe molto tempo visto che un codice QR può contenere molte più informazioni rispetto a quelle in un codice a barre UPC.
I codici QR possono essere decodificati anche da qualsiasi smartphone o scanner QR e possono contenere qualsiasi stringa di testo, come ad esempio un indirizzo web che una volta decodificato consente di aprire il browser direttamente con quella URL. A differenza dei codici a barre i codici QR includono al loro interno anche una componente di controllo degli errori, il che significa che possono essere decodificati con successo anche se alcune loro parti sono illeggibili.
I codici QR sono inoltre robusti e duraturi, con una capacità e un’affidabilità maggiori sia rispetto ai codici a barre che sostituiscono che rispetto alle bande magnetiche non essendoci il rischio di smagnetizzazione, ed il codice può essere decodificato sia manualmente che con un lettore ottico.
Queste caratteristiche hanno incoraggiato sia agenzie governative che società private ad adottare codici QR da utilizzare, ad esempio, su documenti di viaggio, passaporti e licenze, in genere duplicando le informazioni in un formato leggibile a macchina. I codici QR sono anche ampiamente utilizzati nelle pubblicità per fornire collegamenti rapidi a risorse web o download di applicazioni. È inoltre possibile trovare codici QR utilizzati per link di pagamento, one-time-password, login Wi-Fi e centinaia di altre applicazioni specifiche.
Anatomia di un codice QR:

L’elemento visivamente più distinguibile di un codice QR sono i blocchi quadrati utilizzati per orientarlo quando viene scansionato dal lettore. Questo permette di scansionare il codice in qualsiasi orientamento, anche capovolto, e di trasmettere comunque un messaggio corretto. Questi quattro blocchi (tre negli angoli e uno incorporato in basso a destra) appaiono in ogni codice e permettono di decodificarlo correttamente in qualsiasi orientamento.
Intorno a questi blocchi vengono codificati la versione del formato, la versione di controllo degli errori e la maschera di decodifica. Il codice QR è poi circondato da un’area di spazio bianco chiamata “quiet zone” che aiuta il lettore ad identificare i bordi del codice stesso.
I codici QR possono essere di diverse dimensioni ed il più grande, che misura 177 x 177, contiene fino a 1.264 caratteri di testo ASCII. La dimensione più comunemente usata dei codici QR è compresa tra 29 x 29 e 33 x 33 e può contenere circa 50 caratteri ASCII. Tutte le dimensioni sono compatibili con i moderni dispositivi di lettura come gli smartphone.
Anatomia di un codice QR: Error-Checking e Masking:

Il numero di bit per il controllo degli errori è determinato dal livello di controllo degli errori impostato, chiamato livello EDC. A seconda del livello EDC utilizzato è possibile recuperare un numero diverso di caratteri persi o mancanti, ma maggiore è il livello di controllo degli errori, minore è lo spazio a disposizione per contenere il messaggio. La maggior parte dei generatori di codici QR impiega un adeguato livello di correzione degli errori per la lunghezza e le dimensioni del messaggio trasportato:
L (Basso) Il 7% dei caratteri può essere ripristinato.
M (Medio) Il 15% dei caratteri può essere ripristinato.
Q (un quarto) Il 25% dei caratteri può essere ripristinato.
H (Alto) Il 30% dei caratteri può essere ripristinato.

I bit sono poi mascherati per garantire che i dati siano espressi in modo efficiente (evitando tutti zeri o tutti uno ad esempio). Questa maschera è rappresentata come una stringa binaria che viene combinata matematicamente con il messaggio per produrre il codice QR. Questa azione non codifica il messaggio e la “chiave” necessaria per decodificare il mascheramento è inclusa nel codice QR stesso.
Leggere un codice QR:

Un codice QR viene letto a partire dall’angolo in basso a destra. I pixel vengono letti a gruppi di 8 ed a seconda di come viene codificato il codice QR questi modelli di bit saranno collegati a caratteri diversi. Mentre l’ASCII è probabilmente la codifica più comune, la specifica include anche opzioni per numeri e altre codifiche. Il modello a quattro bit in basso a destra del codice QR (contrassegnato da “Enc” nel diagramma precedente) determina come saranno decodificati i bit.