PDF417 - это многослойный линейный формат штрих-кода, используемый в различных приложениях, таких как транспорт, идентификационные карты и управление запасами. «PDF» расшифровывается как Portable Data File. Число «417» означает, что каждый шаблон в коде состоит из 4 штрихов и пробелов в шаблоне длиной 17 единиц (модулей). Символика PDF417 была изобретена Инджиуном П. Вангом из компании Symbol Technologies в 1991 году ( Ван, 1993). Она определена в стандарте ISO 15438.
PDF417 используется во многих приложениях как коммерческих, так и государственных организаций. PDF417 - это один из форматов (наряду с матрицей данных ), который можно использовать для печати почтовых отправлений, принимаемых Почтовой службой США. PDF417 также используется в стандарте авиационной индустрии посадочных талонов со штрих-кодом ( BCBP ) как символика двухмерного штрих-кода для бумажных посадочных талонов. PDF417 - это стандарт, выбранный Министерством внутренней безопасности в качестве технологии машиночитаемых зон для водительских прав, совместимых с RealID, и удостоверений личности государственного образца. Штрих-коды PDF417 также включены в визы и карты для пересечения границы, выданные Государством Израиль ( пример ).
Помимо функций, типичных для двухмерных штрих-кодов, PDF417 имеет следующие возможности:
Введение в документ ISO / IEC гласит:
Штрих-код PDF417 (также называемый символом) состоит из 3–90 строк, каждая из которых похожа на небольшой линейный штрих-код. В каждой строке есть:
Все ряды одинаковой ширины; каждая строка имеет одинаковое количество кодовых слов.
PDF417 использует базовую кодировку 929. Каждое кодовое слово представляет собой число от 0 до 928.
Кодовые слова представлены узорами темных (полоса) и светлых (пробел) областей. Каждый из этих паттернов содержит четыре полоски и четыре пробела (откуда 4 в названии). Общая ширина в 17 раз больше ширины самой узкой разрешенной вертикальной полосы (размер X); Отсюда цифра 17 в названии. Каждый узор начинается с полосы и заканчивается пробелом.
Высота строки должна быть как минимум в 3 раза больше минимальной ширины: Y ≥ 3 X.
Для представления каждого кодового слова используются три различных шаблона штрих-пробела. Эти шаблоны разделены на три группы, известные как кластеры. Кластеры помечены цифрами 0, 3 и 6. Шаблоны штрих-пробел не используются более чем в одном кластере. Строки символа циклически проходят через три кластера, поэтому в строке 1 используются шаблоны из кластера 0, в строке 2 используется кластер 3, в строке 3 используется кластер 6, а в строке 4 снова используется кластер 0.
Какой кластер можно определить с помощью уравнения:
Где K - номер кластера, а b i относится к ширине i-й черной полосы в символе (в единицах X).
В качестве альтернативы,
Где E i - это i -ое расстояние от края до следующего края. Нечетные индексы - это от передней кромки полосы до передней кромки следующей полосы; четные индексы для задних кромок.
Одна из целей трех кластеров состоит в том, чтобы определить, в какой строке (mod 3) находится кодовое слово. Кластеры позволяют считывать части символа с использованием одной строки развертки, которая может быть отклонена от горизонтали. Например, сканирование может начинаться в строке 6 в начале строки, но заканчиваться в строке 10. В начале сканирования сканер видит постоянный начальный шаблон, а затем он видит символы в кластере 6. Когда сканирование с перекосом сдвигает строки 6 и 7, тогда сканер обнаруживает шум. Когда сканирование выполняется в строке 7, сканер видит символы в кластере 0. Следовательно, сканер знает направление перекоса. К тому времени, когда сканер достигнет правого края, он окажется в строке 10, поэтому он видит шаблоны кластера 0. Сканер также будет видеть постоянный шаблон остановки.
Из 929 доступных кодовых слов 900 используются для данных и 29 для специальных функций, таких как переключение между основными режимами. Три основных режима кодируют разные типы данных по-разному и при необходимости могут быть смешаны в одном штрих-коде:
При создании символа PDF417 добавляются от 2 до 512 кодовых слов для обнаружения и исправления ошибок. PDF417 использует исправление ошибок Рида – Соломона. Когда символ сканируется, максимальное количество исправлений, которые могут быть сделаны, равно количеству добавленных кодовых слов, но стандарт рекомендует удерживать два кодовых слова, чтобы гарантировать надежность исправленной информации.
PDF417 - это сложенный штрих-код, который можно прочитать простым линейным сканированием, проведенным по символу. Для этого линейного сканирования нужны левый и правый столбцы с кодовыми словами начала и конца. Кроме того, сканирование должно знать, какую строку оно сканирует, поэтому каждая строка символа должна также кодировать свой номер строки. Более того, строчная развертка читателя не будет сканировать только строку; обычно он начинает сканирование одной строки, но затем переходит к соседнему и, возможно, продолжает пересекать последовательные строки. Чтобы свести к минимуму влияние этих пересечений, модули PDF417 бывают высокими и узкими - высота обычно в три раза больше ширины. Кроме того, каждое кодовое слово должно указывать, к какой строке оно принадлежит, чтобы можно было обнаруживать пересечения, когда они возникают. Кодовые слова также предназначены для дельта-декодирования, поэтому некоторые кодовые слова являются избыточными. Каждое кодовое слово данных PDF представляет около 10 бит информации (log 2 (900) ≈ 9,8), но напечатанное кодовое слово (символ) имеет ширину 17 модулей. Включая высоту 3 модуля, кодовое слово PDF417 занимает 51 квадратный модуль для представления 10 бит. В этой области не учитываются другие служебные данные, такие как информация о начале, остановке, строке, формате и ECC.
Другие 2D-коды, такие как DataMatrix и QR, декодируются с помощью датчиков изображения вместо нескоординированного линейного сканирования. Эти коды все еще нуждаются в шаблонах распознавания и выравнивания, но они не должны быть такими заметными. 8-битное кодовое слово займет 8 квадратных модулей (без учета информации о распознавании, выравнивании, формате и ECC).
На практике символ PDF417 занимает площадь примерно в четыре раза больше, чем DataMatrix или QR-код.