Cyfra kontrolna to ostatnia cyfra kodu EAN/GTIN, obliczona matematycznie z pozostałych cyfr. Jej jedynym zadaniem jest wykrywanie pomyłek - jeśli ktoś źle przepisze albo źle zeskanuje jedną cyfrę, wynikowy kod prawie na pewno nie przejdzie tej kontroli. Dzięki temu skanery i systemy magazynowe od razu odrzucają literówki, zamiast przyjmować błędny numer.
Wzór - ten sam dla każdej długości
Wszystkie kody rodziny GTIN (EAN-8, EAN-13, ITF-14 / GTIN-14, SSCC) używają dokładnie tego samego algorytmu, niezależnie od liczby cyfr:
- Policz cyfry danych od prawej strony, zaczynając od wagi 3 dla ostatniej cyfry.
- Wagi naprzemiennie: 3, 1, 3, 1, 3, 1... aż do pierwszej cyfry.
- Pomnóż każdą cyfrę przez jej wagę i zsumuj wszystkie iloczyny.
- Znajdź najbliższą wielokrotność 10, która jest równa sumie lub większa od niej.
- Cyfra kontrolna = różnica między tą wielokrotnością a sumą.
Przykład: EAN-13
Dane: 590123412345 (12 cyfr). Licząc wagi od prawej (3, 1, 3, 1...):
| Cyfra | 5 | 9 | 0 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Waga | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 |
| Iloczyn | 5 | 27 | 0 | 3 | 2 | 9 | 4 | 3 | 2 | 9 | 4 | 15 |
Suma iloczynów: 5+27+0+3+2+9+4+3+2+9+4+15 = 83. Najbliższa wielokrotność 10 równa lub większa od 83 to 90. Cyfra kontrolna = 90 - 83 = 7. Pełny kod: 5901234123457.
Przykład: EAN-8 (krótszy kod, ten sam wzór)
Dane: 1234567 (7 cyfr). Suma ważona wynosi 60 - to już wielokrotność 10, więc cyfra kontrolna wynosi 0. Pełny kod: 12345670. Ten sam algorytm, krótsze dane - liczba cyfr nie zmienia reguły, tylko liczbę wyrazów w sumie.
Przykład: ITF-14 / GTIN-14 (dłuższy kod)
Dane: 1590123412345 (13 cyfr). Cyfra kontrolna wychodzi 4, pełny kod: 15901234123454. Zasada się nie zmienia - tylko więcej cyfr do przemnożenia i zsumowania.
Przykład: UPC-A (12 cyfr, 11 danych)
Dane: 03600029145. Przy nieparzystej liczbie cyfr danych widać wyraźnie, dlaczego liczenie wag trzeba zaczynać od prawej strony - pierwsza cyfra dostaje tu wagę 3, a nie 1 jak w EAN-13.
| Cyfra | 0 | 3 | 6 | 0 | 0 | 0 | 2 | 9 | 1 | 4 | 5 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Waga | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 |
| Iloczyn | 0 | 3 | 18 | 0 | 0 | 0 | 6 | 9 | 3 | 4 | 15 |
Suma: 0+3+18+0+0+0+6+9+3+4+15 = 58. Dopełnienie do 60 daje cyfrę kontrolną 2, pełny kod 036000291452. Dopisanie zera z przodu (wersja EAN-13 0036000291452) dokłada do sumy 0×1 = 0, więc cyfra kontrolna się nie zmienia - to podstawa zgodności obu formatów opisanej w poradniku EAN-13 a UPC-A.
Jak sprawdzić, czy istniejący numer jest poprawny
Nie trzeba odejmować cyfry kontrolnej i liczyć od nowa. Wystarczy przemnożyć wszystkie cyfry, łącznie z ostatnią, nadając ostatniej wagę 1, przedostatniej 3 i tak dalej. Jeśli suma jest podzielna przez 10, numer jest poprawny. Dla 5901234123457: suma dwunastu cyfr danych z ich wagami to 83, cyfra kontrolna 7 dostaje wagę 1 - razem 90, dzieli się przez 10, numer jest w porządku. Gdyby ktoś przepisał go jako 5901234123475 (zamiana dwóch ostatnich cyfr), na dwóch ostatnich pozycjach zamiast 5×3 + 7×1 mielibyśmy 7×3 + 5×1 - wynik 94, błąd wykryty.
Dokładnie tak działają formularze Allegro, Amazon czy Google Merchant: odrzucają numer z błędną cyfrą kontrolną, zanim w ogóle sprawdzą go w rejestrze GS1. Jeśli widzisz komunikat o „nieprawidłowym EAN", w pierwszej kolejności przelicz ostatnią cyfrę w kalkulatorze.
Co wykrywa ten algorytm, a czego nie
Wagi 1 i 3 nie są przypadkowe. Ponieważ 3 jest względnie pierwsze z 10, zmiana dowolnej pojedynczej cyfry zawsze zmienia sumę o wartość niepodzielną przez 10 - czyli każdy pojedynczy błąd jest wykrywany. Zamiana miejscami dwóch sąsiednich cyfr zmienia sumę o dwukrotność ich różnicy, więc jest wykrywana zawsze z wyjątkiem sytuacji, gdy cyfry różnią się o 5 (np. 27 zamienione na 72 przechodzi niezauważone). Algorytm nie ma też szans wykryć dwóch błędów, które przypadkowo się znoszą. To świadomy kompromis: prosty rachunek, który łapie zdecydowaną większość typowych literówek, a nie pełna korekcja błędów jak w kodach 2D.
| Standard | Cyfr danych | Algorytm |
|---|---|---|
| EAN-8 | 7 | mod 10, wagi 3-1 |
| UPC-A | 11 | mod 10, wagi 3-1 |
| EAN-13 / ISBN-13 / ISSN w EAN | 12 | mod 10, wagi 3-1 |
| ITF-14 (GTIN-14) | 13 | mod 10, wagi 3-1 |
| SSCC (etykieta logistyczna) | 17 | mod 10, wagi 3-1 |
| Stary ISBN-10 | 9 | mod 11, wagi 10-2 (stąd „X") |
| Code-128 | dowolna | mod 103, ważony pozycją, ukryty w symbolu |
Warto pamiętać o tych różnicach przy książkach: stary 10-cyfrowy ISBN miał własny algorytm modulo 11 z możliwym znakiem „X" na końcu. Po konwersji na 13-cyfrowy (prefiks 978) cyfrę kontrolną liczy się od nowa według wzoru GTIN - nasz generator ISBN robi to automatycznie.
Częste pytania
Czy cyfra kontrolna może wynosić 0?
Tak - wtedy, gdy suma ważona jest już wielokrotnością 10, jak w przykładzie EAN-8 powyżej. Zero jest równie dobrą cyfrą kontrolną jak każda inna.
Czy mogę wybrać sobie cyfrę kontrolną?
Nie. Wynika jednoznacznie z pozostałych cyfr. Jeżeli pula numerów z GS1 daje Ci 12 cyfr, ostatnią zawsze doliczasz; jeśli dostałeś już pełne 13-cyfrowe numery, ostatnia jest w nich policzona.
Czy w Excelu da się to policzyć formułą?
Tak, choć formuła jest długa. Dla 12 cyfr w komórce A1 zapisanej jako tekst działa suma iloczynów kolejnych znaków przez wagi, a potem MOD(10 - MOD(suma; 10); 10). Przy większej liczbie numerów wygodniej użyć naszego generatora wielu kodów, który liczy cyfry kontrolne dla całej listy naraz.
Najczęstsze pomyłki
- Liczenie wag od lewej zamiast od prawej. Przy parzystej liczbie cyfr danych (jak 12 w EAN-13) wynik czasem wychodzi ten sam przez przypadek, ale przy nieparzystej długości (np. 7 cyfr EAN-8) da to błędny wynik. Zawsze licz od ostatniej cyfry danych.
- Zapomnienie o dopełnieniu zerami. Jeśli masz niepełny numer (np. 9 cyfr zamiast 12), dopełnij go zerami z lewej strony przed liczeniem - inaczej wagi „się rozjadą" i wynik będzie zły.
- Pomylenie GTIN-13 z GTIN-14. EAN-13 ma 12 cyfr danych, ITF-14 ma ich 13 - to inny punkt startowy dla wag, mimo że algorytm jest identyczny.
Nie chce Ci się liczyć ręcznie? Kalkulator sumy kontrolnej robi dokładnie to, co powyżej, w ułamku sekundy - a generator EAN-13 dolicza cyfrę kontrolną automatycznie przy każdym wygenerowanym kodzie.