Dai dati al disegno
Creare un codice QR comincia scegliendo una modalità di codifica adatta ai dati: numerica, alfanumerica, byte o kanji. Il codificatore converte i dati in bit, li divide in codeword da 8 bit e aggiunge i codeword di correzione degli errori Reed-Solomon al livello scelto. Poi sceglie la versione più piccola che li contiene.
I codeword vengono disposti nella griglia lungo un percorso a zigzag che salta i pattern fissi. Infine il codificatore applica una delle otto maschere per spezzare le grandi aree vuote o le forme ambigue, e registra la maschera e il livello di correzione degli errori nelle informazioni di formato.
- Scegliere la modalità di codifica
- Codificare i dati e aggiungere i codeword di correzione degli errori
- Scegliere la versione (dimensione)
- Posizionare i pattern di ricerca, di temporizzazione e di allineamento
- Inserire i moduli di dati
- Applicare la migliore delle otto maschere e scrivere le informazioni di formato
Dall'immagine della fotocamera ai dati
La decodifica ripete gli stessi passaggi al contrario. Lo scanner trova i tre pattern di ricerca, il cui rapporto 1:1:3:1:1 tra scuro e chiaro si distingue dalla maggior parte delle immagini, e li usa insieme ai pattern di temporizzazione e di allineamento per mappare la griglia. Legge le informazioni di formato, rimuove la maschera e raccoglie i codeword.
La decodifica Reed-Solomon ripara poi i codeword letti male, fino al limite del livello di correzione degli errori. Se i danni sono troppi, il codice non viene letto, invece di restituire dati sbagliati: per questo i codici QR producono di rado risultati illeggibili.
Perché contano dimensione e contrasto
Ogni passaggio dipende dalla capacità della fotocamera di distinguere i moduli scuri da quelli chiari. Moduli piccoli, contrasto scarso, riflessi, sfocatura o una zona di rispetto mancante mettono in dubbio più moduli, e la correzione degli errori può assorbirne solo un certo numero. Tenere i dati corti, il contrasto forte e il margine libero rende il lavoro del decodificatore il più facile possibile.