GS1 Sunrise 2027: Passage aux codes-barres 2D pour le commerce mondial

Catégorie du blog: Code-barres.NET

07.08.2025

GS1 Sunrise 2027 est un projet mondial visant à passer des codes-barres unidimensionnels (1D) EAN/UPC traditionnels aux codes-barres bidimensionnels (2D) afin d’améliorer la transparence, la traçabilité et la sécurité des produits. D’ici fin 2027, les entreprises des secteurs du commerce de détail, de la santé et autres, partout dans le monde, devraient être tenues de mettre en œuvre les nouvelles normes d’identification des produits à leurs points de vente (PDV) et de service (PDS). Déjà en phase de test dans 48 pays, couvrant 88 % du PIB mondial, l'initiative Sunrise 2027 s'impose comme la nouvelle norme du commerce international.

VintaSoft, développeur d'un outil spécialisé pour la reconnaissance de codes-barres - VintaSoft Barcode .NET SDK, considère ces changements comme une opportunité stratégique pour moderniser les processus métier de ses clients et étendre les capacités du SDK dans le nouvel environnement réglementaire.



Qu'est-ce que GS1 Sunrise 2027?

Sunrise 2027 est une initiative de GS1, officiellement annoncée dans les années 2020, visant à garantir que, d'ici 2027, les systèmes de vente au détail et de logistique du monde entier soient capables de scanner et d'interpréter les codes-barres 2D, en plus des codes 1D classiques. L'objectif principal est toutefois de remplacer les formats 1D par des formats 2D plus polyvalents, capables non seulement d'identifier un produit, mais aussi de transmettre des données supplémentaires: date de péremption, numéro de lot, pays d'origine, certificats de qualité, etc.


Pourquoi toute l'industrie change

L'ancien format EAN/UPC s'est avéré limité:

Les codes-barres 2D tels que GS1 DataMatrix et GS1 Digital Link QR résolvent ces problèmes en permettant:


Quel sera l'impact sur les acteurs du marché?

La transition vers les codes-barres 2D, initiée par GS1, affectera la quasi-totalité des acteurs de la chaîne de valeur, des fabricants aux développeurs de logiciels. Ces changements ne constituent pas une simple mise à niveau technique; il s'agit d'une restructuration des processus fondamentaux de la logistique, de la distribution et de l'interaction avec les consommateurs.

Les entreprises manufacturières seront parmi les premières à ressentir l'impact de cette nouvelle norme. Elles devront adapter leurs lignes de production et leurs processus d'emballage pour imprimer les nouveaux codes-barres. Alors qu'auparavant, il suffisait d'apposer un code-barres linéaire avec GTIN sur l'emballage, le format 2D devra désormais inclure beaucoup plus d'informations: date de péremption, numéro de lot, composition et parfois même un lien vers un certificat numérique ou un site web. Tout cela implique une mise à niveau des équipements et de l'infrastructure informatique qui assure la génération et la gestion des nouveaux codes-barres.

Pour les détaillants et les opérateurs logistiques, le principal défi sera d'adapter les terminaux de caisse et les lecteurs de codes-barres d'entrepôt. Bien que la plupart des lecteurs modernes prennent déjà en charge les codes-barres 2D, tous ne sont pas optimisés pour la norme GS1. Il faudra donc non seulement mettre à jour le matériel, mais aussi modifier le logiciel pour qu'il reconnaisse et traite correctement les nouveaux champs de données.

Les développeurs de solutions logicielles, notamment ceux qui créent des systèmes comptables, des ERP, des applications de caisse et des solutions mobiles, doivent également se préparer à l'évolution des formats de codes-barres. Il est nécessaire non seulement d'intégrer la prise en charge des nouveaux systèmes de symboles, mais aussi d'assurer une interprétation correcte de la structure des données conformément aux normes GS1. Cela inclut le traitement des identifiants d'application (IA), l'analyse des champs imbriqués et, dans le cas de l'utilisation du format GS1 Digital Link, l'interaction avec les services web externes. La précision de la reconnaissance est ici primordiale, car une erreur d'interprétation des données peut engendrer des problèmes logistiques, des retours et même des conséquences juridiques.


Qu'est-ce qui rend un code-barres 2D spécial?

Les codes-barres 2D représentent la prochaine évolution des systèmes d'identification automatique. Ils remplacent non seulement les codes-barres linéaires, mais ouvrent également de nouvelles perspectives pour les entreprises, la production et la logistique grâce à leur polyvalence et à la richesse des informations qu'ils contiennent.

Contrairement aux codes-barres 1D (par exemple EAN/UPC), qui ne peuvent contenir qu'un identifiant de produit de base (GTIN), les codes-barres 2D sont capables de transmettre toute une gamme de paramètres nécessaires aux chaînes d'approvisionnement modernes et aux services numériques.

Les principaux avantages des codes-barres 2D sont les suivants:

La transition vers un nouveau système de codes-barres encourage les entreprises non seulement à se conformer aux normes, mais aussi à construire des écosystèmes numériques reliant l’emballage physique et les expériences en ligne.


Étapes de mise en œuvre de GS1 Sunrise 2027

Phase d’information et de participation volontaire

Diffusion des connaissances, projets pilotes, adaptation des systèmes internes, tests du double étiquetage (1D + 2D). Les entreprises ont ainsi le temps de moderniser et de tester les technologies.


Mise en œuvre obligatoire par secteur et région

Transition vers l'utilisation obligatoire des codes-barres 2D pour certaines catégories de produits et certains territoires. L'objectif principal est la mise à jour des équipements de point de vente, la formation du personnel et la garantie de la compatibilité des chaînes d'approvisionnement.


Conformité et intégration complètes

D'ici fin 2027, toutes les entreprises couvertes par la norme devront passer intégralement aux codes-barres 2D, en remplaçant autant que possible les codes EAN/UPC classiques. Mise à jour constante des normes et de leur support.


Défis et solutions pendant la transition

Le passage des codes-barres linéaires traditionnels aux formats 2D représente non seulement une évolution technologique, mais aussi un défi organisationnel. Les entreprises sont confrontées à de nombreux obstacles pratiques, techniques et réglementaires, notamment si leur infrastructure repose encore largement sur des solutions de lecture, d'impression ou de traitement de codes-barres obsolètes.

Les difficultés les plus courantes sont les suivantes:

Malgré ces difficultés, une planification adéquate et le choix des outils appropriés peuvent grandement faciliter la transition.

Solutions clés recommandées:

La transition vers les codes-barres 2D est un projet qui nécessite une approche globale, mais grâce aux outils modernes et aux partenaires compétents, elle devient non seulement réalisable, mais aussi rentable en termes de perspectives de développement commercial.


Comment VintaSoft Barcode .NET SDK aide les entreprises à se conformer à GS1 Sunrise 2027

Le produit de VintaSoft, VintaSoft Barcode .NET SDK, résout les problèmes de reconnaissance rapide et précise des codes-barres unidimensionnels et bidimensionnels, notamment les codes DataMatrix et QR Code. Cela permet aux entreprises de:

La transition vers GS1 Sunrise 2027 favorise la numérisation, la transparence et la sécurité de la chaîne d'approvisionnement moderne. Il est important d'anticiper ces changements et de moderniser les outils de marquage et de reconnaissance, notamment en investissant dans des solutions telles que le VintaSoft Barcode .NET SDK pour une lecture et un traitement efficaces des nouveaux codes-barres 2D.


Voici un code C# qui montre comment générer un code-barres GS1 Digital Link et le reconnaître.
using System;
using System.Text;

using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.SymbologySubsets;
using Vintasoft.Barcode.GS1;
using Vintasoft.Imaging;

/// <summary>
/// Test that shows how to encode the barcode data in GS1 Digital Link format,
/// create image with GS1 Digital Link barcode,
/// read GS1 Digital Link barcode from image and print data stored in GS1 format.
/// </summary>
class GS1DigitalLinkExample
{

    /// <summary>
    /// Runs the test (available barcode types QR, DataMatrix).
    /// </summary>
    public static void TestGS1DigitalLink(BarcodeType digitalLinkBarcodeType)
    {
        // GS1 Digital Link barcode
        GS1DigitalLinkBarcodeSymbologySubset barcodeSubset;
        if (digitalLinkBarcodeType == BarcodeType.QR)
            barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkQR;
        else if (digitalLinkBarcodeType == BarcodeType.DataMatrix)
            barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkDataMatrix;
        else
            throw new NotSupportedException();

        // form the GS1 Application identifiers
        //
        GS1ApplicationIdentifierValue[] aiValues = new GS1ApplicationIdentifierValue[4];
        GS1ApplicationIdentifier ai;
        // 01 - Global Trade Item Number
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("01");
        aiValues[0] = new GS1ApplicationIdentifierValue(ai, "0123456789123C");
        // 310 - Net weight, kilograms
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("310");
        aiValues[1] = new GS1ApplicationIdentifierValue(ai, "0012.55");
        // 30 - Count of Items
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("30");
        aiValues[2] = new GS1ApplicationIdentifierValue(ai, "10");
        // 90 - Company Internal Information
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("90");
        aiValues[3] = new GS1ApplicationIdentifierValue(ai, "ABCabc12345");
        // create GS1 value item
        GS1DigitalLinkValueItem gs1DigitalLinkValue = new GS1DigitalLinkValueItem(new GS1DigitalLink("vintasoft.com", aiValues));

        // create the barcode writer
        using (BarcodeWriter writer = new BarcodeWriter())
        {
            // specify that writer must create output image as 24-bpp image
            writer.Settings.PixelFormat = BarcodeImagePixelFormat.Bgr24;

            // encode GS1 Digital Link barcode
            barcodeSubset.Encode(gs1DigitalLinkValue, writer.Settings);

            // create image with barcode
            using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
            {
                // delete aiValues array
                aiValues = null;

                // read barcode with GS1 value

                // create barcode reader
                using (BarcodeReader reader = new BarcodeReader())
                {
                    // specify that reader must search for GS1 Digital Link barcodes only

                    reader.Settings.ScanBarcodeTypes = BarcodeType.None;
                    reader.Settings.ScanBarcodeSubsets.Add(barcodeSubset);

                    // read barcode from image
                    IBarcodeInfo[] infos = reader.ReadBarcodes(barcodeImage);

                    // gets GS1 value from barcode value
                    gs1DigitalLinkValue = (GS1DigitalLinkValueItem)(infos[0].ValueItems[0]);

                    // print barcode type
                    Console.WriteLine("Barcode Type: {0}", infos[0].BarcodeType);
                    Console.WriteLine();

                    // print GS1 Digital Link URI value
                    Console.WriteLine("GS1 Digital Link URI:\n{0}", gs1DigitalLinkValue.DigitalLink.DigitalLinkUri);
                    Console.WriteLine();

                    // gets a GS1 Application identifiers from barcode value
                    aiValues = gs1DigitalLinkValue.ApplicationIdentifierValues;

                    StringBuilder printableValue = new StringBuilder();
                    // print Application identifiers values
                    for (int i = 0; i < aiValues.Length; i++)
                    {
                        GS1ApplicationIdentifierValue aiValue = aiValues[i];
                        ai = aiValue.ApplicationIdentifier;
                        Console.WriteLine(string.Format("[{0}] {1}", i + 1, aiValue));
                        Console.WriteLine(string.Format("Application identifier   : {0}", ai.ApplicationIdentifier));
                        Console.WriteLine(string.Format("Value                    : {0}", aiValue.Value));
                        Console.WriteLine(string.Format("Data title               : {0}", ai.DataTitle));
                        Console.WriteLine(string.Format("Data content             : {0}", ai.DataContent));
                        Console.WriteLine(string.Format("Format                   : {0}", ai.Format));
                        Console.WriteLine(string.Format("Is contains decimal point: {0}", ai.IsContainsDecimalPoint));
                        Console.WriteLine(string.Format("Is variable length       : {0}", ai.IsVariableLength));
                        Console.WriteLine();
                        printableValue.Append(aiValue.ToString());
                    }

                    // print GS1 printable value
                    Console.WriteLine("Printable GS1 value: " + printableValue.ToString());
                }
            }
        }
    }
}