Generatore QR online per assemblee

Screenshot

Questo strumento consente la creazione in massa di codici QR e automatizza la loro suddivisione e compressione, accettando come input una lista di nomi con le rispettive classi.

Come output, genera un file zip che include un archivio per ogni classe, contenente i codici QR dei relativi studenti.

L'algoritmo è in grado di correggere automaticamente righe vuote o spazi superflui a fine riga.

-LINK-


Nel mio istituto, in seguito all'introduzione del sistema dei codici QR per segnare le presenze, non si è mai definito un metodo standard per la loro generazione.
Ogni anno si cercava qualcuno tra i maturandi che fosse in grado di crearli per tutti, trovando così ogni volta una soluzione diversa.
Quando è toccato a me, ho colto l'occasione per imparare qualcosa di nuovo.

Sapevo che la persona precedente aveva utilizzato uno script Python, così ho iniziato prendendo come riferimento il mio codice QR dell'anno scorso per tentare di ricrearlo.
Il primo problema è stato che i due codici non combaciavano. Ho provato a rigenerarlo con tutti i metodi tradizionali, ma niente funzionava, nonostante contenesse soltanto del testo semplice.

Dopo qualche ricerca, ho scoperto che i codici QR hanno vari valori di generazione non facilmente visibili, tra cui uno che indica la versione da utilizzare (il numero di moduli), e un altro che specifica il livello di correzione degli errori.
Entrambi non sono impostabili attraverso strumenti di generazione tradizionali.



Struttura QR


A questo punto ho finalmente scoperto perché non combaciavano, evidentemente erano stati scelti dei parametri specifici per ottimizzare la lettura dei codici da un cellulare in situazioni movimentate... avrei potuto ignorare tutto e utilizzare i valori di default, ma ormai ero troppo curioso per abbandonare la ricerca.

Qui è sorto il secondo problema. Seguendo la documentazione ufficiale ho analizzato i codici QR dell'anno precedente, e ho notato che i valori della versione e ECL variavano, ma non mi era ancora chiaro in base a cosa.
Dopo essere finalmente riuscito a ricreare il mio codice QR precedente con Python grazie ad alcuni tentativi, non riuscivo a generarne altri che combaciassero, nonostante stessi usando gli stessi valori.

Infine, dopo giorni di ulteriori tentativi, ho scoperto il segreto.
Il precedente livello di correzione degli errori utilizzato era "M", quindi del 15%, e la versione era il primo numero più piccolo utilizzabile da 1 a 4 (anche 5, se 4 non basta!), a seconda della lunghezza del nome.
È stato questo dettaglio a confondermi così tanto, ovvero che non si trattava di valori fissi.

Appena trovata la soluzione, ho iniziato a creare un semplice generatore QR con python, per poi aggiungere funzionalità in modo da assegnare dinamicamente i valori precedentemente discussi, e per suddividere automaticamente i codici per classe e comprimere tutto in file zip.

Di recente, per semplificare la vita a tutti, l'ho riscritto in Javascript per renderlo utilizzabile direttamente dal mio sito web senza il bisogno scaricare nulla, né tantomeno di impostare localmente un ambiente Python e tutte le librerie necessarie.