Technológia

Vonalkód története, típusai, szerkezete

A vonalkód olyan, gépekkel leolvasható kód, amelynél különböző vastagságú függőleges sötét vonalak és világos közök meghatározott váltakozása fejezi ki az információt. Általában alattuk számokat is elhelyeznek. Leggyakoribb felhasználási területe a kereskedelem, például az áruk csomagolásán, ami lehetővé teszi az áru következő adatainak gyors azonosítását:

  • a gyártó ország
  • a gyári szám
  • a termék cikkszáma

Vonalkód jelképekkel megjelenített azonosító számok lehetővé teszik a gépek számára az elektronikus leolvasást, aminek eredményeképpen használata nagyban segíti és gyorsítja az információ áramlását a bolti pénztáraknál, raktári átvételnél, illetve minden olyan helyen, ahol az üzleti folyamatokban lehetséges.

Az egységes szerkezetű számozási, azonosítási rendszer és az automatikus adatgyűjtést biztosító vonalkódok mára sokféle méretben léteznek, és ha szükséges, a csökkentett helyigényű, úgynevezett Databar (korábban RSS) kódok akár egy kis ampullán is elhelyezhetők. A klasszikus kereskedelmi alkalmazásokon kívül a vonalkódoknak jelentős szerepük van az élelmiszerek és gyógyszerek nyomon követésében.

A vonalkódos azonosítás a GS1 rendszer legismertebb eleme, amely a kereskedelmi folyamatok elválaszthatatlan része. A vonalkód jelképekkel megjelenített azonosító számok teszik lehetővé a gépek számára az elektronikus leolvasást (szkennelést), ami nagyban segíti és gyorsítja az információ áramlását a bolti pénztáraknál, raktári átvételnél, illetve minden olyan helyen, ahol az üzleti folyamatokban szükséges.

Történet

A vonalkód-leolvasó és -kiértékelő rendszer szabadalmi leírását Classifying Apparatus and Method címmel 1949 októberében nyújtotta be feltalálója, Norman Joseph Woodland amerikai gépészmérnök (1921–2012) és munkatársa, Bernard Silver (1924–1963). A szabadalmi okiratot 1952. október 7-én állították ki. A két feltaláló később eladta a találmány összes jogát 15 000 dollárért a Philco iparcikk-kereskedő vállalatnak.

A vonalkód leolvasását erre kifejlesztett készülékek teszik lehetővé, elsősorban a pénztárosok számára. Legelőször az Amerikai Egyesült Államokban, Troy városban (Ohio állam) alkalmazták egy szupermarketben, egy Wrigleys rágógumin lévő kód leolvasásakor 1974. június 26-án. A vonalkód használatát Magyarországon legelsőként a Skála Budapest Nagyáruház vezette be, 1984-ben, majd az 1990-es évek óta az egész országban elterjedt.

A vonalkódban nem a fekete vonalak, hanem a köztük lévő fehérek a „hasznosak”, mivel ezekről verődik vissza a leolvasó által kibocsátott impulzus. A különböző vastagságú és távolságú fehér vonalak egy számsorozatot kódolnak, amit általában számjegyekkel is kiírnak a vonalkód alatt.

Típusai

Az Európában használt kereskedelmi forgalomba kerülő vonalkód szabványa a GS-1 kódolás (régebben EAN kódolás, azaz European Article Numbering), ebben 13 számjegy jelöli az illető terméket (GTIN – Global Trade Item Number, azaz globális termékazonosító szám). Ezen számsorozat utolsó jegye egy ellenőrző szám, ami egy speciális algoritmus eredményeképpen adódik az első 12 számjegyből.

Az első tizenkét számjegy az alábbi jellemzőket határozza meg:

  • Első 3 számjegy: az országjel (Magyarországé: 599, ami azt jelenti, hogy Magyarországon van az a forgalmazó, aki előfizetett a GS1-kódra)
  • Következő 2–7 számjegy: Forgalmazó vagy gyártó céget azonosítja. Hivatalos neve az országkóddal együtt cégprefix. Minél rövidebb cégprefixet vásárol a vonalkód felhasználója, annál nagyobb termékpalettát tud egyedi azonosítóval ellátni – és természetesen annál nagyobb éves díjat is fizet.
  • Fennmaradó számjegyek (2–7 számjegy): Magát a terméket és kiszerelését azonosítja. Természetesen, mivel csupán egy sorszám utal (az ország és a gyártó száma után) a termékre, külön kell a leolvasó (kereskedő) rendszerében hozzárendelni a termék valódi nevét, kivéve ha a vonalkódtartomány gazdája az egyes vonalkódokhoz tartozó adatokat feltöltötte a GS1 rendszerébe (GDSN – Global Data Synchronization Network, azaz Globális adatszinkronizációs hálózat). A szabvány szerint egy termék különböző kiszereléseit különböző azonosítóval kell ellátni (pl. 0,5 literes és 1,5 literes ásványvíz).
  • 13 számjegy: Ellenőrző karakter

Szerkezete

A vonalkód sötét vonalakból és fehér közökből áll. A vonalkódon belül három hosszabb vonalpár két részt határol el. A részeken belül 6-6 számjegy kódja látható. Egy-egy számjegyet két vonal kódol. A 13. számjegy – amely egyébként a kódolt számok közül az első – a kódvonalak szélességének paritásából állapítható meg.

A vonalak és a közök szélessége 1, 2, 3 vagy 4 egység. Minden számjegy kód szélessége 7 egység. A határoló vonalpárok vonalainak szélessége 1 egység. A két szélső határoló a közzel együtt 3 egységnyi, a középső pedig a 3 közzel együtt 5 egységnyi.

A vonalkód első része a 2–7., a második része a 8–13. számjegyeket kódolja. Az 1. számjegy értéke abból olvasható le, hogy az első rész számjegyeinek kódolásában hogyan váltakozik az A illetve a B kódolási mód. A második rész minden számjegyének kódolási módja a C szerinti.

A három kódolási mód:

SzámjegyABC
0000110101001111110010
1001100101100111100110
2001001100110111101100
3011110101000011000010
4010001100111011011100
5011000101110011001110
6010111100001011010000
7011101100100011000100
8011011100010011001000
9000101100101111110100

A táblázatban 1 a sötét és 0 a világosabb egységet jelöli. Azt látjuk szélesebb vonalnak, ahol több sötét egység van egymás mellett.

A kódolási módokat az különbözteti meg egymástól, hogy míg az A kód szerint a számjegyek kódjában a sötétebb vonalak össz-szélessége páratlan (3 vagy 5 egység), addig a B és C kód szerint ugyanez páros (2 vagy 4 egység). A C kódolási módnál a B mód tükörképét látjuk.

Az A és a B kódolás váltakozása az első részben aszerint, hogy mi az 1. számjegy:

1. számjegyA 2–7. számjegyek kódolása
0AAAAAA
1AABABB
2AABBAB
3AABBBA
4ABAABB
5ABBAAB
6ABBBAA
7ABABAB
8ABABBA
9ABBABA

Az első részben tehát mindig három A és három B kódolású számjegy van, kivéve ha az 1. számjegy nulla, amikor mind a hat kódolása A.

Tehát míg az első részben mindig van olyan számjegy amiben a sötét vonalak össz-szélessége páratlan egységnyi, addig a második részben minden számjegy kódjában páros a sötét vonalak össz-szélessége. A vonalkódok ez utóbbi tulajdonsága alapján tehát megállapítható, hogy a vonalkódot ‘elölről’ vagy ‘hátulról’ olvastuk le. Erre azért van szükség, hogy mindegy legyen, hogy a leolvasáskor a vonalkódot ‘melyik oldalról’ – alulról vagy felülről – nézzük.

Összefoglalva. A vonalkód mindig 95 egység széles, és 30 sötét vonalból áll. A vonalakat szomszédos páronként kell értelmezni. Az 1., 8. és 15. vonalpár határoló vonal. A 2–7. és 9–14. párból az az első amelyikben van (3 vagy 6) olyan pár amire a két vonal össz-szélessége páratlan. Az első számjegy értéke abból adódik, hogy ebben az első részben hányadik jegyek vannak páratlan össz-szélességű vonalakkal kódolva. Az első rész vonalpárjait az A+B táblával, a második rész vonalpárjait a C tábla szerint kell dekódolni.

Országkódok

KódOrszág
000-139USA/Kanada
300-379Franciaország
380Bulgária
383Szlovénia
385Horvátország
400-440Németország
450-459,490-499Japán
460-469Oroszország
471Tajvan
480Fülöp-szigetek
482Ukrajna
500-509Anglia
520Görögország
529Ciprus
539Írország
540-549Belgium/Luxemburg
570-579Dánia
590Lengyelország
594Románia
599Magyarország
600-601Dél-Afrika
613Ausztria
690-695Kína
700-709Norvégia
730-739Svédország
760-769Svájc
789-790Brazília
800-839Olaszország
840-849Spanyolország
858Szlovákia
859Csehország
865Mongólia
869Törökország
870-879Hollandia
880Dél-Korea
885Thaiföld
890India
893Vietnam
899Indonézia
900-919Ausztria
930-939Ausztrália
955Malajzia

Ellenőrző szám kiszámítása

A vonalkód minden páratlan helyen álló (első, harmadik…) számjegyét hárommal, a páros helyeken állókat eggyel kell megszorozni, majd a kapott szorzatokat összeadni. A 13. számjegy az a szám, amelyet ehhez az összeghez kell adni, hogy a következő, 10-zel osztható számot kapjuk. Megfordítva, páratlan helyen lévő x-et 3-mal, páros helyen lévő x-et 1-gyel kell szorozni.

Ez egy példán bemutatva egy EAN-13 rendszerű vonalkódon a következő: 629104150021?

629104150021
×
131313131313
=
 6 6 9 3 012 115 0 0 2 3

Ezek összege: 67 Ehhez 3-at kell adni, hogy megkapjuk a következő, tízzel osztható számot, a 70-et, tehát a vonalkód helyesen: 6291041500213.

Egyéb kódolások

Sokféle kódolás (Code39, Code128 stb.) létezik, és ezeknek még annál is több alfajtája van. A speciálisabb kódokat például raktári rendszerekben, szállítmányozáskor belső azonosításra szokták használni. Van olyan kódolás, amelyik csak numerikus karakterekből, s van olyan amelyik a teljes ASCII kódtábla elemeiből építkezhet.

A Code128 11 egység széles tömbökre és egy két egység széles záróvonalra bontható. Az első tömb azt adja meg, hogy a további tömböket, mint kódokat, a Code128 három lehetséges kódtáblája közül melyikkel kell értelmezni. Például a “C” kódtábla szerint a tömbök a másodiktól az utolsó kettőt kivéve a megadott számjegyeket kódolják, kettesével. (Vagyis a második tömb az első két számjegy együttes kódja, a harmadik tömb a 3. és 4. számjegy együttes kódja, a 4. tömb az 5. és a 6. számjegyé stb.) Az utolsó előtti tömb egy ellenőrző szám kódja. Az ellenőrző szám olyan, hogy ha a kódolt számpárokat a sorszámukkal szorozva összeadjuk, s az így kapott összeghez hozzáadjuk az első és a kontroll tömb számértékét, akkor egy 103-mal osztható számot kapunk. Az utolsó tömb az úgynevezett ‘stop’ kód, a plusz 2 egység széles záró vonallal együtt.

Tehát a C128 vonalkód struktúrája, ha számsort kódol akkor a következő:

  • 1. tömb: egy ‘startC’ kód (11 egység széles)
  • 2., 3., … tömbök: a páronként vett számjegyek kódjai (mindegyik 11 egység széles)
  • az utolsó előtti tömb: az ellenőrzőszám kódja (11 egység széles)
  • az utolsó tömb a 2 egység széles záró vonallal együtt: a ‘stop’ kód (13 egység széles)

A C128 mindhárom kódtáblája olyan felépítésű, hogy egy-egy tömbben 3 sötét és 3 világos rész látható. Minden tömb sötét egységgel kezdődik és világossal ér véget. A “B” kódtáblával betűk is kódolhatóak. Az “A” kódtábla kisbetűknek megfelelő részével speciális karakterek is kódolhatóak.

QR kód

A QR-kód (Quick Response-kód) egy kétdimenziós vonalkód (tulajdonképpen pontkód), amit a japán Denso-Wave cég fejlesztett ki 1994-ben. Nevét az angol Quick Response (=gyors válasz) rövidítéséből kapta, egyszerre utalva a gyors visszafejtési sebességre és a felhasználó által igényelt gyors reakcióra. Rendkívül népszerű Japánban, ahol számos plakáton, hirdetésen szerepel, és a legtöbb mobiltelefon is képes értelmezni.

Tulajdonságai

Jó tulajdonsága, hogy bármilyen irányból készülhet róla fénykép vagy szkennelt kép, nem kell törődni a kód helyes tájolásával. Ez azért lehetséges, mert a kód megfejtésére, dekódolására szolgáló programok a három sarokban elhelyezett jellegzetes, minden QR-kódban azonos minta alapján el tudják dönteni, milyen irányban kell a kód pontjait értelmezni, feldolgozni, még akkor is, ha a kódbélyegről készült kép teljesen ferde.

Másik jelentős pozitív tulajdonsága a kód skálázhatósága, amit a Verzió 1-től Verzió 40-ig határoztak meg. A különböző verziók különböző adattárolási és hibatűrési tulajdonságokkal rendelkeznek. A legnépszerűbb 2008-ban a “Level L” (L szint) volt, mivel már ez elég sok információt képes tárolni jóval kisebb helyen, mint egy egydimenziós kód.

Az ábécé QR-kódban

QR kód adattárolási képessége
Csak számokbólMax. 7089 karakter
Alfanumerikus értékekbőlMax. 4296 karakter
Bináris adatok (8 bites szervezésben)Max. 2953 bájt
Kandzsi/KanaMax. 1817 karakter
Hibajavítási képességek
Level L7% veszteség visszaállítására képes.
Level M15% veszteség visszaállítására képes.
Level Q25% veszteség visszaállítására képes.
Level H30% veszteség visszaállítására képes.

A hiba vagy torzulás itt azt jelenti, hogy a kódbélyeg lefényképezésekor sokszor nem sikerül a mintázatot teljes pontossággal rögzíteni. A fényképezőgép (mobiltelefon) képfelbontásának korlátai miatt, vagy a kódbélyeg kis mérete, a rossz megvilágítás vagy valami szennyeződés miatt néhány jelpont rosszul látható lesz. A hibajavítás, tehát a hibák ellenére a kód tartalmának hibátlan kiolvasása úgy lesz lehetséges, hogy a kódba annak előállításakor már belefoglaltak olyan kiegészítő jelzéseket is, amelyek segítségével a dekódoló program bizonyos mértékű torzulást még képes tolerálni. Hogy ennek a jeltorzulásnak mikor mekkora a megengedett legnagyobb mértéke, a kód előállításához használt, szabványosított módszerek megválasztásán múlik, és ezt a kód elkészítésekor döntheti el a felhasználó, a használt program lehetőségein belül.

A QR-kód a Reed-Solomon kódolást használja hibajavításra. Az alábbi példában látható, hogy a kódolás hogyan kezeli a torzulásokat. Az utóbbi két módosított kód is értelmezhető „L” szintű beállítások esetén.

Adatok hozzáadása

Szabványosítás

Hibatűrő képessége és a támogatott adatformátumok miatt hamar népszerűvé vált a kétdimenziós kódok között is. A JIS (Japán Ipari Szabvány) X 0510 számmal szabványként fogadta el 1999 januárjában, majd az ISO szabványként is felterjesztették. 2000 júniusában ISO/IEC 18004 nemzetközi szabvánnyá vált, amit 2006-ban és 2015-ben kiegészítettek. 

Nemzetközi szabványként való elfogadása után még gyorsabb terjedésnek indult. Németországban például több városban is ilyen kódolással nyomtatnak vonaljegyet a tömegközlekedési eszközökön.

Jogdíjmentesség és védjegyoltalom

A QR-kód ingyenesen felhasználható nyílt szabvány. A kapcsolódó szabadalmak a Denso Wave tulajdonában vannak, de a QR-szabványnak megfelelő felhasználásuk ingyenes. 

A „QR Code” név a Denso Wave védjegye, így a védjegyoltalom alá eső országokban a tulajdonos Denso Wave-et is meg kell jelölni használata esetén. Mindez nem érinti a QR-kódot, mivel az önmagában, a „QR Code” név megadása nélkül is használható. 

Továbbfejlesztése

A QR-kóddal egy probléma van: nem köthető személyhez, így könnyen lemásolható, sokszorosítható, vagy jogosulatlanul felhasználható.

A magyar Cellum nevű cég motion-dynamic QR code-ra keresztelt megoldása egyszerre teszi lehetővé az azonosítást és a jogosultság ellenőrzését. Nem szükséges hozzá online kapcsolat, bármikor, bárhol lehet vele azonosítani.

A mozgó, folyamatosan változó QR-kód lényege, hogy az azonosításra használt eszköz nem egyetlen QR-kódot mutat, hanem egy ezekből álló, 3 tizedmásodpercenként változó kódfolyamot. A tartalom sem egyetlen rávillantással szedhető ki a jelből, a leolvasó eszköznek 1,5 másodpercnyi szkennelésre van szüksége ahhoz, hogy leolvassa az információkat, ami a felhasználó azonosítására alkalmas információkat is tartalmazhat (pl. fénykép).

Az ábécé QR-kódban

Esztétikai módosítások

Bár a szabványtól való eltérés licencproblémát és rosszabb felismerhetőséget is okozhat, a QR-kódok magas hibatűrő képessége miatt gyakran előfordul a kód kisebb esztétikai célú módosítása. Ez például akkor lehet hasznos, ha a kód egy grafikus hirdetés részét képezi, és az a cél, hogy a reklám képi megjelenésétől ne üssön el a QR-kód fekete-fehér, szögletes ábrája.

Lehetőség van például arra, hogy a QR-kód belsejébe logót vagy fényképet helyezzenek el, és – bizonyos határok között – az ábra színét és formáját is el lehet változtatni anélkül, hogy a kód olvashatatlanná válna.

Egy új eljárással a QR-kód mögé bármilyen kép tehető. A kód pontjai átlátszóak lesznek és speciális kialakításuk van. Az átlátszóság növelésével a kód jobban beleolvad a képbe, azonban így csökken az olvashatósága is. Régebbi típusú készülékek és QR-kód olvasó programok az ilyen kódokat lassabban olvashatják be.

DataMatrix-kód

A DataMatrix-kód egyike a legnépszerűbb 2D-s kódoknak. Az 1980-as évek végén az Amerikai Egyesült Államokbeli Acuity Corp révén lett híres.

Szabványosítás

A DataMatrix 2000-ben vált nemzetközi ISO/IEC 16022 szabvánnyá, melyet 2008-ban az ISO/IEC TR 24720 szabvány követett. 2004-ben a GS-1, a globális szabványok terén működő nemzetközi szervezet a DataMatrixot hivatalos GS-1 standardként ismerte el. 

Tulajdonságai

  • Adatsűrűsége nagyobb, mint a többsoros illetve az 1D jelképeké.
  • A Datamatrix-kód csak 2D CCD-imager scannerekkel olvasható.
  • Nyílt szabványokra épül.
  • jól alkalmazható, mint kisméretű azonosító jel a terméken, de akár automatikus raktári olvasása is alkalmas különböző szállítói csomagolásokon.
  • Nyomtatható a lineáris jelképekhez használt eszközökkel.
  • A Datamatrix jelkép lehetővé teszi numerikus, alfa-numerikus, ASCII, bináris tartalom, nemzeti karakterek kódolását is. 
  •  

Adattárolási képessége

A 144×144 ECC-200 DataMatrix-kód maximum 3116 numerikus, 2335 alfanumerikus vagy 1556 bináris karaktert tárolhat.

Hibajavítási képességek

Maga a szabvány hibafelismerő és javító algoritmussal is el van látva, amely segítségével még olyan DataMatrix kódok is sikeresen olvashatók, amelyek össze vannak karcolva, foltosak, koszosak vagy akár a kód 20%-ban hiányos.

A nyomtatási kontrasztnál sincsen komolyabb követelmény megadva, ezért még a gyengébb minőségű kódokat is biztonsággal beolvassák a mai modern kódolvasó eszközök, rendszerek.

Ezek miatt vált nagyon népszerűvé az olyan helyeken, ahol a kód különböző külső behatásoknak, mint például zsír, kosz, festék, vegyi bevonatok lehet kitéve.

forrás: wikipédia