SYMBOLIKA KODU KRESKOWEGO EAN-13 barcode

Historia | Składniki | Kodowanie EAN | Obliczanie Cyfry Kontrolnej | Numery GTIN-13 dla towarów o zmiennej ilości
Cyfra Kontrolna Wagi lub Ceny | Tablica Kodowania | Tablica Parzystości | Przykład | Przykład kodu w Turbo Paskalu

  Historia kodu EAN-13

System wywodzi się z USA i został opracowany przez Uniform Code Council, Inc. w 1973 roku. UCC przyjęło wówczas dwunastocyfrowy numer i pierwsze kody kreskowe na otwartym rynku zaczęto skanować w 1974 roku. Po sukcesie systemu UPC, utworzono European Article Numbering Association w 1977 roku, z zadaniem opracowania kompatybilnego systemu, który mógłby być stosowany poza Ameryką Północną. System EAN został pomyślany jako odmiana systemu UCC i zasadniczo wykorzystuje numery trzynastocyfrowe.

Kod EAN-13 został zrobiony przez International Article Numbering Association (IANA) na podstawie standardu UPC-A, przez rozszerzenie z jednej do dwóch cyfr systemu numerowego. Ten system numerowania stał się de facto kodem kraju. Ale ze względu na liczbę państw na świecie konieczne było w wielu przypadkach wydłużenie kodu kraju do 3. cyfr, i tak Polska ma kod 590. Wprowadzono też kody nie oznaczające kraju, np. kod 290 oznacza towary ważone w sklepach.

Wizualną różnicą między kodem kreskowym EAN-13 i kodem UPC-A jest to, że cyfra kontrolna jest umieszczona pod kodem kreskowym zamiast na prawo od niego, ale nie powoduje to różnic w samym kodowaniu.

Weźmy dla przykładu, kod UPC-A "075678164125". Ten sam kod wyrażony jako EAN-13, byłby "0075678164125". Jak można zauważyć dodano "0" na początku kodu. Porównajmy oryginalny kod UPC-A (górny) z kodem EAN-13 (dolny):

Na pierwszy rzut oka oba kody kreskowe wyglądają inaczej. W kodzie UPC-A występują cyfry po prawej i po lewej od kodu kreskowego (cyfra 0 kodu kraju i cyfra kontrolna 5), a pod paskami są dwie grupy po 5 cyfr (kod wytwórcy i kod produktu). W symbolu EAN-13, nie występuje cyfra kontrolna na prawo od 'kodu kreskowego', oraz liczby pod 'kodem kreskowym' składają się z dwóch grup po 6 cyfr każda.
Jednakże, jeśli przyjrzymy się samym kodom kreskowym to zobaczymy że, paski i przerwy są identyczne w UPC-A i EAN-13. Jedyną różnicą jest położenie liczb czytanych przez człowieka.

  Składniki kodu kreskowego EAN-13

Typowy kod kreskowy EAN-13 wygląda tak:

Kod liczbowy EAN-13 składa się z czterech obszarów: 1) system numerowania, 2) kod wytwórcy, 3) kod produktu, 4) cyfra kontrolna. Pierwsza cyfra systemu numerowego jest drukowana na lewo od kodu kreskowego, a druga cyfra systemu jest drukowana jako pierwsza cyfra 6-cio cyfrowej grupy poniżej lewej części kodu kreskowego, kod wytwórcy daje następne cyfry tej grupy. Kod produktu stanowi pierwsze 5 cyfr 'prawej' grupy poniżej kodu kreskowego, a cyfra kontrolna stanowi 6-tą cyfrę tej grupy.
Uwaga: ze względu na zmienną długość systemu numerowego, zmienną długość kodu wytwórcy i zmienną długość kodu produktu, podział ten należy traktować czysto teoretycznie.

System numerowy: system numerowy składa się z dwóch cyfr (czasami trzech cyfr) identyfikujących władze kraju (lub regionu gospodarczego) nadające kod wytwórcy. Jakikolwiek system numerowy zaczynający się od cyfry 0 jest kodem liczbowym UPC-A. Zatwierdzone systemy numerowe podano w Tabeli systemów numerowych.

Kod wytwórcy: Kod wytwórcy jest unikalnym kodem przydzielonym każdemu wytwórcy przez 'władzę numerową' właściwą dla systemu numerowego. Wszystkie produkty produkowane przez daną firmę będą używały tego samego kodu wytwórcy oraz różnych kodów produktu.
EAN używa 'kodów wytwórcy zmiennej długości'. Przydzielając stałej długości 5-io cyfrowego kodu wytwórcy, tak jak to dotychczas robił UCC, oznacza że każdy wytwórca może mieć do 99999 kodów produktu. Wielu producentów nie ma tylu produktów, co oznacza setki a nawet tysiące potencjalnych kodów się marnuje u producentów, którzy produkują tylko kilka produktów. Tak więc, jeśli producent wie, że będzie potrzebował tylko kilka kodów, EAN może mu przydzielić dłuższy kod producenta zostawiając mniej miejsca na kody produktów. Daje to efektywniejsze użycie kodów producenta i produktów.

EAN-13  system
numerowy
 numer
wytwórcy
 numer
produktu
 cyfra
kontrolna
XXX  XXXX XXXXX   K
XXX  XXXXX XXXX  K
XXX  XXXXXX XXX   K
XXX  XXXXXXX XX   K

Uwaga: Na podstawie numeru EAN-13 można też zidentyfikować polskiego producenta na stronie www.gepir.ean.pl/gepir_pl.htm (pod warunkiem, że przeglądarka obsługuje XML).
Dla towarów z Austrii, Danii, Niemiec, Polski i chyba z całej Europy producenta można zdekodować (nazwa firmy, adres, tel, fax, email) na stronie GS1 Germany www.gepir.de/v31_client/gtin.aspx

Kod produktu: Kod produktu jest unikalnym kodem przydzielonym przez wytwórcę. W przeciwieństwie do kodu wytwórcy, wytwórca ma wolną rękę przy przydzielaniu kodu produktu do swoich wyrobów, bez konsultacji z innymi wytwórcami. Ponieważ EAN gwarantuje, że pierwsza część kodu jest unikalna, to wytwórca musi się tylko upewnić, że do nowych produktów nie używa kodów produktu używanych wcześniej do starych produktów.

Cyfra kontrolna: Cyfra kontrolna jest dodatkową cyfrą w numerze używaną do sprawdzenia, że kod kreskowy został prawidłowo zeskanowany. Ponieważ skanowanie może dać błędne dane z powodu zmiennej prędkości skanowania, błędów w druku kodu i wielu innych przyczyn, przydatne może być sprawdzenie, że pozostałe cyfry kodu kreskowego zostały poprawnie wczytane. Cyfra kontrolna jest obliczona na podstawie pozostałych cyfr kodu kreskowego. Jeśli cyfra kontrolna obliczona w oparciu o pozostałe cyfry kodu kreskowego ma wartość taką jak zeskanowana cyfra kontrolna, to jest duże prawdopodobieństwo, że kod kreskowy został poprawnie zeskanowany. Metoda obliczania cyfry kontrolnej będzie pokazana dalej na stronie.

  Kodowanie EAN-13 (i UPC-A)

Kodowanie kodu kreskowego EAN-13 (i UPC-A) jest względnie nieskomplikowane. Aby zakodować ciąg cyfr jako kod kreskowy EAN-13, najpierw należy obliczyć cyfrę kontrolną dla danego ciągu, a następnie całość, włączając w to cyfrę kontrolną może być zamieniona w sekwencję czarnych i białych pasków. Służy do tego wiele komercyjnych programów, ale można też skorzystać z darmowego i prostego generatora kodów kreskowych EAN-13 on-line
Są też dostępne fonty do drukowania kodów kreskowych - wytyczne EAN nie zalecają jednak korzystania z nich. Nawet jeśli zdecydujemy się na skorzystanie z darmowego fontu kreskowego to aby wygenerować prawidłowy kod paskowy musimy zrozumieć i zastosować Tablice Kodowania poniżej.

  Obliczanie Cyfry Kontrolnej

Cyfra kontrolna umożliwia weryfikację poprawności wczytania ciągu cyfr.
Obliczanie cyfry kontrolnej oparte jest na algorytmie szerzej opisanym na stronie ISBN, ISMN, ISSN, EAN13, EAN8. Tutaj można podać oryginalny opis liczenia cyfry kontrolnej.
Przyjmujemy, że 12-ta cyfra kodu (pierwsza z prawej) jest nieparzysta. Następnie poruszamy się w lewo zmieniając na przemian parzyste - nieparzyste. Liczymy sumę cyfr na nieparzystych pozycjach, a następnie dodajemy do tej sumy wartości cyfr na parzystych pozycjach pomnożone przez liczbę 3.

Kroki obliczenia cyfry kontrolnej są następujące:

  1. Przyjmujemy, że cyfra najbardziej z prawej jest na pozycji nieparzystej, i poruszając się w lewo przypisujemy kolejnym cyfrom nieparzysty/parzysty.
  2. Sumujemy cyfry na pozycjach nieparzystych i mnożymy wynik przez 3.
  3. Sumujemy cyfry na pozycjach parzystych.
  4. Sumujemy wyniki z punktu 2 i 3.
  5. Cyfra kontrolna jest liczbą, która jeśli się ją doda do sumy obliczonej w punkcie 4, da liczbę równo podzielną przez 10.
  6. Jeśli suma obliczona w punkcie 4 jest równo podzielna przez 10, to cyfrą kontrolną jest "0" (a nie 10).

Ilustruje to poniższy przykład dla kodu 0075678164125. Faktycznie cyfra kontrolna jest znana i wynosi "5". To znaczy, że cyfrę kontrolną wyliczamy dla 007567816412 (odrzuciliśmy ostatni znak kodu). Oznacza to system numerowy "00", kod producenta "75678" i kod produktu "16412".

Kod cyfrowy 007567 816412
Pozycja PNPNPN PNPNPN
Wagi 131313 131313
Obliczenia 0 * 10 * 37 * 15 * 36 * 17 * 3 8 * 11 * 36 * 14 * 31 * 12 * 3
Iloczyny 00715621 8361216

Sumując iloczyny wag i cyfr otrzymujemy
0 + 0 + 7 + 15 + 6 + 21 + 8 + 3 + 6 + 12 + 1 + 6 = 85.
Jest to wartość dwucyfrowa, tymczasem możemy użyć tylko jednej cyfry. Ta cyfra to wartość, którą trzeba dodać do sumy, aby ta była podzielna bez reszty przez 10. W tym przypadku, następną większą liczbą podzielną przez 10 jest 90. A więc trzeba dodać 5 aby uzyskać 90, dlatego cyfra kontrolna to "5". Następnie dopisujemy do oryginalnej wartości (007567816412) obliczoną cyfrę kontrolną (5), i uzyskujemy ostatecznie 0075678164125.

UWAGA: W oryginalnym opisie kodowania EAN-13 pierwszy znak z lewej określany jest jako parzysty (ang. even) a drugi jako nieparzysty (ang. odd) itd. wbrew zwykłej logice, ale ma to racjonalne wyjaśnienie.
Zostało tak zrobione aby zachować zgodność z oryginalnym formatem UPC-A. Oryginalny kod UPC-A ma tylko jedną cyfrę do oznaczenia kodu systemu krajowego, dlatego drugi znak kodu EAN-13 jest na pozycji pierwszego znaku kodu UPC-A, i byłby na nieparzystej pozycji. Zamiast przerabiać całą dokumentację, w momencie opracowywania europejskiego standardu EAN-13 po prostu dołożono nowy znak z lewej strony i nazwano parzystym zachowując kompatybilność z kodem kreskowym UPC-A i w pewnym stopniu z dokumentacją.

Możesz użyć poniższego 'kalkulatora' do obliczenia ostatniej cyfry kodu kreskowego EAN-13. Wprowadź pierwsze 12 znaków kodu, kliknij na guziku [Oblicz], a wtedy pojawi się obliczona cyfra kontrolna. Kalkulator wymaga włączonej obsługi języka JavaScript.

Wprowadź kod EAN-13 (12 cyfr): Cyfra kontrolna:

  Numery GTIN-13 dla towarów o zmiennej ilości

  1. Do oznaczania towarów o zmiennej ilości stosuje się kody kreskowe EAN-13 zaczynające się od cyfry 2.
  2. Cyfra następująca bezpośrednio po „2” określa rodzaj struktury kodu.
  3. Numery GTIN-13 z prefiksem 20 przeznaczone są do oznaczania wewnętrznego przez dystrybutorów towarów standardowych, które nie zostały oznaczone przez ich producentów lub dostawców albo do innych celów, wynikających z potrzeb danej firmy.
  4. Krajowy system znakowania towarów o zmiennej ilości wykorzystuje numery GTIN-13 z prefiksami od 21 do 29. Przeznaczone są one do znakowania towarów niestandardowych, czyli towarów o zmiennej ilości, masie lub cenie, przedstawionej w kodzie. Numery te zawierają obok identyfikatora towaru, również: konkretną ilość, wagę lub cenę.
    • Do zastosowań wewnętrznych, gdy identyfikatorem towaru jest numer wewnętrzny stosowany w danej placówce lub sieci handlowej, używane są numery GTIN-13 z prefiksami 24 (kod z ceną) i 29 (kod z ilością lub masą).
    • Do zastosowań ogólnokrajowych, gdy identyfikatorem towaru jest numer krajowy, używane są numery GTIN-13 z prefiksami 23 (kod z ceną) i 27 (kod z ilością lub masą).
    Pozostałe prefiksy: 21, 22, 25, 26 i 28 zarezerwowane są do przyszłych potrzeb, np. dodania kolejnego prefiksu dla numerów krajowych, po wyczerpaniu dotychczasowych możliwości.
  5. Identyfikatorem towaru może być:
    • numer wewnętrzny (nadany przez handlowca i stosowany wyłącznie w obiegu wewnętrznym);
    • numer krajowy (nadawany centralnie przez organizację krajową GS1 Polska i stosowany w obrocie ogólnokrajowym).

  Algorytm obliczania cyfry kontrolnej dla pola ceny i masy

Cyfrę kontrolna dla ceny i masy 5 cyfrowej oblicza się w sposób następujący:

ETAP 1. Obliczyć iloczyn ważony dla każdej z pięciu pozycji cyfr pola ceny lub masy. Każda z pięciu pozycji ceny lub masy ma przydzielony współczynnik wagowy:

5+   2-   5-   5+   2-
Na przykład, iloczyn cyfry 6 przez współczynnik wagowy 2+ oznacza, że dana cyfra jest mnożona 6 * 2 = 12. Jeżeli wynik jest dwucyfrowy to do wyniku dodaje się liczbę dziesiątek wyniku. Czyli 12 + 1 = 13. Z tego wyniku bierze się tylko ostatnią cyfrę = 3

Iloczyny ważone przedstawia tabela:
współczynniki wagowe
cyfra 5+ 5- 2- 2+
0 0 0 0 0
1 5 5 2 2
2 1 9 4 4
3 6 4 6 6
4 2 8 8 8
5 7 3 9 1
6 3 7 1 3
7 8 2 3 5
8 4 6 5 7
9 9 1 7 9

ETAP 2. Zsumować iloczyny ważone otrzymane w ETAPIE 1

ETAP 3. Znaleźć cyfrę, która po dodaniu do cyfry na miejscu jednostkowym, daje wynik 10.

ETAP 4. W tabeli znaleźć cyfrę, której iloczyn ważony 5- jest taki sam jak wynik ETAPU 3.
Cyfra kontrolna ceny lub masy jest wynikiem ETAPU 4.

Przykładowe obliczenie:
  cyfry wagi lub ceny 
Kod cyfrowy 23456
Wagi 5+2-5-5+2-
Obliczenia 2 * 5+3 * 2-4 * 5-5 * 5+6 * 2-
Iloczyny 10 6 20 25 12
Obliczenia 10+1 6 20-2 25+2 12-1
Iloczyny ważone 1 6 8 7 1 suma = 23
Obliczenia cd. 23 MOD 10 = 3   10-3 = 7   z tabeli kolumna (5-) -> 6

Powyższy algorytm przepisany z dokumentów GS1-Polska można trochę uprościć przez zrobienie funkcji odwrotnej, która łączy ETAPY 3 i 4.
Można zauważyć, że funkcja odwrotna to w rzeczywistości iloczyn ważony ze współczynnikiem 2+

Tak więc
cyfry wagi lub ceny 
Kod cyfrowy 23456
Wagi 5+2-5-5+2-
Obliczenia 2 * 5+3 * 2-4 * 5-5 * 5+6 * 2-
Iloczyny 10 6 20 25 12
Obliczenia 10+1 6 20-2 25+2 12-1
Iloczyny ważone 1 6 8 7 1 suma = 23
Obliczenia cd. 23 MOD 10 = 3   z tabeli kolumna (2+) -> 6

Weryfikacja cyfry kontrolnej pola wagi lub ceny
cyfrze kontrolnej przypisujemy współczynnik wagowy 5-
cyfra kontrolna cyfry wagi lub ceny 
Kod cyfrowy 6 23456
Wagi 5- 5+2-5-5+2-
Obliczenia 6 * 5- 2 * 5+3 * 2-4 * 5-5 * 5+6 * 2-
Iloczyny 30 10 6 20 25 12
Obliczenia 30-3 10+1 6 20-2 25+2 12-1
Iloczyny ważone 7 1 6 8 7 1 suma = 30
Obliczenia cd. 30 MOD 10 = 0   -> cyfra kontrolna dobra

Możesz użyć poniższego 'kalkulatora' do obliczenia cyfry kontrolnej pola wagi lub ceny kodu kreskowego EAN-13 z prefiksem 2. Wprowadź 5 znaków tego pola, kliknij na guziku [Oblicz], a wtedy pojawi się obliczona cyfra kontrolna. Kalkulator wymaga włączonej obsługi języka JavaScript.
Wprowadź wagę lub cenę (5 cyfr): Cyfra kontrolna:

 

  Kodowanie kodu kreskowego

Po obliczeniu cyfry kontrolnej znamy cały kod cyfrowy, który musi być zakodowany w postaci kodu kreskowego. W przykładzie zakodujemy kod kreskowy EAN-13 dla wartości cyfrowej 0075678164125.

W tekście poniżej omówimy kodowanie kodu kreskowego przyjmując, że cyfra "1" reprezentuje ciemny, wąski pasek, podczas gdy "0" reprezentuje jasny wąski pasek (fragment) kodu kreskowego.
Tak więc cyfry 1101 reprezentują czarny pasek podwójnej szerokości (11), po którym następuje przerwa pojedynczej szerokości (0), a za nią czarny pasek pojedynczej szerokości (1).

Paski kodu EAN-13 i UPC-A mają następującą strukturę:

  • Lewe paski ochronne (start sentinel), zakodowane jako 101.
  • Drugi znak systemu numerowego EAN (pierwszy znak UPC-A), zakodowany jak opisano dalej.
  • Pięć znaków kodu (w UPC-A kod wytwórcy), zakodowanych jak opisano dalej.
  • Środkowe paski ochronne (central sentinel), zakodowane jako 01010.
  • Pięć znaków kodu, zakodowane jako "prawe znaki", w sposób opisany dalej.
  • Cyfra kontrolna, zakodowana jako "prawy znak", w sposób opisany dalej.
  • Prawe paski ochronne (end sentinel), zakodowany jako 101.

Znaki zakodowane na lewo od środkowych pasków ochronnych traktowane są jako "lewe znaki" kodu podczas gdy wszystkie znaki kodowane po prawej od pasków środkowych są "prawymi znakami" symbolu.

Pierwszy znak kodu EAN-13 (tzn. pierwszy znak systemu numerowego) jest 'wkodowany' w sekwencje 'parzystości' znaków lewej strony symbolu. Inaczej mówiąc, pierwszy znak kodu EAN-13 określa parzystości użyte do kodowania znaków lewej strony kodu kreskowego zgodnie z tablicą poniżej.

UWAGA: Przy kodowaniu lewej strony, nieparzysty i parzysty są często określane jako 'character set A' (nieparzysty) i 'character set B' (parzysty).

  Tablica Kodowania Pasków EAN

Tablica wskazuje jak kodować każdą cyfrę kodu kreskowego EAN-13 w zależności od położenia w lewej lub prawej połówce kodu kreskowego. W przypadku cyfry z 'lewej' połówki kodowanie zależy także od pierwszej cyfry kodu kraju (patrz Tablica Kodowania Parzystości poniżej).

cyfra kodowanie
lewostronne
kodowanie
prawostronne
nieparzysty
(A)
parzysty
(B)
wszystkie
znaki
000011010100111 1110010
1001100101100111100110
2001001100110111101100
3011110101000011000010
4010001100111011011100
5011000101110011001110
6010111100001011010000
7011101100100011000100
8011011100010011001000
9000101100101111110100

SPOSTRZEŻENIA:

  • Określenie 'nieparzysty' odnosi się do liczby jedynek w kodzie. Kodowanie z prawej strony jest zawsze 'parzyste'.
  • Kod kreskowy znaku EAN-13 jest reprezentowany przez 7 elementów dających 2 czarne i 2 białe ciągłe paski (przerwy). Biały lub czarny pasek może mieć szerokość od 1 do 4 elementów. Wyjątkiem od tej reguły są paski 'strażniki' (po 3 elementy) i centralny 'strażnik' (szeroki na 5 elementów).
  • Wszystkie znaki lewej części kodu kreskowego zawsze zaczynają się od 0 (przerwa) podczas gdy znaki z prawej części kodu kreskowego zawsze zaczynają się od 1 (czarnego paska).
  • Kodowanie 'lewy nieparzysty' jest takie jak kodowanie prawej strony, ale jedynki są zamienione na zera i odwrotnie.
  • Kodowanie 'lewy parzysty' jest takie jak kodowanie prawej strony, ale pisane w odwróconej kolejności.

  Tablica Parzystości

Poniższa tablica (ang 'parity table') wskazuje sposób kodowania każdego znaku w lewej części kodu kreskowego. Wybór zależy od pierwszej cyfry kodu EAN. Na przykład, płyta CD ma kod EAN-13 5010304193150. W tym przypadku pierwsza cyfra kodu kraju jest "5", dlatego sposób kodowania powinien być oparty o numer 5 w tabeli poniżej:

Pierwsza cyfra
systemu
numerowego
Sposób kodowania - kombinacja parzystości
Druga cyfra
systemu numerowego
znaki lewej połowy (kod wytwórcy)
1 2 3 4 5
0 (UPC-A) NNNNNN
1 NNPNPP
2 NNPPNP
3 NNPPPN
4 NPNNPP
5 NPPNNP
6 NPPPNN
7 NPNPNP
8 NPNPPN
9 NPPNPN

SPOSTRZEŻENIA:

  • Druga cyfra systemu numerowego jest zawsze kodowana jako "nieparzysta" (jest to ważne w czasie dekodowania sygnału ze skanera).
  • Kod kreskowy UPC-A ma zawsze pierwszą cyfrę 0, i dlatego używa wyłącznie nieparzystych. Dowolny kod EAN-13 zaczynający się od cyfry 0 jest kodem UPC-A, a nie kodem EAN-13.
  • Wszystkie kody EAN-13 (mające różną od zera pierwszą cyfrę kodu kraju) zawsze mają trzy znaki kodowane jako nieparzyste i trzy znaki kodowane jako parzyste.
  • Ponieważ dla każdej cyfry sekwencja "parzystości" jest różna, to na podstawie sposobu kodowania lewej części kodu można odtworzyć pierwszą cyfrę kodu EAN-13 mimo, że nie jest ona jawnie "zapisana" w kodzie kreskowym.

Ostatnie dwie tablice są kluczowe dla zrozumienia genialności kodowania EAN-13 tak aby uzyskać kompatybilność z istniejącymi paskami UPC-A.

Rozważmy na moment pasek UPC-A. Jak poprzednio wspomnieliśmy, pasek UPC-A jest po prostu paskiem EAN-13 który ma pierwszą cyfrę kodu kraju jako 'domyślne' zero. Patrząc do Tablicy Parzystości powyżej, jest oczywiste że gdy pierwsza cyfra jest zero, to wszystkie znaki lewej strony kodu kreskowyego będą kodowane jako nieparzyste. Taki był oryginalny standard przyjęty dla UPC-A. Kody EAN-13 rozwinięto na bazie tego standardu i zdefiniowano "niezerowe" możliwości z innymi wzorcami parzystości. Czyni to UPC-A kompatybilne z EAN-13 (a także EAN-13 niekompatybilne z UPC-A). Na pocieszenie trzeba zaznaczyć, że współcześnie produkowane skanery same rozpoznają oba typy kodów oraz kilkanaście innych.

  Przykład kodowania

W przykładzie zakodujmy kod cyfrowy 75 01031 31130.

Po pierwsze obliczamy cyfrę kontrolną; korzystamy z kalkulatora podanego wcześniej lub liczymy na piechotę i dopisujemy '9' na końcu numeru.

7 501031 311309

Widzimy, że pierwsza cyfra systemu numerowania (pierwsza z lewej cyfra w kodzie cyfrowym) wynosi '7'. Zaglądamy do Tablicy Parzystości dla cyfry '7', i widzimy, że parzystości dla kolejnych cyfr lewej połowy kodu cyfrowego powiny być 'N/P/N/P/N/P'. To oznacza, że druga cyfra systemu numerowego będzie kodowana przy użyciu 'lewy nieparzysty' z Tablicy Kodowania, kolejna cyfra będzie kodowana jako 'lewy parzysty', itd. Można więc zacząć składanie kodu kreskowego z następujących kawałków. W przykładzie używamy binarnego zapisu kodu kreskowego, który skleja się z kolejnych 'sekcji'.

  1. Lewe paski ochronne (zawsze takie same): 101.
  2. Druga cyfra kodu kraju [5]: zakodowana jako 'lewy nieparzysty', 0110001.
  3. 1-sza cyfra wytwórcy [0]: zakodowana jako 'lewy parzysty', 0100111.
  4. 2-ga cyfra wytwórcy [1]: zakodowana jako 'lewy nieparzysty', 0011001.
  5. 3-cia cyfra wytwórcy [0]: zakodowana jako 'lewy parzysty', 0100111.
  6. 4-ta cyfra wytwórcy [3]: zakodowana jako 'lewy nieparzysty', 0111101.
  7. 5-ta cyfra wytwórcy [1]: zakodowana jako 'lewy parzysty', 0110011.
  8. Środkowe paski ochronne (zawsze takie same): 01010.
  9. 1-sza cyfra produktu [3]: zakodowana jako 'prawy', 1000010.
  10. 2-ga cyfra produktu [1]: zakodowana jako 'prawy', 1100110.
  11. 3-cia cyfra produktu [1]: zakodowana jako 'prawy', 1100110.
  12. 4-ta cyfra produktu [3]: zakodowana jako 'prawy', 1000010.
  13. 5-ta cyfra produktu [0]: zakodowana jako 'prawy', 1110010.
  14. cyfra kontrolna [9]: zakodowana jako 'prawy', 1110100.
  15. Prawe paski ochronne (zawsze takie same): 101.

W celu lepszego widzenia budowy kodu kreskowego, poniższy obrazek pokazuje kod kreskowy, ale każda cyfra i ciąg pasków kodu jest zaznaczona naprzemian zmieniającym się tłem. Nad kodem zaznaczono sekcje ponumerowane do 1 do 15, odpowiadające opisowi powyżej. Pamiętajmy, że '1' reprezentuje pasek, '0' reprezentuje przerwa.

Można porównać sekwencje binarne sekcji z obrazem graficznym poniżej:


  Przykład kodu w Turbo Paskalu

Poniższy programik produkuje sekwencję zerojedynkową dla wczytanego pełnego kodu EAN-13. Program nie sprawdza poprawności cyfry kontrolnej. W wyniku 0 oznacza wąski biały pasek tła, a 1 wąski czarny pasek nadruku.

program PaskiEAN13;  { Copyright  2001-2021  Romuald Żyłła  }

type str10 = string[10];
     str20 = string[20];
var  numer : string;

function eVal( sss : Str20 ): longint;
var  iii : longint;  err : integer;
begin
    Val( sss, iii, err );  eVal:= iii;
end;

function Conv2CodeEAN13( T: Str20 ): String;
var  S : array [0..14] of str10;
     pasek : string;
     i, K  : byte;
     err   : integer;
const
     A : array [0..9] of str10
       =('0001101', '0011001', '0010011', '0111101', '0100011',
         '0110001', '0101111', '0111011', '0110111', '0001011');
     B : array [0..9] of str10
       =('0100111', '0110011', '0011011', '0100001', '0011101',
         '0111001', '0000101', '0010001', '0001001', '0010111');
     C : array [0..9] of str10
       =('1110010', '1100110', '1101100', '1000010', '1011100',
         '1001110', '1010000', '1000100', '1001000', '1110100');
     D : array [0..9,1..6] of byte
       =((1,1,1,1,1,1), (1,1,0,1,0,0), (1,1,0,0,1,0), (1,1,0,0,0,1),
         (1,0,1,1,0,0), (1,0,0,1,1,0), (1,0,0,0,1,1), (1,0,1,0,1,0),
         (1,0,1,0,0,1), (1,0,0,1,0,1) );

begin
   K := eVal( T[1] );
   S[0] := '101';  { znak startu }
   for i:=1 to 6 do
     if (D[K,i]=1)
       then S[i] := A[eVal(T[i+1])]
       else S[i] := B[eVal(T[i+1])];
   S[7]:='01010';  { srodkowy straznik }
   for i:=8 to 13 do
            S[i] := C[eVal(T[i])];
   S[14] := '101'; { znak stopu }
   pasek := S[0];
   for i:=1 to 14 do
     pasek := pasek + S[i];
   Conv2CodeEAN13 := pasek;
end;{ fun Conv2CodeEAN13 }

begin
   write('Podaj pełny numer EAN-13 : ');   readln( numer );
   writeln( Conv2CodeEAN13( numer ) );
end.

Ciąg dalszy:
      Generator kodów kreskowych EAN-8, EAN-13 on-line
      Techniczne szczegóły drukowania kodu kreskowego
      Odczytywanie i dekodowanie kodów kreskowych EAN-13 w budowie


Patrz także:
Symbology Index | UPC-A | UPC-E | EAN-8 | Bookland
UPC 2-Digit Supplement | UPC 5-Digit Supplement
A | B | C | D

© Copyright 2000 - 2007