Алексей Максимов
Мы все уже почти привыкли к стационарным или компактным ручным терминалам, с помощью которых продавцы магазинов самообслуживания ловко считывают нанесенные на товары полосчатые штрих-коды. Как правило, эта процедура ускоряет оформление покупки и облегчает компьютерный учет движения товаров.
Роль штрих-кода трудно переоценить. Ведь этикетка со штрихами содержит в себе базовую информацию - ссылку на позицию в компьютерной базе данных, хранящей всю информацию о продукте (наименование, производитель, цена и т. д.). Портативные терминалы для считывания этих кодов достаточно широко представлены на российском рынке (см., например, PC Week/ RE, № 10/98, с. 29), так что у торговых предприятий действительно есть выбор.
Образцы двухмерных штрих-кодов
Но технология не стоит на месте, на смену одномерным штрих-кодам и устройствам для их нанесения и считывания идут двухмерные штрих-коды и соответствующее оборудование. На выставке CeBIT’98 мое внимание привлек новый компактный универсальный сканер QHT-1000 японской корпорации Denso, входящей в концерн Toyota Tsusho. Это устройство позволяет считывать и декодировать как одномерный штрих-код (UPC, EAN, ITF, NW7, Code 39 и Code 128), так и двухмерный код спецификации Quick Response Code (QR Code), разработанной фирмой Denso. Но прежде чем рассказать о возможностях этого сканера, попробую кратко объяснить, что такое двухмерный штрих-код.
Чуть-чуть истории
История двухмерных штрих-кодов развивалась по двум направлениям. Первое - создание матричных кодов - родилось в начале 80-х с появления двух разработок: Vericode американской фирмы Veritec и CP Code японской компании ID Tech. В конце 80-х представили свои матричные коды Data Matrix и Maxi Code компании International Data Matrix и United Parcel Services (UPS) соответственно. В 1990 г. канадская фирма Array Tech Systems предложила оригинальный вариант матричного кода Array Tag, в котором данные представлялись фигурами гексагональной и октагональной формы. Чуть позже - в 1991 г. - появился матричный код Code One американской фирмы Laserlight Systems. Свой QR Code компания Denso предложила в 1994 г., но следом за ней - в 1995 г. - появилась разработка Aztech Code американской фирмы Wellch Allyn.
Второе направление - создание квазидвухмерных составных штрих-кодов - началось в 1985 г. с появления Code 49 американской компании Intermec, в котором можно расположить до 8 рядов штрихов на том же пространстве, что занимает линейный код. В конце 80-х вышло еще несколько разработок: Codablock немецкой фирмы Identicode System, Code 16K компании Laserlight Systems и PDF417 (PDF, Portable Data File) фирмы Symbol Technologies (США). И, наконец, в 1996 г. американская компания Zebra представила претендующий на универсальность составной код Ultracode.
Из всех этих кодов особого внимания заслуживает PDF417. Он используется в армии США и других американских государственных службах . Например, его наносят на личные карточки персонала для идентификации личности. Насколько мне известно, несколько лет назад российское Министерство обороны занялось тестированием этого кода на предмет возможности его применения для идентификации личности и в военной логистике. К сожалению, данными о результатах этого проекта я не располагаю.
Другой важной особенностью кода PDF417 является впервые встроенный в него метод коррекции ошибок Рида - Соломона. Этот метод изначально разрабатывался математиками Ридом и Соломоном из компании Hughes Aerospace для космических зондов типа “Вояджер” и предназначался для повышения устойчивости приема и распознавания слабого и зашумленного радиосигнала. В случае двухмерного штрих-кода метод обеспечивает чтение и декодирование изображения, даже если его значительная часть испорчена (например, оторвана или зачеркнута)
Особенности двухмерных штрих-кодов
В случае обычного (одномерного) штрих-кода записанная с помощью сочетания штрихов и пробелов разной ширины информация считывается линейно, в направлении, ортогональном штрихам (длина штриха при этом информационной нагрузки не несет). Отсюда следует ограничение на объем информации - обычно он не превышает нескольких десятков символов. Главное отличие двухмерного кода заключается в том, что в нем для хранения информации используются оба ортогональных направления на плоскости - вертикальное и горизонтальное. В результате по объему хранимой информации емкость двухмерного кода может в сотни раз превышать емкость одномерного. Если при работе с одномерным кодом необходима компьютерная база данных, то во многих случаях применение двухмерного кода позволяет отказаться от такой базы, поскольку емкость кода достаточна для хранения полной информации об объекте. В этом заключается качественное отличие двух технологий.
Сканер Denso QHT-1000
Замечу, что двухмерные коды оказываются незаменимыми, например, в автономных системах идентификации или при необходимости хранения сложных иероглифов таких языков, как японский или китайский. Практически все современные технологии двухмерных кодов, в отличие от одномерных, содержат средства коррекции ошибок и, следовательно, гарантируют большую надежность защиты данных.
Однако нельзя забывать о стоимости. Устройства для создания, нанесения, сканирования и декодирования двухмерного штрих-кода гораздо сложнее и, следовательно, дороже, чем широко распространенное оборудование для линейных кодов. Фактически по поддерживаемым объемам данных и функциональным возможностям технология двухмерного кодирования занимает промежуточное место между технологиями одномерных штрих-кодов и удаленной идентификации.
Как мы уже говорили, двухмерные коды делятся на составные и матричные. Составной код представляет собой последовательность линейных кодов, разместить которую на той же площади, что и одномерный код, удается путем уменьшения длины штрихов. Заложенная в этом коде простота форм (прямоугольники штрихов и пробелов) позволяет считывать его с помощью относительно несложных лазерных сканеров или линейных ридеров. Матричный код представляет собой частично заполненную черным красителем сетку из (в большинстве случаев) квадратных модулей - ячеек данных. Такой код считывается уже не линейным, а специальным площадным ридером.
QR Code - ставка на скорость
При разработке двухмерного матричного штрих-кода фирмы Denso особое внимание было уделено скорости считывания/декодирования. Представители компании утверждают, что им удалось достичь на порядок более высокого быстродействия - 30 этикеток в секунду (каждая емкостью 100 символов) против максимум 3 этикеток в секунду (такой же емкости) в кодировке Data Matrix или PDF417. Секрет заключается в применении комбинированного метода: считывание происходит сразу по всем направлениям, а ускорить процедуру декодирования помогают специальные детекторы положения (вложенные квадраты, расположенные в трех углах этикетки). Благодаря этим значкам сканер легко и быстро разбирается как в размере кода, так и в ориентации этикетки на плоскости.
Спецификация QR Code находится в состоянии развития, но судить об основных характеристиках кода можно, например, по варианту QR Code Model 2. Этот вариант допускает следующую максимальную емкость кода (в зависимости от типа данных): 7089 цифр, 4296 буквенно-цифровых символов, 2953 двоичных символов (8-битных) или 1817 символов японского языка в кодировке Kanji-Kana. Допускается кодирование смеси данных разных типов. Данные в QR Code представляются совокупностью черных и белых точек, каждая из которых трактуется как единица данных, или модуль. Размер кода варьируется от 21х21 до 177х177 модулей (шаг увеличения кратен 4). Нетрудно оценить, какая площадь требуется для этикетки той или иной емкости. Например, если применяется код 105х105 модулей, а размер каждого модуля равен 0,25 кв. мм, то площадь области кода составит 105х0,25 кв. мм = 26,25 кв. мм. Сюда надо добавить необходимые поля (шириной не менее четырех модулей). В итоге получаем, что искомая площадь этикетки составит (105+8)х0,25 кв. мм = 28,25 кв. мм.
Применяемый в QR Code метод коррекции ошибок Рида - Соломона предполагает добавление в записываемые данные специального кода с логикой кодирования. В зависимости от требуемого уровня надежности используются четыре уровня коррекции (естественно, за более высокую надежность приходится платить увеличением объема суммарного кода). Эти уровни, обозначаемые L, M, Q и H, гарантируют восстановление данных, если площадь поврежденной поверхности этикетки не превышает 7, 15, 25 и 30% соответственно.
Здесь приведены далеко не все особенности QR Code, но в данной статье мы не ставим целью дать его исчерпывающее описание, заинтересовавшиеся этой темой могут найти более подробную информацию в специальной литературе или на Web-узле компании Denso (www.denso.co.jp).
Универсальный сканер QHT-1000
Создать код и не создать аппаратное обеспечение для работы с ним было бы равнозначно гибели интересной идеи. Поэтому компания Denso предлагает различные средства нанесения и считывания QR Code. Если для печати можно применять широкий круг этикеточных принтеров, то сканеры требуются специализированные, использующие алгоритмы быстрого чтения и декодирования именно этого кода. До недавних пор Denso производила ручной сканер QS-10H, точечный сканер QS-10P и камеру-декодер QD-10. Новинка в этом ряду - ручной сканер QHT-1000, распознающий как QR Code, так и основные линейные коды.
Это компактное устройство массой 320 г оснащено 2 или 4 Мб памяти, подсвечиваемым ЖК-экраном с разрешением 128х64 пиксела, инфракрасным IrDA-совместимым и последовательным интерфейсами, обеспечивающими беспроводной и проводной обмен данными с ПК. В QHT-1000 применяется 16-разрядный КМОП-микропроцессор и 32-разрядный RISC-процессор, а также CCD-сканер с разрешением 0,25 мм. Размер области сканирования составляет 38х28 мм.
Разработать приложения для QHT-1000 можно с помощью фирменного инструментария BHT-Basic 3.0. Для этого устройства создана утилита инфракрасного обмена Ir-Transfer Utility, выполняемая на хост-компьютере, а также ПО Easy Pack Q, предназначенное для сбора данных, представленных в виде QR Code и линейных штрих-кодов.
Заключение
Технологии двухмерных кодов уже несколько лет применяют большие интернациональные компании и правительственные учреждения многих стран, используя их главные преимущества, - высокую емкость, автономность, компактность, защищенность и открытость стандартов. Все возможные области применения, пожалуй, и не перечислишь. В первую очередь это логистика, промышленное производство, техническое обслуживание, медицина и различные системы безопасности, в которых необходимо идентифицировать личность или контролировать права доступа. Технология QR Code, например, внедрена на автозаводах концерна Toyota, материнской компании фирмы Denso.
С автором статьи можно связаться по адресу: maksimov@pcweek.ru.