PDF417 - kod stosowy do dokumentów
PDF417 to kod kreskowy opracowany w 1991 roku przez Ynjiuna Wanga z firmy Symbol Technologies i opisany w normie ISO/IEC 15438. Skrót PDF oznacza Portable Data File, a liczba 417 opisuje budowę pojedynczego słowa kodowego: 4 kreski i 4 odstępy rozłożone na 17 modułach. Nie jest to kod matrycowy, jak QR czy DataMatrix, lecz kod stosowy (stacked) - ułożone jeden na drugim rzędy liniowych kodów kreskowych. Z tego powodu można go czytać nie tylko kamerą, ale też skanerami laserowymi, które przesuwa się po kolejnych rzędach.
Gdzie spotkasz PDF417
Najbardziej znane zastosowanie to rewers amerykańskich i kanadyjskich praw jazdy, na których kod przechowuje dane posiadacza według standardu AAMVA. Stosuje go także lotnictwo w papierowych kartach pokładowych (IATA BCBP), transport w listach przewozowych i etykietach paczek, służby celne w dokumentach odpraw oraz urzędy w formularzach i zaświadczeniach. W Polsce PDF417 pojawia się na niektórych drukach ZUS, dokumentach bankowych i potwierdzeniach nadania przesyłek. Wspólny mianownik tych zastosowań to dokument, który musi nosić przy sobie komplet danych, bez dostępu do bazy online.
Budowa symbolu: rzędy, kolumny i wskaźniki
Symbol PDF417 ma od 3 do 90 rzędów i od 1 do 30 kolumn danych. Każdy rząd zaczyna się wzorcem startowym i kończy wzorcem stopu, a tuż za nimi stoją wskaźniki rzędu (row indicators), które niosą numer rzędu, łączną liczbę rzędów, liczbę kolumn i poziom korekcji. Dzięki temu czytnik może odtworzyć symbol, nawet gdy skanuje rzędy w przypadkowej kolejności. Wysokość rzędu powinna wynosić co najmniej trzykrotność szerokości modułu, aby wiązka lasera nie przeskakiwała między sąsiednimi rzędami.
Słowa kodowe (929 wartości) zapisują dane w trzech trybach kompakcji: tekstowym, bajtowym i numerycznym. Maksymalna pojemność jednego symbolu to około 1850 znaków tekstu, 2710 cyfr lub 1108 bajtów. Gdy potrzeba więcej, norma pozwala połączyć do 99 999 symboli w jedną wiadomość (Macro PDF417).
Korekcja błędów w dziewięciu poziomach
PDF417 wykorzystuje kod Reed-Solomona z poziomami korekcji od 0 do 8. Poziom 0 dodaje tylko 2 słowa kontrolne i pozwala jedynie wykryć błąd, a każdy kolejny poziom podwaja liczbę słów korekcyjnych, do 512 na poziomie 8. Norma zaleca dobór poziomu do ilości danych: przy mniej niż 41 słowach poziom 2, do 160 słów poziom 3, do 320 poziom 4, powyżej poziom 5. Wyższy poziom zwiększa rozmiar symbolu, ale umożliwia odczyt zgniecionego lub częściowo zabrudzonego dokumentu.
Druk, rozmiar i najczęstsze błędy
Minimalna szerokość modułu (X) przy druku laserowym to 0,25 mm, przy druku termicznym lepiej przyjąć 0,33 mm lub więcej. Po lewej i prawej stronie wymagana jest cicha strefa co najmniej dwóch modułów, u góry i u dołu również dwóch. Dobrą praktyką jest utrzymanie proporcji symbolu zbliżonych do 3:1 lub 4:1, bo bardzo szerokie i niskie kody trudno zeskanować kamerą telefonu w całości. Do typowych błędów należą: zbyt niskie rzędy powodujące mieszanie danych, skalowanie obrazu z interpolacją, która zaciera granice kresek, kodowanie polskich znaków bez deklaracji zestawu oraz pomijanie korekcji w imię oszczędności miejsca. Jeżeli szukasz kodu dla zwykłego produktu w sklepie, PDF417 będzie nadmiarowy - porównaj symboliki w artykule rodzaje kodów kreskowych.