Tipi di codici a barre

Cifra di controllo dei codici a barre: come si calcola (EAN-13, UPC-A, GTIN-14, SSCC, Code 39, Code 128)

La cifra di controllo è l'ultima cifra di un codice GS1 (EAN, UPC, GTIN, SSCC) e si calcola così: partendo dalla cifra più a destra dei dati, moltiplica alternativamente per 3 e per 1, somma tutto e sottrai il risultato dal multiplo di 10 successivo. Per 800123456789 la somma è 103 e la cifra è 7: 8001234567897.

In breve: per calcolarla senza errori usa il calcolatore della cifra di controllo (EAN-8, EAN-13, UPC-A, GTIN-14, SSCC). Qui sotto trovi l'algoritmo con esempi svolti, utile per capire perché un codice viene rifiutato o per implementarlo in un software.

L'algoritmo mod 10 GS1

  1. Prendi le cifre dati, cioè tutto il codice tranne la cifra di controllo.
  2. Assegna i pesi da destra: la cifra più a destra pesa 3, la precedente 1, poi 3, poi 1, e così via.
  3. Moltiplica e somma tutti i prodotti.
  4. Calcola la cifra: (10 meno il resto della somma diviso 10). Se il resto è 0, la cifra di controllo è 0.

Partire da destra è il trucco che rende l'algoritmo identico per tutte le chiavi GS1: EAN-8, UPC-A, EAN-13, GTIN-14 e SSCC usano gli stessi pesi a partire dall'ultima cifra dati. Per l'EAN-13, contando da sinistra, i pesi risultano 1, 3, 1, 3...; per l'UPC-A, contando da sinistra, 3, 1, 3, 1... È lo stesso schema visto da due lati.

Esempio svolto: EAN-13

Dati: 800123456789 (12 cifre). Pesi da sinistra 1, 3, 1, 3... (equivalenti a 3, 1 partendo da destra).

Calcolo della cifra di controllo per 800123456789
PosizioneCifraPesoProdotto
1818
2030
3010
4133
5212
6339
7414
85315
9616
107321
11818
129327

Somma: 8 + 0 + 0 + 3 + 2 + 9 + 4 + 15 + 6 + 21 + 8 + 27 = 103. Resto della divisione per 10: 3. Cifra di controllo: 10 − 3 = 7. Codice completo: 8001234567897.

Scorciatoia utile a mano: somma le cifre in posizione pari (0+1+3+5+7+9 = 25) e moltiplica per 3 (75), poi aggiungi le cifre in posizione dispari (8+0+2+4+6+8 = 28). Totale 103, stesso risultato.

EAN-8, UPC-A, GTIN-14 e SSCC

EAN-8

Dati 9638507. Da destra con pesi 3, 1: (7+5+3+9) × 3 = 72, più (0+8+6) = 14. Totale 86, resto 6, cifra 4. Codice: 96385074.

UPC-A

Dati 03600029145 (11 cifre). Le posizioni dispari da sinistra pesano 3: (0+6+0+2+1+5) × 3 = 42; le pari pesano 1: 3+0+0+9+4 = 16. Totale 58, resto 8, cifra 2. Codice: 036000291452. Approfondisci in UPC-A e UPC-E.

GTIN-14 (ITF-14, cartoni)

Dati 1800123456789: indicatore 1 seguito dalle prime 12 cifre dell'EAN-13 del prodotto, senza la sua cifra di controllo. Da destra con pesi 3, 1: (9+7+5+3+1+0+1) × 3 = 78, più (8+6+4+2+0+8) = 28. Totale 106, resto 6, cifra 4. Codice: 18001234567894. Nota che non è la 7 dell'EAN-13: la cifra va sempre ricalcolata. Vedi ITF-14.

SSCC (unità logistiche)

Dati (17 cifre): estensione 3, prefisso aziendale 8001234, seriale 000000001, cioè 38001234000000001. Da destra con pesi 3, 1: le cifre con peso 3 sono 1, 0, 0, 0, 0, 3, 1, 0, 3 (somma 8, per 3 fa 24); quelle con peso 1 sono 0, 0, 0, 0, 4, 2, 0, 8 (somma 14). Totale 38, resto 8, cifra 2. SSCC: 380012340000000012, in GS1-128 con AI (00). Vedi GS1-128 e Application Identifier.

I codici con prefisso 8001234 usati negli esempi sono illustrativi. Per i tuoi prodotti usa il prefisso aziendale assegnato da GS1 Italy.

Code 39 (mod 43) e Code 128 (mod 103)

Code 39: facoltativa

Ogni carattere ha un valore (0-9 = 0-9, A-Z = 10-35, - = 36, . = 37, spazio = 38, $ = 39, / = 40, + = 41, % = 42). Somma i valori e prendi il resto della divisione per 43. Per AB-12: 10 + 11 + 36 + 1 + 2 = 60; 60 mod 43 = 17, cioè H. Il codice diventa AB-12H. Il controllo è facoltativo: il lettore lo verifica solo se glielo chiedi. Dettagli in Code 39.

Code 128: obbligatoria e invisibile

Valore dello start più ogni carattere moltiplicato per la sua posizione, modulo 103. Per ABC in set B: 104 + 33×1 + 34×2 + 35×3 = 310; 310 mod 103 = 1. La calcola il software che genera il codice, il lettore la verifica e non la trasmette mai: non compare nei dati né nel testo stampato. Vedi Code 128.

Come si comporta il lettore

Cifra di controllo per simbologia: verifica e trasmissione
SimbologiaPresenzaVerifica del lettoreTrasmessa?
EAN-13, EAN-8, UPC-AObbligatoriaSempreDi solito sì, disattivabile
UPC-EObbligatoria (implicita nella codifica)SempreDi solito sì, disattivabile
ITF-14Obbligatoria (parte del GTIN)Se attivataDeve esserlo
Interleaved 2 of 5 genericoFacoltativaSe attivataConfigurabile
Code 39FacoltativaSe attivataConfigurabile
Code 128, GS1-128Obbligatoria (mod 103)SempreMai
QR, Data Matrix, PDF417Correzione errori internaSempreMai

Nel GS1-128 e nel GS1 DataMatrix la cifra mod 10 del GTIN o dell'SSCC fa parte dei dati e viene quindi trasmessa, mentre il controllo del simbolo resta interno.

Errori comuni e cosa succede alla lettura

  • Etichetta stampata con cifra di controllo sbagliata (EAN o UPC): il lettore non la legge affatto, spesso senza beep. Molti pensano a un guasto: vedi il lettore legge solo alcuni codici.
  • GTIN-14 ottenuto aggiungendo l'indicatore senza ricalcolare: 18001234567897 è errato, quello giusto è 18001234567894.
  • Trasmissione della cifra disattivata: il gestionale riceve 12 cifre invece di 13 e non trova l'articolo.
  • Verifica Code 39 attivata su codici che non la contengono: tutte le letture vengono scartate.
  • Codici a peso variabile (prefisso 2): oltre alla cifra di controllo finale alcuni schemi nazionali prevedono una cifra di controllo interna sul prezzo; dipende dalla struttura scelta dal distributore. Vedi codici a peso variabile.

Domande frequenti

La cifra di controllo protegge da tutti gli errori?

Il mod 10 GS1 rileva qualsiasi errore su una singola cifra e la maggior parte degli scambi tra cifre adiacenti, ma non tutti: per esempio non rileva lo scambio di due cifre adiacenti che differiscono di 5. Per questo la verifica a livello di simbolo resta importante.

Come implemento il calcolo in Excel?

Con una formula che moltiplica ogni cifra per il peso 3 o 1 partendo da destra, somma e applica il modulo 10. Per evitare errori di formato tratta il codice come testo, non come numero: vedi lettura in Excel e Google Fogli.

Posso far trasmettere al lettore la cifra di controllo del Code 128?

No: per lo standard il carattere di controllo del Code 128 non fa parte dei dati e i lettori non lo trasmettono.

Fonti e riferimenti

  • GS1 General Specifications, calcolo della cifra di controllo delle chiavi GS1, GS1
  • ISO/IEC 15420 (EAN/UPC), ISO/IEC 16388 (Code 39), ISO/IEC 15417 (Code 128), ISO
  • GS1 Italy, gestione dei codici GTIN e SSCC, gs1it.org

Altro in Tipi di codici a barre

Tutta la sezione Tipi di codici a barre