Cosa sono i QRCODE? Storia e funzionamento (aggiornato)

Published on

in

Premessa. Sul mio feed di Youtube e’ comparso un video in inglese che parlava dei qrcode

40 minuti! Tempo utilmente impiegabile meglio in pochi secondi per avere invece una versione automatica e bene impaginata del video, grazie all’estensione che raccomando https://glasp.co/youtube-summary?ref=yt_summary, riportandola su chatgpt e con l’opzione canvas disponibile da pochi giorni, ecco il contenuto del video in italiano e organicamente riassunto come segue:
(Aggiornamento perche’ mi sono accorto che il video e’ molto piu’ ricco quindi ho chiesto una descrizione piu’ approfondita)

Ecco il testo corretto con le correzioni linguistiche e grammaticali necessarie, mantenendo la formattazione richiesta:

Come funzionano i codici QR? (Ne ho costruito uno per scoprirlo)

Quando i codici QR sono stati introdotti per la prima volta, pensavo fossero terribili, che non avrebbero mai preso piede. Questo è un diagramma di flusso dell’epoca che mi risuonava particolarmente. Il problema, a mio avviso, era che i codici QR erano brutti e non significavano nulla per le persone. Preferivo semplicemente vedere un sito web o una parola che potevo cercare su Google. I codici QR sono un linguaggio per le macchine, e io sono un essere umano.

Ma mi sbagliavo. I codici QR si sono rivelati così utili che ora sono onnipresenti, utilizzati in tutto, dai biglietti ai menu dei ristoranti e alla pubblicità. In alcuni paesi, sono il modo più comune per scambiare denaro. La storia dei codici QR è molto umana. L’origine di questi schemi a scacchiera risale in realtà ai nostri primi sforzi di digitalizzare le informazioni.

L’inizio della comunicazione digitale: Samuel Morse

Nel 1825, c’era un rinomato pittore che viveva a New Haven, nel Connecticut, con sua moglie e due figli. La sua grande occasione arrivò quando fu invitato a dipingere un ritratto del Marchese de Lafayette, un eroe della Rivoluzione Americana. Anche se sua moglie aspettava il loro terzo figlio da un momento all’altro, l’opportunità era troppo buona per lasciarsela sfuggire, e si precipitò a Washington D.C., dove Lafayette lo aspettava.

Lì, il pittore scrisse a sua moglie descrivendo il suo primo incontro con Lafayette, concludendo con le parole:

“Scriverò di nuovo presto. Un saluto a tutti i bambini. Con la massima fretta, ma con lo stesso ardente affetto di sempre, il tuo amorevole marito.”

Dopo alcuni giorni senza risposta, un corriere consegnò una lettera che diceva che sua moglie era malata dopo il parto. Preoccupato, il pittore si affrettò a tornare a casa. Viaggiò a cavallo e in carrozza, giorno e notte, riuscendo ad arrivare a New Haven in pochi giorni. Ma era troppo tardi. Sua moglie era morta. Non solo, aveva persino perso il funerale. Il suo corpo era già stato sepolto. Il nome del pittore era Samuel Finley Breese Morse.

Da quel giorno in poi, Morse si dedicò a trovare un modo più rapido per comunicare su lunghe distanze. Ottenne un lavoro alla New York University, dove partecipò a lezioni sull’elettricità, un campo in rapida evoluzione all’epoca. Nel 1836, insieme a Joseph Henry e Alfred Vail, ideò una macchina che poteva inviare impulsi elettrici lungo un filo.

Questo non era il primo telegrafo elettrico, ma era il più semplice. Nel Regno Unito, un altro team aveva installato una serie di circuiti per muovere cinque aghi magnetici che puntavano a lettere e numeri. Il sistema di Morse richiedeva solo un circuito singolo, ma la semplicità dell’apparato richiedeva un metodo più ingegnoso di codifica delle informazioni.

L’invenzione del Codice Morse

Sul circuito, si potevano inviare impulsi brevi o lunghi. Morse li trasformò in punti e linee. Le lettere più comuni potevano essere inviate con una singola pressione del tasto: un punto per la “E” e una linea per la “T”. Le altre lettere furono organizzate per frequenza e assegnate a codici sempre più complessi. Questi simboli dovevano essere stampati al ricevitore su una striscia di carta, ma gli operatori si resero presto conto che potevano riconoscere le lettere solo dal suono.

Questo accelerò la velocità con cui le informazioni potevano essere inviate e ricevute, così il codice Morse divenne uno standard internazionale per la messaggistica rapida. Ampiamente utilizzato nelle comunicazioni militari, marittime e aeronautiche, il segnale universale di soccorso “SOS”… cosa significa? Nulla, semplicemente è facile da inviare e riconoscere in codice Morse.

Il codice Morse rivoluzionò la comunicazione, ma nel secolo successivo avrebbe trasformato un’industria totalmente diversa.

L’evoluzione verso il codice a barre

Alla fine degli anni ’40, Bernard Silver era uno studente di ingegneria alla Drexel University in Pennsylvania. Un giorno, sentì il presidente di una catena locale di supermercati chiedere al decano di ingegneria di trovare un modo per accelerare il processo di checkout. All’epoca, i cassieri dovevano digitare manualmente ogni articolo e il suo prezzo. Un processo così tedioso e ripetitivo che molti cassieri avevano sviluppato la sindrome del tunnel carpale.

Silver raccontò al suo amico Norman Joseph Woodland del problema e insieme iniziarono a sperimentare. Dopo diversi tentativi infruttuosi, Woodland si trasferì in Florida. Un giorno, sulla spiaggia, tracciò nella sabbia alcuni punti e linee del codice Morse, qualcosa con cui era molto familiare come boy scout. Ricorda:

“Ho semplicemente esteso i punti e le linee verso il basso e ne ho fatto linee strette e larghe”,

e così fu creato il primo codice a barre. Da questo umile inizio si sviluppò il codice universale del prodotto, o UPC, capace di memorizzare una semplice stringa di 12 numeri.

Come funzionano i codici a barre

Viene letto scansionando un laser attraverso di esso e verificando quanta luce viene riflessa per leggere le linee nere e bianche, essenzialmente come punti e linee. Una coppia di linee verticali è posta all’inizio, al centro e alla fine per garantire che lo scanner legga correttamente il codice. Il codice è diviso in metà sinistra e destra.

I numeri su entrambi i lati hanno le loro linee nere e bianche invertite in modo che lo scanner possa distinguere tra sinistra e destra, anche leggendo capovolto. Quando viene visualizzato in posizione verticale, i numeri tipicamente specificano il produttore a sinistra e il prodotto a destra. I produttori in realtà pagano grandi somme di denaro per riservare a sé stessi una certa quantità di numeri in modo da poter registrare esclusivamente i loro prodotti.

In questo modo, le 12 cifre di un codice a barre specificano univocamente ogni singolo articolo di drogheria che hai mai acquistato. Questo barattolo di burro di arachidi Jif è identificato dalle stesse 12 cifre ovunque nel mondo si trovi. E tutte le forme di burro di arachidi—liscio, croccante, da mescolare, non da mescolare, senza zucchero, a basso contenuto di sodio—di tutte le marche, ottengono il loro codice a barre unico.

Finiremo mai i codici a barre? Bene, 12 cifre potrebbero combinarsi per fornire (10^{12}), cioè un trilione di diverse sequenze possibili. Dovrebbe essere più che sufficiente, anche se le aziende continuano a produrre cose come Sour Patch Oreos e Mountain Dew Flamin’ Hot. Ma c’è un problema: l’ultima cifra non è indipendente dalle altre.

I creatori del codice a barre erano consapevoli che poteva graffiarsi, macchiarsi o essere manomesso, quindi riservarono l’ultima cifra per verificare che il codice a barre fosse completo. Prendi qualsiasi codice a barre e:

  1. Somma le cifre in posizioni dispari.
  2. Moltiplica questo risultato per tre.
  3. Aggiungi la somma delle cifre in posizioni pari al risultato.
  4. Prendi il resto quando questo numero è diviso per 10.

Se questo resto è zero, allora la cifra di controllo è zero. Altrimenti, la cifra di controllo è 10 meno questo resto.

Se uno scanner non è in grado di leggere una qualsiasi cifra del codice a barre, può utilizzare la cifra finale per calcolare all’indietro quale deve essere utilizzando questo algoritmo. Ma se due cifre sono danneggiate, allora siamo sfortunati. In tal caso, dobbiamo digitare i numeri stampati sotto il codice a barre.

Quindi, senza quell’ultima cifra, il numero di possibilità uniche è (10^{11}) o 100 miliardi di opzioni. Ad oggi, sono stati registrati 1,24 miliardi di codici a barre, un numero che cresce ogni giorno, quindi non ci dureranno per sempre. Ma non è per questo che le persone hanno iniziato a cercare alternative ai codici a barre.

La necessità di maggiori informazioni: l’origine dei codici 2D

Era davvero la quantità di informazioni che un singolo codice a barre poteva memorizzare. 12 cifre da sole potevano identificare un prodotto, ma cosa succede se qualcuno voleva sapere più informazioni, come da dove proveniva quel prodotto?

Nel 1986, il bestiame nel Regno Unito iniziò a mostrare sintomi di una curiosa malattLa necessità di una soluzione più complessa malattia cerebrale, l’encefalopatia spongiforme bovina, o morbo della mucca pazza. Si diffondeva quando il bestiame mangiava mangime contenente prioni, proteine mal ripiegate, e se le persone mangiavano carne bovina contenente tessuto dal cervello o dal midollo spinale del bestiame infetto, potevano contrarre una malattia cerebrale correlata che letteralmente trasforma il cervello in una spugna.

Poiché non esisteva un test per rilevare il morbo della mucca pazza nelle mucche vive, milioni di capi di bestiame furono abbattuti. I funzionari sanitari cercarono un metodo per tracciare le fonti nelle importazioni di carne bovina. Ma con tutte le informazioni che ciò avrebbe richiesto per qualsiasi pezzo di carne, i codici a barre erano insufficienti.

L’inventore americano David Allais cercò di risolvere il problema impilando molti codici a barre uno sopra l’altro. Il risultato, il Code 49, sembrava una libreria. Questo è in realtà il predecessore del PDF417, un codice spesso utilizzato sulle carte d’imbarco delle compagnie aeree. Ma il Code 49 non risolse il problema della quantità di dati. Al massimo, moltiplicava le informazioni che un codice a barre poteva trasportare di poche volte.

Un modo più efficiente era estendere i codici a barre in due dimensioni, creando una matrice di dati. La NASA provò questo nel 1994 con il Vericode, utilizzato per tracciare e identificare le parti dello Space Shuttle. Questo codice era letto da prime fotocamere digitali piuttosto che da laser ed era inizialmente proprietario.

La nascita del codice QR

All’incirca nello stesso periodo, Masahiro Hara, un ingegnere presso un produttore giapponese di componenti automobilistici, DENSO, stava diventando frustrato dal dover scansionare più codici a barre per riempire la stessa scatola di componenti per auto. Hara decise di sviluppare un’alternativa da solo. Prese ispirazione da una fonte insolita.

Per capire come le informazioni sono memorizzate in un codice QR, costruiamo uno noi stessi nel modo in cui Masahiro Hara lo ha concepito per la prima volta, con una tavola di Go. Abbiamo le solite pietre nere e bianche: bianco rappresenta zero, nero rappresenta uno. Codificheremo il link al nostro canale YouTube su questa tavola.

La codifica dei dati in un codice QR

Il primo passo è convertire http://www.youtube.com/veritasium in uno e zero, e lo faremo utilizzando la codifica a byte. La codifica a byte utilizza l’ASCII, che ha le sue radici nel codice Morse. Ogni carattere è assegnato a un numero da 1 a 256. Quindi convertiamo il valore decimale ASCII nella sua forma binaria. Poiché 256 è (2^8), possiamo utilizzare le otto combinazioni di bit binari per rappresentare tutti i caratteri ASCII. Questi otto bit costituiscono un byte di informazione.

La lettera “W” è assegnata al decimale ASCII 119 o 01110111. Facendo lo stesso per tutti i caratteri in http://www.youtube.com/veritasium, ecco come appare la stringa in binario. Questa è lunga 26 caratteri, quindi occupa 26 byte di informazione.

Ora, la nostra tavola è 25 per 25. Questo è noto come codice QR di versione 2, ma ci sono molte dimensioni diverse, tutte leggibili dal tuo telefono. Il codice QR di versione 1 di Hara era 21 per 21, e la versione più grande oggi è 177 per 177. Questo è abbastanza grande da contenere tre kilobyte di informazione. Solo 26 di questi sarebbero stati sufficienti per memorizzare tutte le informazioni che il computer dell’Apollo 11 necessitava per inviare gli esseri umani sulla Luna.

Un programmatore ha persino codificato un videogioco, Snake, in un codice QR di versione 40.

La struttura di un codice QR

L’area intorno a un codice QR deve essere vuota e di colore uniforme. Questa è la zona tranquilla. Una caratteristica distintiva dei codici QR sono i tre schemi quadrati negli angoli. Questi quadrati di posizione consentono al lettore di identificare l’orientamento del codice.

Ora, quasi tutti i codici QR hanno anche un quarto quadrato nell’ultimo angolo, ma è più piccolo e quindi più difficile da individuare. Questo è il pattern di allineamento. Viene utilizzato per riscalare il codice QR quando viene letto da distanze variabili o da angolazioni oblique. La dimensione relativa e la distanza del quadrato di allineamento rispetto ai quadrati di posizione consentono al software di riscalarlo correttamente.

Accanto ai quadrati di posizione ci sono strisce bianche semplici che li isolano dal resto del codice. Queste sono le strisce di temporizzazione, attraversamenti pedonali zebrati che collegano il quadrato di posizione in alto a sinistra con gli altri due. Ogni codice QR ha queste strisce alternate. Dovresti cercarle. I codici QR di tutte le dimensioni sembrano visibilmente uguali, quindi questo dice al tuo telefono quale versione è e, quindi, quanta quantità di dati aspettarsi.

Se ci sono cinque quadrati alternati, è la versione uno. Se ce ne sono nove, è la versione due, e così via. E accanto a quelli ci sono le strisce di formato che contengono le regole su come scansionare il codice. C’è un’altra caratteristica che ogni codice QR ha: questo singolo pixel adiacente al quadrato di posizione in basso a destra, è sempre scuro.

L’archiviazione dei dati nel codice QR

Tutto questo spazio rimanente è per l’archiviazione dei dati. I dati all’interno di un codice QR iniziano sempre nell’angolo in basso a destra. Qui, i primi quattro quadrati contengono quattro bit che specificano il formato dei dati:

  • 0001 se sono solo numeri;
  • 0010 se sono alfanumerici (lettere maiuscole e numeri);
  • 0100 se sono informazioni memorizzate in byte;
  • 1000 per i kanji giapponesi.

I successivi otto bit vengono utilizzati per indicare il numero di caratteri nel nostro messaggio. Quindi, poiché abbiamo 26 caratteri, dovrebbe essere 00011010.

Successivamente, iniziamo a disporre i nostri byte per youtube.com/veritasium, iniziando in celle di otto bit e due colonne. Seguono un modello a zig-zag che si snoda fino all’angolo in alto a sinistra. All’interno di ogni cella che rappresenta un byte, il bit più significativo (corrispondente a (2^7)) è in basso a destra. E il meno significativo (o (2^0)) è all’estremità opposta.

L’aggiunta della correzione degli errori

Ma aspetta un attimo, abbiamo coperto solo circa metà del nostro codice QR. Questo perché tutto questo spazio rimanente è riservato alla ridondanza. Questi byte extra di codice di correzione degli errori ci permettono di ricostruire le informazioni se il codice QR è danneggiato.

I codici QR offrono quattro livelli di correzione degli errori:

  • Basso (L): può essere letto con il 7% del codice mancante;
  • Medio (M): può gestire il 14%;
  • Quartile (Q): 25%;
  • Alto (H): fino al 30%.

Ciò significa che un codice QR potrebbe ancora essere letto correttamente, anche con quasi un terzo di esso mancante. Livelli più alti richiedono più spazio per la correzione degli errori. Quindi sapere quanto del codice è correzione degli errori è vitale. Questa informazione è protetta in due modi.

Duplicazione delle informazioni

Primo, il livello di correzione degli errori è indicato nella striscia di formato, che è presente identicamente in due luoghi. Il modo più semplice per evitare errori è duplicare l’informazione. Quindi, se una parte viene danneggiata, abbiamo una copia nella seconda striscia di formato.

La striscia di formato contiene altri tre bit di informazioni importanti che non approfondiremo qui. Gli altri 10 bit sono progettati per correggere errori nei primi cinque bit.

Codici di Hamming

Per proteggere queste informazioni, vengono utilizzati codici di Hamming. Le parole codice valide sono posizionate il più lontano possibile nello spazio delle possibili combinazioni di bit, in modo che sia possibile rilevare e correggere errori fino a un certo numero di bit errati.

Per i nostri dati principali del codice QR, abbiamo bisogno di uno schema molto più efficiente, uno che non richieda tabelle di ricerca o il raddoppio o il triplo delle dimensioni dei nostri dati.

La correzione degli errori con i codici di Reed-Solomon

Un modo efficace per correggere gli errori è utilizzare i codici di Reed-Solomon, sviluppati dai matematici Irving S. Reed e Gustave Solomon nel 1960. Questi codici consentono sia di controllare che di correggere gli errori con solo un modesto aumento della dimensione dei dati.

I codici Reed-Solomon sono ampiamente utilizzati in varie applicazioni, come nelle comunicazioni spaziali (ad esempio, la sonda Voyager), nei CD e DVD per proteggere i dati dai graffi, e ovviamente nei codici QR.

Il mascheramento dei dati nel codice QR

Una volta che abbiamo costruito il nostro codice QR con i dati e la correzione degli errori, potrebbe capitare che alcune regioni appaiano uniformemente bianche o nere. Questo può confondere i lettori, che si aspettano di vedere un motivo casuale a scacchiera.

Per risolvere questo problema, il codice QR utilizza una tecnica chiamata mascheramento. Ci sono otto diversi schemi di mascheramento. Lo schema di mascheramento specificato nella striscia di formato viene applicato per rimescolare l’aspetto dei pixel del codice QR, rendendolo più “casuale” e quindi più facile da leggere per gli scanner.

L’adozione globale dei codici QR

Inizialmente, i codici QR avevano solo usi industriali. Ma non ci volle molto perché si realizzasse il valore della loro capacità di archiviazione dei dati. Nel 2002, il morbo della mucca pazza riemerse nel Regno Unito. 179 persone morirono dopo aver mangiato carne contaminata, e la gente andò nel panico. Volevano sapere esattamente da dove proveniva la loro carne e come era stata conservata prima di raggiungere il supermercato. Questa volta, il codice QR era disponibile per aiutare.

Ma perché i codici QR hanno così tanto successo? Ci sono molti altri codici a matrice 2D là fuori. Una ragione è che DENSO Wave decise di non esercitare i diritti di brevetto sui codici QR. “Abbiamo reso il brevetto aperto a tutti, il che ha reso il codice QR così popolare”, affermarono.

DENSO invece optò per monetizzare e vendere scanner di codici QR. Con l’ascesa degli smartphone, la maggior parte delle persone avrebbe presto portato uno scanner di codici QR in tasca. Ma inizialmente, le app per la lettura dei codici QR erano di terze parti e piuttosto di nicchia. Nel 2017, Android e Apple integrarono i lettori di codici QR direttamente nelle loro app fotocamera, e l’uso di questi codici decollò.

La pandemia di COVID-19 diede anche ai codici QR una spinta a livello mondiale. Improvvisamente, ristoranti e venditori volevano un modo senza contatto per distribuire menu e informazioni sui prodotti. Il pagamento senza contatto utilizzando i codici QR decollò in India e Cina. Oggi, l’India vede oltre 12 miliardi di transazioni abilitate da codici QR al mese.

Sfide e futuro dei codici QR

Ma la loro enorme diffusione ha anche creato problemi. Alcuni truffatori hanno utilizzato i codici QR per cercare di frodare le persone che li leggono. Come per qualsiasi cosa su Internet, è importante prestare particolare attenzione alla sicurezza. Controlla dove un codice QR scansionato ti sta portando prima di cliccare effettivamente su un link.

Per quanto riguarda il futuro, se la possibilità di esaurire i codici a barre UPC è remota, per i codici QR è impossibile. Il numero di codici QR unici di versione 1 utilizzando il livello di ridondanza più basso è (2^{152}). Questo è circa 10 volte il numero totale di configurazioni legali della scacchiera, che è anche il motivo per cui una distribuzione casuale di pixel riempiti in un pattern di codice QR generalmente non può essere interpretata come un messaggio.

Hai scansionato innumerevoli codici QR, e quando scansionerai il prossimo, avrai una migliore comprensione di come funziona. Ma hai mai pensato a cosa significa effettivamente “QR”? “Quick Response”, ovvero Risposta Rapida.

Conclusione

I codici QR sono diventati una parte integrante della nostra vita quotidiana. Da semplici strumenti industriali a mezzi universali di comunicazione e transazione, hanno rivoluzionato il modo in cui interagiamo con il mondo digitale. Capire come funzionano non solo soddisfa la curiosità, ma ci permette anche di utilizzarli in modo più consapevole e sicuro.

Leave a comment


Benvenuto su Salahzar.com

Qui trovi analisi critiche sull’intelligenza artificiale e le sue implicazioni sociali, scritte da chi viene da una impostazione umanistica e ha passato vent’anni a costruire mondi virtuali prima che diventassero “metaverso”.

Niente hype da Silicon Valley o entusiasmi acritici: sul tavolo ci sono le contraddizioni dell’innovazione tecnologica, i suoi miti fondativi, le narrazioni che usiamo per darle senso. Dai diari ucronici (storie alternative come strumento per capire i nostri bias cognitivi) alle newsletter settimanali sugli sviluppi dell’AI che richiedono aggiornamenti continui perché i trimestri sono già preistoria.

Se cerchi guide su come “fare soldi con ChatGPT” o liste di prompt miracolosi, sei nel posto sbagliato. Se invece ti interessa capire cosa sta succedendo davvero – tra hype, opportunità concrete e derive distopiche – sei nel posto giusto.

Umanesimo digitale senza retorica, analisi senza paternalismi, ironia senza cinismo.


Join the Club

Stay updated with our latest tips and other news by joining our newsletter.