6 min de lectureFonctionnalités

Génération de codes QR en masse : du CSV aux fichiers prêts à imprimer

Générez des codes QR en masse depuis une feuille de calcul : créez un lien court par ligne, produisez des fichiers SVG et PNG via une API, puis vérifiez un échantillon avant l'impression.

Ana Kowalska
Marketing solutions engineering
Génération de codes QR en masse : un CSV de destinations transformé en liens courts et rendu en codes QR SVG et PNG prêts à imprimer via une API

La génération de codes QR en masse consiste en deux appels API par ligne et un dossier à la fin. Créez un lien court pour chaque destination, produisez un code QR pour ce lien court, puis écrivez les fichiers SVG et PNG sur le disque. Une feuille de calcul contenant 5 000 produits devient ainsi 5 000 fichiers prêts à imprimer en quelques minutes.

L'outil n'est pas le facteur décisif. C'est ce que le code encode qui compte. Encodez directement la destination et le code est figé dès son envoi à l'impression : une seule URL incorrecte dans un tirage de 5 000 autocollants signifie que tout le tirage est à jeter. Encodez un lien court que vous contrôlez et la destination reste modifiable pour toujours, tandis que chaque code comptabilise discrètement ses propres scans.

Vous créez un seul code plutôt que des milliers ? Comment créer un code QR est le guide le plus simple, et Campagne de codes QR de A à Z couvre l'emplacement et la mesure.

Le pipeline en quatre étapes

Pipeline de génération de codes QR en masse en quatre étapes : lire un CSV de destinations, créer un lien court par ligne, produire le code QR en SVG et PNG, puis vérifier un échantillon imprimé en le scannant

Conservez une colonne id dans le CSV, même si elle semble redondante. Elle devient le nom de fichier, la clé d'idempotence et l'élément de correspondance lorsque l'équipe de design vous renvoie « le code 412 est incorrect ». Sans elle, vous faites la correspondance sur les URL, qui sont longues et faciles à mal saisir.

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 clé d'idempotence est dérivée de la destination : relancer le fichier après avoir corrigé trois lignes ne crée rien en double et ne coûte rien. Cette propriété rend une opération en masse sûre à répéter, et il vaut la peine de bien la comprendre avant de l'appliquer à 5 000 lignes : limites de débit et idempotence explique les mécanismes.

La boucle ci-dessus est séquentielle, ce qui convient jusqu'à quelques centaines de lignes. Au-delà, exécutez environ huit requêtes en parallèle ; les guides Python et JavaScript proposent tous deux un modèle de concurrence limitée que vous pouvez reprendre directement.

Vous voulez l'exécuter ? Créez une clé avec le palier gratuit, exportez ELIDO_API_KEY et faites pointer le script vers un CSV de cinq lignes avant de l'utiliser sur le fichier réel.

Statiques ou dynamiques, à grande échelle

Codes QR statiques encodant la destination comparés à des codes QR dynamiques encodant un lien court, pour un tirage en masse où les destinations peuvent changer

Un code statique n'a qu'un seul avantage : il ne dépend de rien. Aucun domaine à maintenir en ligne, aucun service à continuer de payer. Cela compte pour un code gravé sur une machine qui survivra à votre contrat avec le fournisseur, et presque jamais ailleurs.

Tout le reste favorise le dynamique. Le nombre de scans par code, qui est le seul moyen de comparer les emplacements sur les étagères ou dans les magasins. Une destination que vous pouvez corriger lorsque la page de campagne change. Et des codes plus petits et moins denses, car un lien court ne contient qu'une fraction des caractères d'une URL de produit balisée. Codes QR dynamiques ou statiques propose la comparaison complète.

Les paramètres d'impression qui comptent vraiment

Trois paramètres déterminent si le lot sera scanné dans le monde réel.

Correction d'erreur. Le niveau M compense environ 15 % de dommages et garde le code peu dense. Passez au niveau Q lorsqu'un logo se trouve au centre, que le code sera manipulé, éraflé ou imprimé sur une surface courbe. Le niveau H semble plus sûr, mais ne l'est généralement pas : la redondance supplémentaire ajoute des modules et les codes plus denses sont plus difficiles à scanner dans les petits formats. Le standard QR documente les quatre niveaux.

Format. Le SVG pour l'impression, car il s'adapte à une affiche sans adoucir les bords des modules. Le PNG pour les présentations, les places de marché et tout ce qui refuse les formats vectoriels. Demandez les deux dans une seule requête et vous évitez l'aller-retour lorsque quelqu'un a besoin de l'autre format.

Zone de silence. La marge blanche autour du code fait partie du code. Quatre modules constituent le minimum spécifié, et les graphistes la rognent systématiquement parce qu'elle ressemble à de l'espace perdu. Un code à la bordure trop serrée se scanne mal avec les appareils photo des téléphones bon marché, sans que personne fasse jamais le rapprochement.

Encore une chose à savoir avant de fixer une taille pour tout le lot : la quantité de données détermine la version, et la version détermine le nombre de modules du code. Denso Wave, qui a inventé le format, publie le tableau des versions et des capacités. Un lien court de 30 caractères se situe près du bas du tableau ; une URL de produit balisée de 180 caractères, non, et la différence se traduit par un code visiblement plus dense à taille d'impression identique.

La taille du fichier compte moins que la taille sur l'objet. Quelle doit être la taille d'un code QR ? présente la règle de distance de scan qui détermine les dimensions physiques.

Vérifier avant toute impression

Générez un lot, puis vérifiez cinq codes au hasard. Pas sur votre bureau avec la luminosité maximale de l'écran : imprimez-les à la taille réelle, fixez-en un sur l'étagère ou l'emballage, puis scannez-le depuis l'endroit où se tiendrait un client.

Vérifiez ensuite la redirection elle-même. Exécuter curl -sI sur trois des liens courts confirme qu'ils renvoient une redirection vers la bonne destination et permet de détecter le classique décalage d'une colonne, lorsque la deuxième colonne du CSV a été lue comme la troisième et que chaque code pointe vers le produit voisin. Cette erreur est silencieuse, résiste à toutes les vérifications visuelles et n'est visible que dans la destination.

Conservez le CSV qui a produit le lot, avec l'id, la destination, le lien court et le nom de fichier. Lorsque quelqu'un demandera dans six mois quel code se trouve sur quelle palette, ce fichier donnera la réponse, et le régénérer depuis le tableau de bord demandera beaucoup plus de travail que de le conserver.

Où apparaissent les scans

Une fois les codes en ligne, chacun produit ses propres données séparément. C'est toute la raison d'avoir un code par article plutôt qu'un code partagé : un seul code vous indique que la campagne a fonctionné, tandis que les codes par article vous indiquent quel magasin, quelle étagère ou quel SKU a fonctionné.

Comment suivre les scans de codes QR explique comment lire ces données, et les webhooks pour les événements de lien explique comment envoyer les scans vers vos propres systèmes plutôt que de consulter un tableau de bord. Pour le contexte particulier des produits physiques, les codes QR du passeport numérique produit couvre la version réglementaire du même pipeline.

Lire la série pilier

Cet article s'inscrit dans le cluster fonctionnalités. Commencez par comment créer un code QR pour la version à code unique, puis consultez Campagne de codes QR de A à Z pour la conception de campagne. La page des fonctionnalités de codes QR présente les options de style ignorées par ce script.

À lire aussi sur le blog

Questions fréquentes

Comment générer des codes QR en masse ?

Parcourez un CSV, créez un lien court pour chaque ligne, puis produisez un code QR pour chaque lien court via l'API et écrivez les fichiers sur le disque. Deux appels par ligne et un dossier à la fin. C'est l'encodage du lien court plutôt que de la destination qui permet de modifier chaque code après l'impression.

Les codes QR en masse doivent-ils être statiques ou dynamiques ?

Dynamiques, dans presque tous les cas de génération en masse. Un code statique encode directement la destination : une seule URL incorrecte dans un tirage de 5 000 exemplaires impose de réimprimer. Un code dynamique encode un lien court que vous contrôlez, ce qui permet de corriger la destination ensuite et à chaque code de comptabiliser ses propres scans.

Quel niveau de correction d'erreur utiliser pour des codes QR imprimés ?

Le niveau M est le choix par défaut raisonnable : il compense environ 15 % de dommages tout en gardant le code suffisamment peu dense pour être scanné rapidement. Passez au niveau Q lorsqu'un logo recouvre le centre ou que le code sera placé dans un endroit exposé aux éraflures. Le niveau H vaut rarement le coup, car la densité supplémentaire rend le code plus difficile à scanner dans les petits formats.

Quel format de fichier choisir pour des codes QR en masse ?

Le SVG pour tout ce qui est imprimé, car il s'adapte à toutes les dimensions sans adoucir les bords des modules. Le PNG pour les écrans, les présentations et les importations vers des places de marché qui refusent les formats vectoriels. Générer les deux en même temps ne coûte qu'une requête et vous évite un aller-retour lorsque l'équipe de design demande l'autre format.

Combien de codes QR puis-je générer à la fois ?

Autant que la limite de débit le permet : c'est une question de débit plutôt qu'une limite stricte. Exécutez environ huit requêtes en parallèle, envoyez une clé d'idempotence dérivée de chaque ligne pour qu'une nouvelle exécution ne crée rien en double, et un lot de plusieurs milliers de codes se termine en quelques minutes.

Ai-je besoin d'un code QR distinct pour chaque produit ou emplacement ?

Oui, si vous voulez savoir lequel a été scanné. Un code partagé vous indique que la campagne a fonctionné ; un code par article vous indique quelle étagère, quel magasin ou quel SKU a fonctionné. La version par article ne coûte rien de plus à générer et c'est la seule façon de comparer les emplacements.

Essayer Elido

Collez une URL, obtenez un lien court

Sans inscription. Lien actif 30 jours. Inscrivez-vous pour le garder pour toujours.

Gratuit, sans inscription · 2 par jour

Essayer Elido

Raccourcisseur d'URL hébergé en UE : domaines personnalisés, analyses approfondies et API ouverte. Forfait gratuit - sans carte bancaire.

Tags
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

Lire la suite