La strutturazione e la sintassi geometrica dei codici QR sono normate a livello globale dallo standard ISO/IEC 18004:2024 (*Information technology - Automatic identification and data capture techniques - QR Code bar code symbology specification*). Il simbolo QR si presenta come una griglia quadrata composta da moduli neri e bianchi, incastonati tra tre schemi fondamentali di rilevamento angolare (*finder patterns*), moduli di allineamento e bande di temporizzazione (*timing patterns*).
1. Correzione degli Errori tramite Polinomi di Reed-Solomon
Il cuore matematico della tolleranza ai danni fisici della stampa si fonda sull'algebra astratta applicata ai Campi di Galois $GF(2^8)$. L'elaboratore client-side frammenta la stringa di input in blocchi di parole in codice (*codewords* da 8 bit ciascuno) e genera polinomi di parità $E(x)$ dividendo il polinomio dei dati $D(x)$ per un polinomio generatore $G(x)$ definibile come:
$$G(x) = \prod_{i=0}^{t-1} (x - \alpha^i)$$
Dove $\alpha$ rappresenta l'elemento primitivo del campo finito $GF(2^8)$ e $t$ identifica il numero di *codewords* di correzione d'errore da iniettare nella matrice. Lo standard ISO/IEC 18004 stabilisce quattro distinti livelli di ridondanza selezionabili:
| Livello Error Correction |
Recupero Dati Danneggiati (Approx.) |
Trade-off della Capacità Modulare |
Scenario Operativo Ideale |
| L (Low - Basso) |
~7% dei Codewords |
Massima capacità dati; matrice fisicamente più snella e compattata. |
Display digitali puliti, ambienti indoor protetti, payload testuali massicci. |
| M (Medium - Medio) |
~15% dei Codewords |
Capacità bilanciata; costituisce l'impostazione standard di default. |
Stampa su brochure, URL commerciali, packaging pulito e biglietti da visita. |
| Q (Quartile) |
~25% dei Codewords |
Capacità ridotta; produce una griglia QR chiaramente più densa. |
Ambienti logistici esterni, stampa di loghi aziendali centrali di piccole dimensioni. |
| H (High - Alto) |
~30% dei Codewords |
Capacità utile minima per preservare la ridondanza strutturale massima. |
Cantieri in ambienti ostili, etichette soggette ad usura chimica, braccialetti ospedalieri. |
2. Versione della Simbologia e Dimensione della Griglia
A seconda della quantità di dati da codificare e del livello di correzione errore prescelto, la libreria incrementa la "Versione" del simbolo QR, espandendo le dimensioni della griglia quadratica da un minimo di 21x21 moduli (Versione 1) fino a un massimo di 177x177 moduli (Versione 40). La dimensione modulare si calcola algebricamente tramite la formula:
$$\text{Moduli per Lato} = 17 + (4 \times \text{Versione})$$
3. Livello di correzione, capacità e zona di rispetto in questo generatore
La codifica di un codice QR è deterministica: lo stesso contenuto produce sempre la stessa matrice e non richiede numeri casuali. Questo generatore usa sempre il livello di correzione H, che tollera il danneggiamento di circa il 30% delle parole in codice ma riduce la capacità: al massimo 1.273 byte nella Versione 40. Le lettere accentate valgono 2 byte e la libreria aggiunge 3 byte di intestazione UTF-8 quando il testo ne contiene.
Lo standard richiede attorno al simbolo una zona di rispetto chiara larga 4 moduli. L'anteprima della libreria non la include, quindi i file PNG e SVG scaricati la aggiungono automaticamente con il colore di sfondo scelto. L'SVG è vettoriale, con un quadrato per ogni modulo scuro, e si può ingrandire per la stampa senza perdita di nitidezza.