6 min di letturaFunzionalità

Generazione massiva di QR code: dal CSV ai file pronti per la stampa

Genera QR code in blocco da un foglio di calcolo: crea un link breve per ogni riga, renderizza SVG e PNG tramite un'API e verifica un campione prima di mandare qualsiasi cosa in stampa.

Ana Kowalska
Marketing solutions engineering
Generazione massiva di QR code: un CSV di destinazioni trasformato in link brevi e renderizzato come QR code SVG e PNG pronti per la stampa tramite un'API

La generazione massiva di QR code consiste in due chiamate API per riga e una cartella alla fine. Crea un link breve per ogni destinazione, renderizza un QR code per quel link breve e scrivi su disco i file SVG e PNG. Un foglio di calcolo con 5.000 prodotti diventa 5.000 file pronti per la stampa in pochi minuti.

Lo strumento non è la decisione da prendere. Lo è ciò che il codice codifica. Codifica direttamente la destinazione e il codice è congelato nel momento in cui va in stampa, quindi un solo URL errato in una tiratura di 5.000 adesivi significa buttare via l'intera tiratura; codifica invece un link breve che controlli tu e la destinazione rimane modificabile per sempre, mentre ogni codice registra discretamente le proprie scansioni.

Devi creare un solo codice invece di migliaia? Come creare un QR code è la guida più semplice, mentre Campagna con QR code da zero tratta posizionamento e misurazione.

La pipeline in quattro fasi

Pipeline in quattro fasi per la generazione massiva di QR code: leggere un CSV di destinazioni, creare un link breve per riga, renderizzare il QR code come SVG e PNG e verificare un campione stampato tramite scansione

Mantieni una colonna id nel CSV, anche se sembra ridondante. Diventa il nome del file, la chiave di idempotenza e l'elemento da usare per il confronto quando il team di design risponde "il codice 412 è errato". Senza di essa, il confronto avviene sugli URL, che sono lunghi e facili da digitare in modo errato.

import csv, base64, hashlib, pathlib, os, requests

API = "https://api.elido.app"
HEAD = {"Authorization": f"Bearer {os.environ['ELIDO_API_KEY']}"}
out = pathlib.Path("qr-out")
out.mkdir(exist_ok=True)

with open("products.csv") as f:
    for row in csv.DictReader(f):        # columns: id, destination
        key = hashlib.sha256(row["destination"].encode()).hexdigest()

        link = requests.post(
            f"{API}/v1/links",
            headers={**HEAD, "Idempotency-Key": key},
            json={"destination_url": row["destination"]},
            timeout=10,
        )
        link.raise_for_status()
        short_url = link.json()["short_url"]

        qr = requests.post(
            f"{API}/v1/qr/generate",
            headers=HEAD,
            json={
                "content": short_url,          # the short link, never the destination
                "formats": ["svg", "png"],
                "size": 1024,
                "error_correction": "M",
            },
            timeout=20,
        )
        qr.raise_for_status()
        payload = qr.json()

        (out / f"{row['id']}.svg").write_text(payload["svg"])
        (out / f"{row['id']}.png").write_bytes(base64.b64decode(payload["png"]))
        print(row["id"], short_url)

La chiave di idempotenza deriva dalla destinazione, quindi rieseguire il file dopo aver corretto tre righe non crea duplicati e non costa nulla. Questa proprietà rende sicuro ripetere un processo massivo e vale la pena comprenderla bene prima di puntare il processo a 5.000 righe: rate limit e idempotenza descrive i dettagli tecnici.

Il ciclo qui sopra è sequenziale, il che va bene fino a qualche centinaio di righe. Oltre quel punto, eseguilo in parallelo con circa otto richieste; le guide Python e JavaScript includono entrambe un modello di concorrenza limitata che puoi riutilizzare direttamente.

Vuoi eseguirlo? Crea una chiave con il piano gratuito, esporta ELIDO_API_KEY e punta lo script a un CSV di cinque righe prima di puntarlo a quello reale.

Statici o dinamici, su larga scala

QR code statici che codificano la destinazione a confronto con QR code dinamici che codificano un link breve, per una tiratura massiva in cui le destinazioni possono cambiare

Un codice statico ha esattamente un vantaggio: non dipende da nulla. Nessun dominio da mantenere attivo, nessun servizio per cui continuare a pagare. È importante per un codice inciso su una macchina che resterà in funzione oltre la durata del contratto con il fornitore, e in quasi nessun altro caso.

Tutto il resto favorisce i dinamici. Il conteggio delle scansioni per codice, che è l'unico modo per confrontare le posizioni sugli scaffali o nei negozi. Una destinazione che puoi correggere quando cambia la pagina della campagna. E codici più piccoli e radi, perché un link breve contiene una frazione dei caratteri di un URL di prodotto con tag. QR code dinamici e statici offre il confronto completo.

Impostazioni di stampa che contano davvero

Tre parametri determinano se il batch verrà scansionato nel mondo reale.

Correzione degli errori. Il livello M recupera da circa il 15 percento di danni e mantiene il codice rado. Passa a Q quando un logo si trova al centro oppure il codice verrà maneggiato, graffiato o stampato su una superficie curva. H sembra più sicuro e di solito non lo è: la ridondanza aggiuntiva inserisce più moduli e i codici più densi sono più difficili da scansionare in dimensioni ridotte. Lo standard QR documenta tutti e quattro i livelli.

Formato. SVG per la stampa, perché si adatta a un poster senza ammorbidire i bordi dei moduli. PNG per slide, marketplace e tutto ciò che rifiuta i vettoriali. Richiedili entrambi in una sola richiesta e salti il passaggio aggiuntivo quando qualcuno ha bisogno dell'altro formato.

Zona quieta. Il margine vuoto intorno al codice fa parte del codice. Quattro moduli sono il minimo specificato e i designer lo ritagliano regolarmente perché sembra spazio sprecato. Un codice con un bordo troppo stretto viene scansionato male dalle fotocamere economiche dei telefoni e nessuno collega mai le due cose.

Prima di fissare una dimensione per l'intero batch, c'è un altro aspetto da conoscere: la quantità di dati determina la versione, e la versione determina quanti moduli ha il codice. Denso Wave, che ha inventato il formato, pubblica la tabella delle versioni e della capacità. Un link breve di 30 caratteri si trova nella parte bassa della tabella; un URL di prodotto con tag di 180 caratteri no, e la differenza si vede in un codice visibilmente più denso alla stessa dimensione di stampa.

La dimensione nel file conta meno della dimensione sull'oggetto. Quanto deve essere grande un QR code contiene la regola della distanza di scansione che determina la dimensione fisica.

Verifica prima di mandare qualsiasi cosa in stampa

Genera un batch, poi controlla casualmente cinque codici. Non sulla scrivania a luminosità massima dello schermo: stampali alla dimensione effettiva, attaccane uno allo scaffale o alla confezione e scansiona dal punto in cui si troverebbe un cliente.

Poi controlla il redirect stesso. curl -sI su tre link brevi conferma che restituiscano un redirect verso la destinazione corretta e intercetta il classico errore di una posizione in cui la colonna due del CSV è stata letta come colonna tre e ogni codice punta al prodotto adiacente. Questo errore è silenzioso, supera ogni controllo visivo e si vede solo nella destinazione.

Conserva il CSV che ha prodotto il batch, con id, destinazione, link breve e nome del file. Quando tra sei mesi qualcuno chiederà quale codice si trova su quale pallet, quel file sarà la risposta, e rigenerarlo dalla dashboard richiede molto più lavoro che conservarlo.

Dove compaiono le scansioni

Quando i codici sono attivi, ognuno registra separatamente i propri dati. È proprio questo il motivo per usare un codice per articolo invece di un codice condiviso: un singolo codice dice che la campagna ha funzionato, mentre i codici per articolo dicono quale negozio, scaffale o SKU ha funzionato.

Come tracciare le scansioni dei QR code spiega come leggere questi dati, mentre webhook per gli eventi dei link spiega come inviare le scansioni ai tuoi sistemi invece di controllare una dashboard. Nello specifico per i prodotti fisici, QR code per il passaporto digitale dei prodotti tratta la versione normativa della stessa pipeline.

Leggi la serie principale

Questo articolo fa parte del cluster delle funzionalità. Inizia da come creare un QR code per la versione con un solo codice, poi passa a Campagna con QR code da zero per la progettazione della campagna. La pagina delle funzionalità dei QR code descrive le opzioni di stile che questo script non tratta.

Correlati nel blog

Domande frequenti

Come genero QR code in blocco?

Scorri un CSV, crea un link breve per ogni riga, poi renderizza tramite l'API un QR code per ogni link breve e scrivi i file su disco. Due chiamate per riga e alla fine una cartella. Codificare il link breve invece della destinazione è ciò che mantiene modificabile ogni codice dopo la stampa.

I QR code generati in blocco devono essere statici o dinamici?

Dinamici, in quasi tutti i casi di generazione massiva. Un codice statico codifica direttamente la destinazione, quindi un solo URL errato in una tiratura di 5.000 copie significa ristampare. Un codice dinamico codifica un link breve che controlli tu: la destinazione si può correggere in seguito e ogni codice registra le proprie scansioni.

Quale livello di correzione degli errori devo usare per i QR code stampati?

Il livello M è l'impostazione predefinita più sensata: recupera da circa il 15 percento di danni e mantiene il codice abbastanza rado da poter essere scansionato rapidamente. Passa a Q quando un logo copre il centro o il codice verrà collocato in un punto soggetto a graffi. H raramente vale la pena, perché la densità aggiuntiva rende il codice più difficile da scansionare in dimensioni ridotte.

In quale formato devono essere i QR code generati in blocco?

SVG per tutto ciò che viene stampato, perché si adatta a qualsiasi dimensione senza ammorbidire i bordi dei moduli. PNG per schermi, slide e caricamenti sui marketplace che rifiutano i vettoriali. Generarli entrambi in una volta sola costa una richiesta e fa risparmiare un passaggio quando il team di design chiede l'altro formato.

Quanti QR code posso generare contemporaneamente?

Quanti ne consente il rate limit: è una questione di throughput, non un limite rigido. Esegui circa otto richieste in parallelo, invia una chiave di idempotenza derivata da ogni riga così un nuovo tentativo non crea duplicati, e un batch di diverse migliaia termina in pochi minuti.

Mi serve un QR code separato per ogni prodotto o posizione?

Sì, se vuoi sapere quale è stato scansionato. Un codice condiviso ti dice che la campagna ha funzionato; un codice per articolo ti dice quale scaffale, negozio o SKU ha funzionato. La versione per articolo non costa nulla in più da generare ed è l'unico modo per confrontare le posizioni.

Prova Elido

Incolla un URL, ottieni un link breve

Senza registrazione. Il link vive 30 giorni. Iscriviti per conservarlo.

Gratis, nessuna registrazione richiesta · 2 al giorno

Prova Elido

Accorciatore di URL ospitato nell'UE: domini personalizzati, analisi approfondite e API aperta. Piano gratuito - senza carta di credito.

Tag
bulk qr code generation
generate qr codes from csv
bulk qr code generator api
qr codes at scale
dynamic qr codes bulk
qr code print files

Continua a leggere