Kot kreskowy czyli tajemnice kodu kreskowego.

Autor: Girwan
29 kwietnia 2012

Wielu z nas spotyka się na co dzień z kodami kreskowymi. Towarzyszą nam już od wielu lat, w sklepach, aptekach, na lotniskach czy na rachunkach dostarczanych przez różne firmy. Co skrywają czarno-białe kreski? Jakie informacje są w nich zawarte? Na te pytania postaram się odpowiedzieć poniżej.

 
Parę słów o historii
Zanim odsłonię magię kodu kreskowego przybliżę trochę jego historię. Niewiele osób wie, że historia powstania kodów kreskowych sięga końca lat czterdziestych naszego stulecia. Wtedy to zostały podjęte badania nad możliwością zautomatyzowania odczytu i kontroli cen towarów w handlu detalicznym. Prekursorami w wykorzystaniu kodów kreskowych były Stany Zjednoczone, gdzie Joe Woodland i Berny Silver prowadzili badania. Efektem ich pracy było opatentowanie w 1949 roku pierwszego kodu kreskowego zwanego także, ze względu na swój wygląd, „tarczą strzelniczą” (bulls eye). Kod ten składał się szeregu ułożonych współśrodkowo jasnych i ciemnych pierścieni różnej grubości. Ze względu na problemy techniczne ten sposób automatycznej identyfikacji nie został jednak wtedy zastosowany na szeroką skalę.
 
 
Lata pięćdziesiąte i sześćdziesiąte upłynęły na mniej lub bardziej udanych próbach stworzenia systemów identyfikacji towarów przy użyciu specjalnych znaków i symboli. Do rozwoju prac w znacznym stopniu przyczynił się gwałtowny rozwój supermarketów, który nastąpił w latach sześćdziesiątych w Stanach Zjednoczonych i Kanadzie.  
 
Współpraca producentów i handlowców tych krajów zaowocowała utworzeniem na początku lat siedemdziesiątych stowarzyszenia mającego opracować jednolite zasady znakowania towarów. Tak doszło do powstania kodu UPC (Universal Product Code) - Standardowego Kodu Produktu. Początkowo stosowano go głównie do identyfikacji i ewidencjonowania towarów w supermarketach. Rozwiązania stosowane w Ameryce zainteresowały również wysoko uprzemysłowione kraje europejskie, które również zaczynały się borykać z problemami masowego handlu detalicznego. Nie chcąc uzależniać się od Stanów Zjednoczonych, wprowadziły własny jednolity system znakowania towarów. 
 
 
Zalety stosowanych głównie w handlu detalicznym kodów kreskowych zostały prędko zauważone także przez inne gałęzie gospodarki. Zaczęto je stosować na opakowaniach zbiorczych towarów, do znakowania elementów na liniach produkcyjnych, w laboratoriach medycznych, bibliotekach, archiwach itp.  
 
Z czasem postanowiono połączyć standardy amerykański i europejski i połączyć je tworząc jeden zunifikowany system znakowanie towarów. W ten sposób powstał system EAN/UPC, który z czasem wyewaluował w system EAN 128 by ostatecznie przeistoczyć się w stosowany obecnie system GS1. Dzięki standardowi opracowanemu przez międzynarodową organizację jesteśmy w stanie rozpoznać, który produkt był produkowany w Polsce, a który poza granicami naszego kraju. Każdy towar, który znajduje się w obrocie detalicznym jest oznakowany kodem EAN13. Jego pierwsze trzy cyfry wskazują kraj pochodzenia. W przypadku Polski jest to 590.
 
 
 
 
 
 
Czym tak naprawdę jest kod kreskowy?
Kod kreskowy to jak wiele osób zauważyło kombinacja jasnych i ciemnych kresek, którym przyporządkowano określone znaki: cyfry lub litery lub też wszystkie znaki ASCII.  Kreski te zwane są elementami kodu. Różne kombinacje następujących po sobie różnej grubości kresek i przerw reprezentują różne znaki. Po lewej i prawej stronie kodu kreskowego znajduje się wolna przestrzeń, tzw margines, który ułatwia czytnikowi kodów kreskowych zorientowanie się gdzie się zaczyna i gdzie kończy kod kreskowy.
 
Czytniki kodów kreskowych działają na zasadzie rozpoznawania kontrastu pomiędzy kreską jasną i ciemną. Odpowiednie algorytmy zaimplementowane w oprogramowaniu dekodują paski i zamieniają je na określone znaki. Fizycznie wygląda to tak, że: światło odbite od przerw powoduje powstanie w czytniku słabszych sygnałów elektrycznych, natomiast w wyniku braku odbicia (kreski) powstają sygnały silniejsze. W zależności od grubości kresek różna jest też długość trwania poszczególnych sygnałów. W wyniku tego powstaje ciąg sygnałów elektrycznych o różnym natężeniu i różnej długości. Krótko mówiąc, jest to tylko nieco bardziej skomplikowane od zasady działania alfabetu Morse'a. 
 
 
I w końcu trafiamy w sedno 
Doszliśmy w końcu do tego czym tak na prawdę jest kod kreskowy. Jak to się dzieje, że parę kresek na papierze może zawierać jakąś informację, którą w dodatku można błyskawicznie odczytać przy pomocy odpowiedniego sprzętu? Na czym polega ta tajemnica? 
 
Zacznijmy od tego, że kod kreskowy (podobnie wiele innych technik automatycznej identyfikacji) rzadko sam w sobie zawiera istotną dla jego użytkownika informacji. Jest tylko swego rodzaju identyfikatorem, pozwalającym na szybkie otrzymanie potrzebnych danych. Zasada działania jest podobna do zastosowania numeru dowodu osobistego, czy numeru rejestracyjnego samochodu. Posiadając numer dowodu osobistego i mając dostęp do odpowiedniej bazy danych można otrzymać pełne dane osobowe jego właściciela. Tak samo przy dostępie do bazy zarejestrowanych pojazdów możliwe jest zidentyfikowanie posiadacza samochodu jedynie na podstawie numeru rejestracyjnego auta. Dane zawarte w samym kodzie kreskowym są tylko ciągiem znaków, któremu w odpowiedniej bazie danych przyporządkowane są pewne informacje.
 
 
Dla przykładu, kod kreskowy wydrukowany przez producenta na oryginalnym opakowaniu towaru (np. soku w kartonie), nie zawiera informacji dotyczącej ceny tego towaru. Jednak przy kasie, po zeskanowaniu kodu, na monitorze ukazuje się jego cena. W innym sklepie zeskanowanie tego samego kodu powoduje pojawienie się innej ceny. W każdym z tych sklepów tej samej wartości kodu kreskowego przyporządkowane są różne wartości ceny towaru. Natomiast w obydwu sklepach ten sam kod będzie najprawdopodobniej identyfikował dokładnie ten sam towar, gdyż ma identyczną wartość na wszystkich swoich opakowaniach. Dodam od razu, że dzięki oznakowaniu kodem kreskowym jesteśmy w stanie zidentyfikować producenta danego towaru. Jest to możliwe właśnie dzięki globalnemu stosowaniu standardu GS1 do znakowania towarów.
 
Jak więc widać kod kreskowy pełni przeważnie rolę identyfikatora pozwalającego w szybki sposób otrzymać z bazy danych informacje z nim związane.
 
Od każdej reguły, również w tym przypadku, są jednak wyjątki. Istnieje bowiem możliwość zapisania pewnych danych bezpośrednio w treści kodu kreskowego. Stosuje się ją jednak raczej rzadko i ma sens jedynie w przypadku danych o małej ilości znaków (np. oznaczenie tylko daty produkcji towaru), gdyż zapisanie w ten sposób większej ilości informacji powodowałoby powstanie zbyt dużych rozmiarów kodów kreskowych, których odczytanie byłoby bardzo trudne. Jeśli zachodzi konieczność zapisu nieco obszerniejszych informacji bez odwoływania się do zewnętrznych baz danych, stosuje się kody dwuwymiarowe, które są coraz powszechniej stosowane. Przykład takiego kodu znaleźć można w dowodzie rejestracyjnym pojazdu. Umieszczone tam dane zawierają wszystkie informacje identyfikujące pojazd, a więc numer silnika, numer nadwozia itp. 
 
 
Kod kreskowy wcale nie musi być taki sam
Na koniec wspomnę o jeszcze jednym aspekcie kodu kreskowego. Jak już pisałem na wstępie, historia kresek sięga lat czterdziestych ubiegłego wieku. Na przestrzeni lat powstało wiele różnych sposobów kodowania znaków przy pomocy jasnych i ciemnych pasków – tzw. symbolik. Niektóre źródła podają, że ich liczba sięga nawet 400. Na szczęście nie wszystkie są stosowane. Oprócz standardu GS1, o którym już wspominałem, a który wykorzystuje konkretną symbolikę, jest tylko kilka, które zdobyły popularność i są powszechnie stosowane. Niektóre z nich mogą przedstawiać tylko cyfry (np. kod Przeplatany 2 z 5, EAN-8, EAN-13), inne cyfry i litery (Code 39, Code 128). Niektóre kody mają ściśle określoną liczbę znaków (EAN-8 jest ośmio-, EAN-13 - trzynastocyfrowy). Kody o zmiennej długości to m.in. Code 128 i Code 39. 
 
Aby zwiększyć pewność odczytu kodu stosuje się dość szeroko sumy kontrolne. Sumy kontrolne występują najczęściej w formie jednego znaku na końcu kodu. Cyfra kontrolna liczona jest wg specjalnego algorytmu skonstruowanego tak by łatwo można było wychwycić wszelkie przekłamania odczytu. Oczywiście algorytm ten również musi być standardowy - tak by każdy czytnik kodów kreskowych potrafił go obliczyć (czyli sprawdzić poprawność cyfry kontrolnej). W niektórych kodach cyfra kontrolna jest widoczna (np. EAN-13) w niektórych jest ukryta (np. Code 128), a w niektórych od projektanta kodu zależy czy będzie ona widoczna, czy będzie ukryta.
 
Jak wygenerować kod kreskowy?
W dzisiejszych czasach, w dobie Internetu stworzenie kodu kreskowego nie stanowi wyzwania. W sieci są różne generatory pozwalające na wygenerowanie zakodowanych w kodzie kreskowym znaków. Wykorzystywane są również czcionki, które zainstalowane na komputerze PC, zamieniając litery na odpowiednie kreski. Innym sposobem uzyskania kodów kreskowych są programy dedykowane do projektowania i drukowania etykiet. Praktycznie wszystkie takie aplikacje pozwalają na stworzenie kodu. Ich zaletą jest to, że mechanizmy wewnętrzne takiego programu zadbają o wszystkie niezbędne elementy kodu, takie jak jego gęstość, wysokość czy obecność cyfry kontrolnej. 
 
 
Mam nadzieję, że po lekturze tego artykułu, z większą świadomością będziecie patrzeć na  kod kreskowy i to co on reprezentuje. Być może gdzieś, kiedyś, komuś ta wiedza się przyda.


blog comments powered by Disqus