Стандарты штрих-кодирования
История создания
Существует несколько различных версий создания штрих-кодирования. По наиболее распространенной изобретателем штрихового кодирования является выпускник инженерного факультета Массачусетского технологического института Давид Коллинз. Сразу после окончания института Коллинз поступает на Пенсильванскую железную дорогу, где сталкивается с тяжелой и кропотливой работой по сортировке вагонов. Как часто бывает в истории изобретений, лень становится двигателем прогресса и молодой инженер решает автоматизировать процесс - цифровые номера вагонов (которые применялись на железной дороге с конца 19-го века) освещаются мощными прожекторами и считываются фотоэлементами. Чтобы упростить процесс считывания и уменьшить количество ошибок при считывании Коллинз предложил параллельно с цифровым кодом наносить специальную маркировку из последовательности красных и синих полос, вписанных в специальный прямоугольник, длиной в 50 см. В 1968 году было качественно изменено сканирующее устройство - вместо прожектора стали использовать узконаправленный лазерный луч, что позволило существенно сократить энергозатраты и размер маркировки. Дальнейшие работы по оптимизации штрих-кода привели к значительному уменьшению размера маркировки и установки по ее считыванию, что позволило использовать штрих-кодирование для маркировки товаров и т.д. Современные системы считывания используют световой или лазерный пучок размером 0,25 см и имеют очень высокую степень защиты от ошибок (вероятность неправильного считывания составляет 1: 1млн.)
Общие сведения о штрих-кодировании

Штриховой код (штрих-кодовая символика) представляет собой последовательность черных линий и белых промежутков четко определенных размеров, с помощью которых происходит кодирование цифровой и другой информации в удобной для машинного считывания форме. Каждая цифра или знак кодируется набором штрихов и промежутков по четко определенным правилам (стандарт штрих-кода). Существует два основных стандарта штрихового кодирования - линейные (одномерные или 1D) и двухмерные (2D) символики штрих-кодов.

Линейными (одномерными) называются штрихкоды, читаемые в одном направлении (по горизонтали). Наиболее распространнеными являются следующие линейные символики: EAN, UPC, Code39, Code128, Codabar, Interleaved 2 of 5. Линейные символики позоволяют кодировать небольшой объем информации (до 20-30 символов - обычно цифр) с помощью несложных штрих-кодов, читаемых недорогими сканерами.

Двухмерными называются символики, разработанные для кодирования большого объема информации (до нескольких страниц текста). Двухмерный код считывается при помощи специального сканера двухмерных кодов и позволяет быстро и безошибочно вводить большой объем информации. Расшифровка такого кода проводится в двух измерениях (по горизонтали и по вертикали).

Структура одномерного штрих-кода
Носителем основной информации в штрих-коде является соотношение ширины темных полос (штрихов) и ширины пробелов между штрихами. Причем каждая цифра кодируется определенным количеством штрихов и пробелов, которые имеют соответствующую ширину и строго определенное расположение.
Отведенное для каждой цифры кода место называется "цифровой знак" и является основной единицей информации штрих-кода. Все цифровые знаки, как правило, имеют одинаковую ширину и состоят из модулей, поэтому ширина штрихов и пробелов всегда кратна модулю. Модуль - самый узкий элемент, что видно из рисунка:

Для того чтобы удобно записывать штриховой код каждой цифры применяют двоичную систему записи цифр, которая отлично сочетается с дискретностью штрих-кода. Для этого штрихи обозначают цифрой "1", а пробелы - "0". К примеру штриховой код цифры 5 в системе EAN записывается в этой системе так: 0110001.

Структура двумерного штрих-кода
Двухмерные, или 2D штрих-коды являются новейшими разработками в области штрихового кодирования. Данный вид штрих-кода основывается на принципе кодирования информации не только по горизонтали, как линейные штрих-коды, но и по вертикали. Существует два основных вида 2D кодов: Stacked liner и Matrix. Stacked liner -коды обычно увеличивают информацию хранимую в штрих-коде за счет расположения одномерных штрих-кодов один над другим. Штрих-коды Code 16K, Codablock и Code 49 - ранние представители этого семейства. Эти штрих-коды предполагают среднюю емкость информации (до 144 символов), но уступают некоторым последним 2D штрих-кодам по плотности информации и в том, что они не обеспечивают коррекцию ошибок, которая позволяла бы правильно считывать даже минимально поврежденные штрих-коды.

Начало создания 2D штрих-кодов относят к 1984 году, когда Automotive Industry Action Group (AIAG) опубликовала стандарт для маркировки грузов и деталей, содержащий четыре "stacked" (поставленных один на другой) штрих-кода Code 39. Эти коды содержали артикул детали, количество, отправителя и серийный номер.
Первый действительно двухмерный код был представлен фирмой Intermec Corporation в 1988 году, когда они предложили Code 49. С тех пор шесть других систем (символик) двумерного кодирования были изобретены или перепроектированы для создания портативной базы данных в минимально возможном пространстве.

Двухмерный код (или 2D код) - наиболее общее наименование для всего этого класса символик..
Названия стековая символика (stacked symbology) или многорядный код (multi-row code) более точно отражают сущность серии кодов, в которых данные кодируются в виде нескольких строчек обычноых одномерных штрихкодов.
Название матричный код(Matrix code) применяется для обозначения двухмерных кодов, основанных на расположении черных элементов внутри матрицы. Каждый черный элемент имеет одинаковый размер и позиция элемента кодирует данные.

Двухмерный код содержит кодированную информацию как по горизонтали, так и по вертикали. Поскольку оба направления содержат информацию, теряется возможность использования вертикальной избыточности. Для предотвращения потери читаемости и обеспечения быстроты считывания должна использоваться другая технология. Борьба с ошибками обеспечивается достаточно просто - большинство двухмерных кодов используют специальные контрольные суммы, позволяющие гарантировать достоверность вводимой информации.

Структура RSS-кода

В 1996-2000 гг. Ассоциацией EAN International совместно с американским Советом по использованию единого кода UCC было разработано новое семейство линейных штриховых кодов - символики сокращенной размерности (англ. - Reduced Space Symbology, или RSS). RSS характеризуется относительно малыми размерами штрихового кода по сравнению с кодами EAN/UPC и предназначена специально для совместного использования с другими новыми штриховыми кодами так называемой композитной символики (англ. - Composite Symbology). Разработка RSS и композитной символик вызвана давно назревшей необходимостью маркировки малоразмерных объектов, на которые штриховой код EAN/UPC стандартного размера нанести затруднительно, а иногда и вовсе невозможно.

RSS представляет собой набор штриховых кодов, предназначенных для кодирования 14-разрядного глобального товарного номера EAN/UCC (англ. - Global Trade Item Number или GTIN).
В соответствии с правилами EAN/UCC товарные номера EAN-13, EAN-8, UPC и 14-разрядный код транспортной упаковки ITF-14 должны храниться в памяти компьютера в едином 14-значном формате. При этом, если длина кода меньше 14 разрядов, то он записывается со сдвигом вправо, а пустые левые разряды заполняются нулями.

Композитная символика (англ. - Composite Symbology) состоит из двух частей: линейного символа и напечатанного над ним двумерного компонента. В качестве линейного компонента может использоваться любая из существующих линейных символик (включая RSS). Однако RSS более предпочтительна в случаях, когда необходимо получить штриховой код минимального размера.
Отличительной особенностью композитной символики является использование линейного символа в качестве ссылки (ключевой информации) для двумерного компонента. Это позволяет существенно сократить площадь двумерного компонента.

Штрих-кодовая символика ЕАN/UРС

Является наиболее распространенным стандартом для маркировки товаров.
Штриховой Код EAN является непрерывным, имеет фиксированную длину и высокую плотность записи позволяет отобразить 13 цифр от 0 до 9.Кодовое обозначение может выражаться восемью (EAN-8) или тринадцатью (EAN-13) цифрами, причем в первом случае кодируется 7 цифр, а во втором - только 12 цифр, последний знак является контрольной суммой, подтверждающей правильность считывания кода. Знаки штрихового кода EAN состоят из двух штрихов и двух промежутков.


Краевые знаки (удлиненные штрихи - знаки начала и конца символа) определяют его границы; символ делится на две части разделительным знаком (удлиненные штрихи в центре символа).


Любые товары, предназначеные для розничной продажи всегда маркируются по штрих-кодовой символике EAN. Также в этой символике могут маркироваться товары групповой продажи - например, упаковки с минеральной водой.

Код EAN-8
Код EAN-13
Штрих-кодовая символика ITF-14

Штрих-кодовая символика ITF-14 хорошо приспособлена для печати на поверхностях невысокого качества - например на гофрокартоне.

В штрихкодовом символе ITF для повышения надежности считывания используется знак контрольной суммы.
Контрольный знак располагается непосредственно после информационных знаков перед знаком "Стоп". Если добавление контрольного знака делает количество знаков в кодируемых данных нечетным, впереди кодовой строки непосредственно после знака "Старт" добавляется "0".

Данной символикой маркируются товары, не предназначеные для продажи через через системы РРО. Чаще всего это групповые упаковки стандартного количества однородных товаров - ящики, упаковки, поддоны и т.д.

Штрих-кодовая символика Code 128

Code 128 является непрерывным двунаправленным контролепригодным кодом переменной длины и позволяет отобразить 128 знаков ASCII, то есть позволяет закодировать не только цифровые, но и знаковые переменные.

Code 128 - штрих-код высокой плотности, отличительной особенностью которого является возможность кодирования ста пар чисел, позволяющей вдвое увеличить плотность записи при представлении штриховым кодом цифровых данных.
Знаки Code 128 состоят из трех штрихов и трех промежутков. Штрихи и промежутки имеют модульное построение и их ширина составляет от одного до четырех модулей. Ширина знака равна одиннадцати модулям. Исключением является знак "Стоп", который состоит из тринадцати модулей и имеет четыре штриха и три промежутка.

Символика Code 128 широко используется при поставках В2В и на производстве. В данной маркировке можно поставить не только Глобальный номер торговой еденицы (GTIN), но и дополнительные сведения о товаре: дату изготовления, массу нетто, вес изделия, серийный номер, срок годности и т.д.

2D штрих-кодовая символика PDF-417
Стековая символика PDF417 была введена в 1991 году фирмой Symbol Technologies. PDF происходит от сокращения Portable Data File (Портативный Файл Данных), штрих-кодовый символ состоит из 17 модулей, каждый из которых содержит 4 штриха и пробела (отсюда номер 417). Штрих-код открыт для общего пользования.

Структура кода поддерживает кодирование максимального числа от 1000 до 2000 символов в одном коде при информационной плотности от 100 до 340 символов. Каждый код содержит стартовую и стоповую группы штрихов, увеличивающие высоту штрих-кода. Один символ в коде PDF несет в себе до 1,1 килобайт машинно-читаемых данных на площади, сравнимой с размерами обычного штрих-кода.В отличие от линейного штрих-кода, требующего привязки к большой базе данных, символ PDF417 сам является базой данных.
PDF417 отвечает требованиям недорогого способа ввода, хранения и передачи больших объемов данных. Он может передавать целые файлы данных (текстовые, числовые, двоичные), кодировать графику, отпечатки пальцев, транспортные накладные, сообщения электронного обмена данными (EDI), инструкции настройки оборудования и т.д.
PDF417 является стандартной двухмерной символикой. Он обладает отличными характеристиками и подходит для самых различных применений и, кроме того, открыт для общего пользования и соответствует понятию "открытый стандарт". По этим причинам PDF417 признан в качестве стандартной двухмерной символики ведущими организациями, устанавливающими стандарты:
" American National Standards Institute (ANSI) опубликовал недавно новый двухмерный стандарт: ANSI MH 10.8.3M для маркировки грузовых отправлений с использованием двухмерных кодов. Стандарт рекомендует использовать PDF417 во всей логистической документации, использующей EDI (электронный обмен данными). Большинство ассоциаций стандартизации будут использовать этот стандарт ANSI в качестве основы своих промышленных спецификаций.
" AIM USA и AIM Europe, аккредитованные ANSI в качестве организаций, выпускающих стандарты одобрили и опубликовали PDF417 как стандарт "Единая Спецификация Cиволики" - Uniform Symbology Specification (USS).
" U.S. Department of Defense (Министерство Обороны США), утвердило PDF417 в качестве стандартного штрих-кода для логистики и как EDI-носитель на бумажных этикетках и документах.
" American Association of Motor Vehicle Administrators (AAMVA)(Американская Ассоциация Транспортных Средств), одобрила и утвердила PDF417 для широкого диапазона транспортных применений.
" Automotive Industry Action Group (AIAG) (Группа представителей Автомобильной Промышленности) выбрала PDF417 в качестве основы своего стандарта B-10 для отправки и приема грузов.
" Telecommunication Industry Forum (TCIF) (Форум Телекоммуникационной Промышленности) рассматривает PDF417 в качестве стандарта двухмерного кода для маркировки продукции.
Кроме того, Отдел Персонала Министерства Обороны США (U.S. Department of Defense, Office of Personnel and Readiness) выпустил несколько миллионов идентификационных военных карточек, использующих код PDF417.

2D штрих-кодовая символика Aztec
Aztec Code введен Энди Лонгэйсром (Andy Longacre) из фирмы Welch Allyn Inc. в 1995 году и открыт для общего использования. Aztec Code разработан для легкой печати и легкой расшифровки. Штрих-код представляет собой квадратную матрицу с концентрическими квадратами в центре, которые служат для определения позиции кода относительно сканера и мерной линейкой по краю кода. Наименьший штрих-код Aztec имеет площадь 15x15 модулей, наибольший - 151x151. Минимальный код Aztec кодирует 13 цифр или 12 букв, а максимальный - 3832 цифры или 3067 букв или 1914 байт данных. Символика не требует свободной зоны вокруг штрих-кода. Существуют 32 градации размера кода с возможностью пользовательской установки защиты от ошибок по методу Рида-Соломона (Reed-Solomon) от 5% до 95% от области кода. Рекомендуемый уровень - 23% емкости кода плюс 3 кодовых слова. Кодируются все 8-битовые значения. Величины 0 - 127 представляются в виде набора символов ASCII, значения 128-255 представляются как ISO 8859-1, Latin Alphabet No.1. Кроме данных можно закодировать два служебных символа: FNC1 для совместимости с некоторыми существующими приложениями и ECI (escape-последовательность) для стандартизованной кодировки сообщений.

Существуют два основных формата символа Aztec Code: "Compact" (Компактный) символ с мишенью из двух квадратов и "Full-Range" (Полный) символ с мишенью из трех квадратов. Поскольку большинство принтеров может автоматически выбирать, а сканеры автоматически распознавать оба формата, вместе два формата образуют последовательность из символов 33 различных размеров, которые могут эффективно кодировать как малые, так и большие сообщения.

2D штрих-кодовая символика Data Matrix
Код Data Matrix от фирмы CiMatrix представляет собой двухмерный код, разработанный для размещения большого объема информации на ограниченной площади поверхности. Штрих-код Data Matrix может хранить от одного до 500 символов. Код может масштабироваться от 1-mil плотности до 14-дюймовой площади. Это означает, что код Data Matrix имеет теоретическую максимальную плотность 500 миллионов символов на дюйм! На практике плотность, конечно, ограничивается разрешающей способностью печатающих устройств и сканеров.

Код имеет несколько интересных особенностей. Поскольку информация кодируется абсолютной позицией элемента внутри кода, т.е. позицией относительно границ кода, код не так чувствителен к дефектам печати, как традиционный штрих-код. Схема кодирования имеет высокий уровень избыточности, данные рассредоточены внутри штрих-кодового символа. Это позволяет сохранять читаемость кода при его частичном повреждении или потере части кода. Каждый код имеет измерительные линейки, которые Вы глядят как сплошная линия по одному краю символа и равномерно расположенные квадратные точки одинакового размера по другому краю. Эти линейки используются для определения ориентации и плотности кода.

Существуют два основных набора символов. Они используют свернутое кодирование для коррекции ошибок, которое использовалось в первых версиях кода Data Matrix, эти версии описаны как ECC-000 .. ECC-140. Второй набор описан как ECC-200 и использует метод Рида-Соломона (Reed-Solomon) коррекции ошибок. Символы ECC-000 .. 140 всегда имеют нечетное количество модулей по каждой стороне квадрата. Символы ECC-200 всегда содержат четное число элементов по каждой из сторон. Максимальная емкость символа ECC-200 составляет 3116 цифр или 2335 букв в символе, состоящем из 144 модулей.
Наиболее популярными применениями для Data Matrix является маркировка небольших предметов, таких как электронные элементы и печатные платы электронных приборов. Эти приложения используют способность Data Matrix разместить примерно 50 символов в коде размером 3 мм и тот факт, что код может быть прочитан при 20-процентной контрастности печати.
Код читается ПЗС-камерой или ПЗС-сканером. Символы площадью от 1/8 дюйма до 7 дюйма может быть прочитан с расстояния от контакта до 36 дюймов. Обычная скорость чтения составляет 5 кодов в секунду.