Kod kreskowy, kod paskowy (ang. barcode) – graficzna reprezentacja informacji poprzez kombinację ciemnych i jasnych elementów, ustaloną według symboliki reguł opisujących budowę kodu (np. jego wymiary, zbiór kodowanych znaków, algorytm obliczania cyfry kontrolnej i inne) danego kodu. Kod kreskowy przeznaczony jest dla czytników elektronicznych. Ma na celu umożliwienie automatycznego odczytywania informacji. Głównym zastosowaniem kodu kreskowego jest automatyczna identyfikacja produktów w szeroko pojętej logistyce.
Historia
- 1932 – Wallace Flint pisze na Uniwersytecie Harwardzkim pracę magisterską na temat automatycznych punktów kasowych w supermarketach
- 1948 – Joe Woodland i Berny Silver rozpoczynają badania nad technicznym aspektem odczytu i kontroli cen artykułów żywnościowych w handlu
- 1949 – Girard Feissel zgłasza w amerykańskim urzędzie patentowym wniosek dotyczący sposobu kodowania cyfr
- 7 października 1952 – przyznanie patentu
- 1970 – producenci i handlowcy z USA i Kanady tworzą stowarzyszenie do jednolitego kodowania towarów
- 1973 – oficjalne zatwierdzenie kodu kreskowego UPC (Universal Product Code)
- 1974 – powstanie tymczasowego komitetu badającego możliwość wprowadzenia jednolitego systemu identyfikacji towarów w Europie
- 26 czerwca – pierwszy towar oznaczony kodem kreskowym Universal Product Code (UPC) przechodzi przez kasę w domu towarowym Marsh w Troy, w hrabstwie Miami, w stanie Ohio; towarem tym był multipak gumy do żucia „Wrigley's Juicy Fruit”[1][2]
- 1976 – powstaje Europejski System Kodowania Towarów EAN (European Article Numbering)
- 1976 – opracowanie pierwszego alfanumerycznego kodu kreskowego – Code 39
- 1977 – powołanie Stowarzyszenia Kodowania Towarów EANA (European Article Numbering Association)
- 1981 – przekształcenie systemu europejskiego w międzynarodowy – powstaje IANA
- 1984 – opracowanie przez organizację «Automotive Industry Action Group» (AIAG) pierwszego standardu zakładającego wykorzystanie kodu składającego się z czterech kodów Code 39 ułożonych piętrowo jeden nad drugim
- 1987 – wprowadzenie przez firmę «Intermec» pierwszego kodu dwuwymiarowego piętrowego Code 49
- 1990 – przyjęcie Polski do systemu EAN i powołanie organizacji narodowej «CKK – Centrum Kodów Kreskowych» w Instytucie Logistyki i Magazynowania w Poznaniu
- 1998 – organizacje EAN i UCC podjęły decyzję o kompleksowym scaleniu systemu UPC z systemem EAN, dzięki czemu obecnie funkcjonuje jeden globalny system EAN.UCC
- 2005 – globalne Forum GS1, podczas którego oficjalnie dokonano zmiany nazwy z EAN International na GS1
- luty – zmiana nazwy organizacji krajowej z «CKK – Centrum Kodów Kreskowych» na «GS1 Polska» w Instytucie Logistyki i Magazynowania w Poznaniu
Zasady działania
W trakcie odczytywania kodu techniką skanowania, światło pochodzące z czytnika, uformowane w cienką wiązkę (laser), przesuwa się wzdłuż czytanego kodu, w danym momencie oświetla niewielki punkt kodu, następnie światło to jest odbijane przez jasne elementy kodu (przerwy), a pochłaniane przez jego ciemne elementy (kreski, pola), co odczytuje fotodioda. Światło odbite od przerw powoduje powstanie w czytniku silniejszych sygnałów elektrycznych, natomiast w wyniku braku odbicia (kreski) powstają sygnały słabsze. W zależności od grubości kresek/przerw, różny jest też czas trwania poszczególnych sygnałów. Czas trwania każdego impulsu koduje informacje, które są tłumaczone przez dekoder czytnika na cyfry, litery lub inne znaki i przesyłane do komputera.
Występują również kody wykorzystujące więcej niż dwa kolory (np. Ultracode[3]), co umożliwia zapisanie większej ilości informacji.
Odwzorowanie kodów paskowych w materiale plastycznym np. metal, plastik lub guma może być wykonane przez wgłębienia. Ma to miejsce w kodach Bumpy Bar Code[4]. W tym przypadku czytnik analizuje kształty cienia w zagłębieniach przy skośnym ustawieniu źródła światła.
Zastosowanie kodów
Kody kreskowe posiadają wiele zastosowań w różnych dziedzinach działalności. Do najważniejszych z nich można zaliczyć:
- identyfikację jednostek handlowych (numery GTIN), przy czym w tym ujęciu za jednostkę handlową uważa się dowolny produkt lub usługę, której można nadać cenę i która przepływa przez łańcuchu dostaw. A zatem do kategorii tej zalicza się jednostki (produkty) w opakowaniach zbiorczych i jednostkowych, sprzedawane w hurcie i detalu, dostępne na rynku krajowym (wewnętrznym) lub międzynarodowym, o stałej lub zmiennej ilości, o jednorodnej lub niejednorodnej zawartości. Do kategorii tej zalicza się również oznaczenia wydawnictw ciągłych (ISSN), muzycznych (ISMN) lub książek (ISBN)
- identyfikację jednostek logistycznych (numery SSCC), czyli takich jednostek, które zostały utworzone dla potrzeb transportu i magazynowania (np. paletowe jednostki ładunkowe lub kontenerowe jednostki ładunkowe) oraz podlegają procesom identyfikacji, śledzenia i zarządzania podczas przepływu przez łańcuch dostaw. Związany z tym jest również termin Etykieta logistyczna, na której zawarte są podstawowe informacje o jednostce logistycznej
- identyfikację zasobów (numery GIAI), a konkretniej zasobów trwałych (o statusie zapasów) przedsiębiorstwa (np. opakowań zwrotnych wielokrotnego użytku, palet)
- identyfikację lokalizacji (numery GLN, SWIFT, DUNS, BSI/AFNOR), służącej do identyfikacji obiektów, którym można nadać adres (np. przedsiębiorstwa, konkretne pokoje, punkty sprzedaży, komunikaty EDI)
- identyfikację relacji usługowych (numery GSRN nadawane usługobiorcom)
- inne zastosowania, takie jak znakowanie kuponów, kwitów zwrotnych, rachunków, telefonów komórkowych, przesyłek kurierskich, recept, leków, stron internetowych i innych
Ze względu na fakt znakowania towarów w sprzedaży detalicznej oraz wydawnictw, do najczęściej spotykanych należą symboliki EAN (Europa) i UPC (Ameryka Północna).
Rodzaje kodów
Występuje około 250 rozwiązań w dziedzinie kodów kreskowych. W związku z tym istnieje kilka sposobów ich podziału:
- Podział według wymiarowości kodu:
- jednowymiarowe (liniowe, 1D) – informacje zapisane są w jednej linii (najczęściej w postaci kresek)
- dwuwymiarowe piętrowe – rozwinięcie kodów jednowymiarowych polegające na istnieniu kilku linii kodu, jedna pod drugą
- dwuwymiarowe matrycowe – informacja zapisana jest na określonej powierzchni, z tym że do zapisu nie są wykorzystywane kreski, lecz inne oznaczenia
- kody złożone – występują w nich zarówno elementy kodów jednowymiarowych, jak i dwuwymiarowych
- kody trójwymiarowe – zazwyczaj są to wytłaczane dowolne kody jednowymiarowe (Bumpy Bar Code). Różnica polega na tym, iż w zapisie/odczycie zamiast różnic w kolorach wykorzystuje się różnice głębokości tłoczenia[4]
- Podział według szerokości kresek:
- kody o jednej szerokości kresek (np. PosiCode[5]) – kodowanie polega na występowaniu, bądź nie, kreski w określonym miejscu
- kody o dwóch szerokościach kresek
- kody o wielu szerokościach kresek (modularne)
- Podział według rodzaju kodowanych symboli:
- numeryczne – kodowane są jedynie cyfry w systemie dziesiętnym
- alfanumeryczne – kodowane są cyfry i pozostałe znaki kodu ASCII, czasem również znaki występujące w niektórych alfabetach
- Podział według ciągłości kodu (nie dotyczy kodów matrycowych):
- kody ciągłe – nie występują w nich przerwy między kodowanymi znakami
- kody dyskretne – występują przerwy między kodowanymi znakami
- Podział według ilości kodowanych znaków:
- kody o ściśle określonej liczbie kodowanych znaków (o stałej długości)
- kody o różnej liczbie kodowanych znaków (o zmiennej długości)
- Podział według przyjętej metody weryfikacji odczytanych danych:
- kody samosprawdzalne (np. wszystkie kody typu m z n) – pewne procedury sprawdzania błędów są zaimplementowane w budowie kodu, np. poszczególne symbole są kodowane tak, aby różnić się od siebie maksymalnie, a zatem błędne odczytanie jednej kreski powoduje automatyczną niepoprawność kodu
- kody ze znakiem kontrolnym (np. z cyfrą kontrolną)
- kody samosprawdzalne z dodatkowym znakiem kontrolnym
Jednowymiarowe
- Przykład kodu „Przeplatane 2 z 5”
- Przykład kodu „Code 39”
- Przykład kodu UPC-A
- Przykład kodu EAN-8
Nazwa symboliki | Numeryczny /alfanumeryczny |
Ciągły /dyskretny |
Dwie szerokości /modularny |
Stała/zmienna długość |
Uwagi i wykorzystanie |
---|---|---|---|---|---|
Codabar[6] | alfanumeryczny | dyskretny | dwie | Włączony do USS przez AIM | |
CODE 11[7] | numeryczny | dyskretny | dwie | ||
Kod 2 z 5[8] (Code25) |
numeryczny | ciągły | dwie | występuje w kilku odmianach | |
Przeplatany 2 z 5[9] (Code25 Interleaved) |
numeryczny | ciągły | dwie | zmienna (parzysta ilość, maks. 16) |
Włączony do USS przez AIM |
Kod 3 z 9[10] (Code39) |
alfanumeryczny (43 znaki w podst. wer.) |
dyskretny | dwie | zmienna | Włączony do USS przez AIM |
Code 93[11] | alfanumeryczny (ASCII) | ciągły | modularny | zmienna | Włączony do USS przez AIM |
Kod 128[12] (Code128) |
alfanumeryczny (ASCII) | ciągły | modularny | zmienna | Zaimplementowany przez GS1 jako GS1-128[13]. Występują odmiany A, B oraz C. |
EAN-8[14] | numeryczny | ciągły | modularny | stała (8) | Zaimplementowany przez GS1, opakowania jednostkowe |
EAN-13[14] | numeryczny | ciągły | modularny | stała (13) | Zaimplementowany przez GS1, opakowania jednostkowe, GTIN. Może występować z 2 lub 5 cyfrowym dodatkiem add-on. |
GS1-128[13] | alfanumeryczny (ASCII) | ciągły | modularny | zmienna | Zaimplementowany przez GS1. Opakowania zbiorcze, etykieta logistyczna |
ITF-14[9] | numeryczny | ciągły | dwie | stała (14) | Zaimplementowany przez GS1, opakowania zbiorcze |
MSI Plessey | ciągły | dwie | |||
UPC-A[14] | numeryczny | ciągły | modularny | stała (12) | Zaimplementowany przez GS1, opakowania jednostkowe |
UPC-E[14] | numeryczny | ciągły | modularny | stała (6) | Zaimplementowany przez GS1, opakowania jednostkowe |
PosiCode[5] | alfanumeryczny | ciągły | jedna | zmienna | Włączony do USS przez AIM |
POSTNET | ciągły | dwie | |||
GS1 DataBar[15] (RSS) |
numeryczny lub alfanumeryczny |
ciągły | modularny | Zaimplementowany przez GS1; pełna implementacja w systemach skanujących od 2010 roku; do znakowania bardzo małych jednostek; licencja – domena publiczna; cechy kodu uzależnione są od wersji | |
Telepen[16] | alfanumeryczny (ASCII) |
ciągły | dwie | Wykorzystywany w bibliotekach. Włączony do USS przez AIM |
Kraj rejestracji i umowne znaczenie prefixu kodu EAN-13 i UPC-12
Według prefiksu.
- 00–01: USA, Kanada
- 02: USA[uwaga 1]
- 03: USA (farmaceutyki)
- 04: USA[uwaga 2]
- 05: USA[uwaga 3]
- 06–09: USA, Kanada
- 10–13: USA
- 2: towary o zmiennej masie metkowane w sklepach
- 30–37: Francja
- 380: Bułgaria
- 383: Słowenia
- 385: Chorwacja
- 387: Bośnia i Hercegowina
- 389: Czarnogóra
- 390: Kosowo
- 40–43, 440: Niemcy[uwaga 4]
- 45: Japonia
- 46: Rosja
- 470: Kirgistan
- 471: Tajwan
- 474: Estonia
- 476: Azerbejdżan
- 475: Łotwa
- 477: Litwa
- 478: Uzbekistan
- 479: Sri Lanka
- 480: Filipiny
- 481: Białoruś
- 482: Ukraina
- 483: Turkmenistan
- 484: Mołdawia
- 485: Armenia
- 486: Gruzja
- 487: Kazachstan
- 488: Tadżykistan
- 489: Hongkong
- 49: Japonia
- 50: Wielka Brytania
- 520, 521: Grecja
- 528: Liban
- 529: Cypr
- 530: Albania
- 531: Macedonia Północna
- 535: Malta
- 539: Irlandia
- 54: Belgia, Luksemburg
- 560: Portugalia
- 569: Islandia
- 57: Dania, Grenlandia, Wyspy Owcze
- 590: Polska
- 594: Rumunia
- 599: Węgry
- 600, 601: Południowa Afryka
- 603: Ghana
- 604: Senegal
- 607: Oman
- 608: Bahrajn
- 609: Mauritius
- 611: Maroko
- 613: Algieria
- 615: Nigeria
- 616: Kenia
- 617: Kamerun
- 618: Wybrzeże Kości Słoniowej
- 619: Tunezja
- 620: Tanzania
- 621: Syria
- 622: Egipt
- 623: Brunei
- 624: Libia
- 625: Jordania
- 626: Iran
- 627: Kuwejt
- 628: Arabia Saudyjska
- 629: Emiraty Arabskie
- 630: Katar
- 631: Namibia
- 64: Finlandia
- 69: Chiny
- 70: Norwegia
- 729: Izrael
- 73: Szwecja
- 740: Gwatemala
- 741: Salwador
- 742: Honduras
- 743: Nikaragua
- 744: Kostaryka
- 745: Panama
- 746: Dominikana
- 750: Meksyk
- 754, 755: Kanada
- 759: Wenezuela
- 76: Szwajcaria, Liechtenstein
- 770, 771: Kolumbia
- 773: Urugwaj
- 775: Peru
- 777: Boliwia
- 778, 779: Argentyna
- 780: Chile
- 784: Paragwaj
- 786: Ekwador
- 789, 790: Brazylia
- 80–83: Włochy, San Marino, Watykan
- 84: Hiszpania, Andora
- 850: Kuba
- 858: Słowacja
- 859: Czechy
- 860: Serbia
- 865: Mongolia
- 867: Korea Północna
- 868, 869: Turcja
- 87: Holandia
- 880: Korea Południowa
- 883: Mjanma
- 884: Kambodża
- 885: Tajlandia
- 888: Singapur
- 890: Indie
- 893: Wietnam
- 896: Pakistan
- 899: Indonezja
- 90, 91: Austria
- 93: Australia
- 94: Nowa Zelandia
- 950: specjalne zastosowania
- 951: w dyspozycji zarządu GS1
- 952: przykłady i demonstracje GS1
- 955: Malezja
- 958: Makau
- 96: specjalne zastosowania
- 977: ISSN (czasopisma)
- 978–979: ISBN (książki, w tym 9790 ISMN – wydawnictwa muzyczne[uwaga 5])
- 980: towary ze zwrotu
- 981–983, 99: kupony
Dwuwymiarowe
- Kod piętrowy 49
- Kod piętrowy PDF 417
- Kod matrycowy DataMatrix
- Kod matrycowy MaxiCode
- Kod matrycowy Aztec
- Kod matrycowy QR
Nazwa symboliki | Piętrowy /Matrycowy |
Uwagi i wykorzystanie |
CodaBlock F[17] | Piętrowy | |
Kod 49[18] (Code49) |
Piętrowy | Włączony do USS przez AIM |
Kod 16K[19] (Code 16K) |
Piętrowy | Włączony do USS przez AIM |
Code One[20] | Matrycowy | |
PDF417[21] | Piętrowy | kod alfanumeryczny o dużej gęstości – na powierzchni porównywalnej z powierzchnią kodu EAN mieści ponad 1000 znaków; odporny na częściowe uszkodzenia. Włączony do USS przez AIM |
Micro-PDF 417[21] | Piętrowy | Wykorzystywany w złożonych symbolikach RSS[15]. Włączony do USS przez AIM |
RSS spiętrzony[15] (GS1 DataBar) |
Piętrowy | Zaimplementowany przez GS1; pełna implementacja w systemach skanujących od 2010 roku; licencja – domena publiczna |
Aztec Code[22] | Matrycowy | Możliwość kodowania cyrylicy, alfabetu hebrajskiego i arabskiego. Dostępny na licencji domeny publicznej. Włączony do USS przez AIM. |
Data Matrix[23] | Matrycowy | Zaimplementowany przez GS1 |
MaxiCode[24] (UPS MaxiCode) |
Matrycowy | Nadaje się do skanowania na elementach szybko przemieszczających się. Licencja – domena publiczna. Włączony do USS przez AIM. |
Semacode[25] | Matrycowy | Stworzony na podstawie kodu Data Matrix. Koduje adresy URL |
QR Code[26] | Matrycowy | Możliwość kodowania symboli pisma japońskiego, nadaje się do skanowania elementów szybko przemieszczających się. Włączony do USS przez AIM |
ShotCode | Matrycowy | |
SuperCode[27] | Matrycowy | domena publiczna |
Ultracode[3] | Występuje w wersjach czarno-białej i kolorowej. Domena publiczna. Opracowany przez Zebra Technologies. | |
VeriCode[28] | Matrycowy | Opracowany przez Veritec Inc. |
VSCode[29] | Matrycowy | Opracowany przez Veritec Inc. |
Złożone
Nazwa symboliki |
Element jednowymiarowy |
Element dwuwymiarowy |
Uwagi i wykorzystanie |
---|---|---|---|
Aztec Mesa[30] | Code 128, Code 39, Code 93, Code 93i, Przeplatany 2 z 5, UPC-A, EAN-13 |
Aztec Code | Zaimplementowany przez AIM |
Symboliki złożone EAN.UCC[31] |
EAN-13, EAN-8, UPC-A, UPC-E, EAN-128, RSS-14, RSS Rozszerzony, RSS Ograniczony |
PDF 417, Micro PDF417 |
Zaimplementowany przez GS1 |
Charakterystyczne cechy kodów
- N – stosunek szerokości kreski szerszej do węższej w kodach o dwóch szerokościach kresek.
- wymiar X (moduł) – szerokość najwęższego paska w kodach o wielu szerokościach kresek (modularnych). Inne szerokości są zazwyczaj wielokrotnością tej wartości.
- Gęstość – ilość znaków możliwych do zakodowania na określonej długości – zależy od wymiaru X i rodzaju kodu.
- Cicha strefa – obszar kodu występujący przed znakiem start i po znaku stop, który musi być pozbawiony innych oznaczeń. Jego kolor jest identyczny do koloru jasnych (białych) pasków.
- Znaki Start i Stop – występujące w kodach liniowych oraz niektórych piętrowych; oznaczenia początku i końca kodu.
- Wzór wyszukiwania – występujący w niektórych kodach matrycowych obszar kodu o specyficznym wyglądzie, który pozwala czytnikowi na odnalezienie konkretnego miejsca w kodzie, względem którego rozpatrywana jest reszta zeskanowanego obszaru.
- Wzór orientacyjny – występujące w niektórych kodach matrycowych zgrupowanie elementów (o ściśle określonych kolorach i kształtach), pozwalające na określenie orientacji skanera względem odczytywanego kodu.
Urządzenia odczytujące
Początkowo do odczytu używano specjalnie zmodyfikowanych piór świetlnych, które musiały być przesuwane tuż nad kodem prostopadle do pasków, co okazywało się niewygodne. Obecnie do odczytu używa się czytników (zwanych także skanerami) różnorodnej konstrukcji, umożliwiających odczyt z pewnej odległości i mniej czułych na ustawienie odczytywanego kodu, które można, ze względu na technologię wykonania, generalnie podzielić na:
- laserowe (większy zasięg odczytu),
- diodowe CCD (większa odporność, większa szybkość odczytu),
- oparte na kamerach video
Dodatkowo, wśród skanerów laserowych wyróżnia się skanery jednoliniowe oraz wieloliniowe. Skanery wieloliniowe mają dodatkowe promienie ułożone równolegle lub w kształt pięciokąta albo gwiazdy. Umożliwia to jeszcze większą niezależność od położenia odczytywanego kodu względem okna skanera.
Wraz ze wzrostem precyzji (gęstości) kodu oraz jego stopnia skomplikowania (np. kody matrycowe względem liniowych), wzrastają wymagania stawiane skanerom do jego poprawnego odczytu.
Zobacz też
RFID – Radiowy kod kreskowy
Uwagi
Przypisy
- ↑ Heritage timeline. [dostęp 2009-10-07]. (zakładka dla roku 1974).
- ↑ Gavin Weightman: The History of the Bar Code., 23.09.2015, smithsonianmag.com.
- 1 2 Opis kodu Ultracode na stronach aimglobal.org. aimglobal.org. [zarchiwizowane z tego adresu (2006-10-05)]. (ang.)
- 1 2 Opis kodów Bumpy Bar Code na stronach dataid.com (ang.)
- 1 2 opis kodu PosiCode na stronach aimglobal.org. aimglobal.org. [zarchiwizowane z tego adresu (2007-04-04)]. (ang.)
- ↑ Opis symboliki Codabar na stronie barcodeisland.com. barcodeisland.com. [zarchiwizowane z tego adresu (2007-06-30)]. (ang.)
- ↑ opis kodu na stronie barcodeisland.com. barcodeisland.com. [zarchiwizowane z tego adresu (2007-02-02)]. (ang.)
- ↑ Opis symboliki Kod 2z5 na stronie barcode.ro (ang.)
- 1 2 (PDF)Specyfikacje symboliki ITF-14 na stronie gs1pl.org [dostęp: 2008.01.11].
- ↑ Opis symboliki Code39 na stronie barcodeman.com. barcodeman.com. [zarchiwizowane z tego adresu (2006-10-18)]. (ang.)
- ↑ Opis symboliki Code93 na stronie morovia.com (ang.)
- ↑ (PDF)Specyfikacja kodu GS1-128 na stronie organizacji GS1 [dostęp: 2008.01.11].
- 1 2 (PDF)Specyfikacje symboliki GS1-128 na stronie gs1pl.org [dostęp: 2008.01.11].
- 1 2 3 4 (PDF)Specyfikacje symboliki EAN/UPC na stronie gs1pl.org [dostęp: 2008.01.11].
- 1 2 3 (PDF)Specyfikacje symbolik RSS na stronach gs1pl.org [dostęp: 2008.01.11].
- ↑ (ang.)(PDF)Specyfikacje symboliki Telepen na stronie telepen.co.uk.
- ↑ Opis symboliki CodaBlock F na stronie barcode.ro (ang.)
- ↑ Opis symboliki Code49 na stronie barcode.ro (ang.)
- ↑ Opis symboliki Code16K na stronie barcode.ro (ang.)
- ↑ Opis symboliki Code One na stronie barcode.ro (ang.)
- 1 2 Opis symboliki PDF417 na stronie pdf417.pl.
- ↑ Opis symboliki Aztec Code na stronach tkb-4u.com (ang.)
- ↑ Opis symboliki DataMatrix na stronie barcode.ro (ang.)
- ↑ Opis symboliki MaxiCode na stronie maxicode.pl.
- ↑ Opis kodu Semacode na stronie semacode.org. semacode.org. [zarchiwizowane z tego adresu (2008-07-05)]. (ang.)
- ↑ Opis kodu na stronie qrcode.com (ang.)
- ↑ Opis symboliki SuperCode na stronie aimglobal.org. aimglobal.org. [zarchiwizowane z tego adresu (2006-10-05)]. (ang.)
- ↑ Opis kodu VeriCode na stronie veritecinc.com. veritecinc.com. [zarchiwizowane z tego adresu (2018-11-30)]. (ang.)
- ↑ Opis kodu VSCode na stronie veritecinc.com (ang.)
- ↑ Opis symboliki Aztec Mesa na stronie aimglobal.org. aimglobal.org. [zarchiwizowane z tego adresu (2007-04-04)]. (ang.)
- ↑ (PDF)Specyfikacje symbolik złożonych GS1 na stronie gs1pl.org.