двумерный матричный штриховой код
Как создается Data Matrix?
Data Matrix является двумерным матричным штрих кодом, состоящим из светлых и темных участков. С помощью такого штрих кода можно закодировать достаточно большой объем информации (2-3Кб). Часто Data Matrix применяется при маркировке небольших предметов, например микросхем, а также в пищевой, оборонной промышленности, рекламе и других сферах.
Существует множество сайтов для создания таких кодов, но мне всегда было интересно, каким же образом текст превращается в набор черных и белых квадратиков? Должен же быть какой-то алгоритм?
При создании Data Matrix нам понадобится обратиться к арифметике полей Галуа и кодам Рида-Соломона. Рассмотрим этот процесс на простом примере.
Прежде всего, посмотрим на структуру матрицы:
Состоит наша матрица из двух частей: шаблона поиска и закодированных данных. Разумеется, размер матрицы прямо пропорционален размеру входных данных. Вокруг нашего кода обязательно должна быть свободная зона, отделяющая код от остального изображения.
Возьмем какое-нибудь короткое слово, например, “Habr” (без кавычек) и создадим для него Data Matrix. Процесс состоит из двух этапов: на этапе высокоуровневого кодирования нужно получить последовательность кодов данных и кодов коррекции ошибок, а на этапе низкоуровневого кодирования – изобразить в матрице двоичное представление этих кодов.
Высокоуровневое кодирование
В Data Matrix, как и в QR-коде, используются коды Рида-Соломона над полем Галуа (число 8 выбрано, поскольку каждое кодовое слово занимает в матрице 8 бит). Существует несколько неприводимых многочленов, позволяющих сгенерировать такое поле. Среди них
(в десятичном представлении 285, используется для QR-кодов) и
(301, используется в Data Matrix).
Для расчетов нам понадобится таблица степеней двойки для каждого элемента поля. Создается эта таблица довольно просто: если показатель степени , то возведение в степень выполняется как обычно. В противном случае
, после чего производится побитовое сложение по модулю 2 с десятичным представлением взятого неприводимого многочлена, если
. Например,
,
и т. д.
Необходимо получить кодовое слово
,
где – информационный многочлен,
– порождающий многочлен,
– общая длина кода вместе с корректировочными,
– количество информационных кодов (вместе с кодами отступа, о них – далее),
– операция взятия остатка от деления.
Создадим для начала информационный многочлен. Для этого нам понадобится знать, какого размера должна быть матрица, чтобы можно было разместить все информационные коды:
Из таблицы видно, что для кодирования строки из 4х элементов нужно взять матрицу размером 12×12 («полезная» область – 10×10), в которую помещаются 5 кодов данных и 7 кодов коррекции.
Для символов таблицы ASCII код получается следующим образом: C=ASCII value+1. Например, для символа ‘H’ C=72+1=73.
Подряд идущие цифры объединяются в пары, и для них C=N+130, где N – число, полученное в результате группировки. Например, если рядом стоят цифры 2 и 5, то C=25+130=155.
Поскольку элементов у нас меньше, чем должно быть (вместо пяти только четыре), необходимо добавить специальные коды отступа. Первым таким кодом всегда является 129. Последующие коды отступа, до первого кода коррекции ошибок, вычисляются так:
, где
– псевдослучайное число,
– номер элемента.
Для слова “Habr” получаем следующую последовательность кодов: 73, 98, 99, 115, 129.
Теперь мы можем записать информационный многочлен:
и домножить его на (
– число кодов коррекции):
Перейдем к созданию порождающего многочлена. Вычисляется он по следующей формуле:
Начинаем перемножать скобки:
Сложение в нашем поле определено как побитовое сложение по модулю 2. Сначала выполняется возведение в степень с помощью таблицы, затем их сложение и нахождение «логарифма» полученного числа для возврата к степеням двойки. В случае если после сложения степеней получается число, большее 254, берем его остаток от деления на .
После перемножения всех скобок и возведения в степень получим:
Последняя операция, завершающая высокоуровневое кодирование, и, пожалуй, самая сложная – нахождение остатка от деления на
:
Выполняется деление многочленов в столбик, но с учетом того, что вычитание, определенное точно так же, как и сложение, и умножение выполняются в поле Галуа.
Теперь мы можем записать кодовое слово полностью:
Низкоуровневое кодирование
Каждый из полученных выше кодов представляется в Data Matrix в виде квадрата размером 3х3 ячейки без правого верхнего уголка. 1 здесь соответствует старшему биту, 8 – младшему. Нужно заполнить такими элементами всю матрицу.
Приготовим сетку 10х10 (именно такого размера должна быть матрица в данном случае), на которой нарисуем контуры первых пяти элементов, как на рисунке справа. Вне зависимости от того, какого размера матрица, эти элементы всегда располагаются именно так, и никак иначе.
Остальные элементы размещаются аналогичным образом, но прежде чем нарисовать их, необходимо отметить несколько особых случаев, связанных с углами матрицы.
Если , где a – сторона квадрата, то перед нами самый простой случай, когда после размещения всех элементов непоместившиеся участки просто переносятся на противоположную сторону.
Если , то в правом нижнем углу остается «лишний» квадратик размером 2х2, который заполняется так:
Если или
, то следует обратить внимание на левый нижний и правый верхний угол, особенно на нумерацию битов:
Есть еще два случая, которые возникают только при построении прямоугольных матриц, поэтому мы их опустим.
Вернемся к нашей матрице и добавим все остальные элементы, а также укажем, какому кодовому слову соответствует каждый элемент. Стрелками показано, каким образом производится нумерация:
После переноса непоместившихся элементов получаем:
В правом нижнем углу остался незанятый квадрат (, что как раз соответствует такому случаю). Занесем в таблицу все наши коды в таком же порядке, в каком они идут в
, и их двоичные представления:
Аккуратно заполняем матрицу. Начнем с шаблона поиска и нижнего квадрата, а затем по очереди добавляем каждый код:
Матричные штрих-коды: мост между реальным и виртуальным миром
Перспективы
Что же можно с ними сделать интересного? Во-первых, можно нанести код на визитную карточку, а в коде указать ссылку на свой сайт или профиль в социальной сети.
Это не только разнообразит её дизайн, но и позволит собеседнику узнать больше о вас или написать вас сообщение, если у него есть считывающая программа. Особенно это оценят гости из стран, где такие технологии используются повсеместно.
Можно заказать себе футболку с изображением двухмерного кода. Помимо внимания окружающих, вы получите эксклюзивную вещь, другого такого рисунка не будет ни у кого. А еще кодом можно украсить тёплый вязаный шарф.
Некоторые умудряются вести сетевой дневник, где каждая запись закодирована в гигантском QR-коде. Пример подобного сайта: qrblog.nl/. Что самое удивительное, телефон успешно распознал такой код и показал зашифрованные в нем несколько предложений на английском.
Существуют печатные издания, имеющие онлайн-версии, которые печатают в конце каждой статьи ссылки на её электронный вариант или дополнительные материалы по теме.
При помощи матричных кодов можно промаркировать каждый предмет в коллекции: от картин в галерее до банок с вареньем и домашней консервацией. Для галерей ссылка на сайт с подробным описанием произведения искусства на нескольких языках, естественно, будет полезней маленькой таблички.
Наконец, такие коды можно использовать в рекламе, от газетного объявления до огромного уличного плаката. Так как эта реклама связана с веб-сайтом, можно сразу же предложить оформить заказ товара через интернет-магазин.
Аналогично можно заказать билеты на концерт, взглянув на его афшу, или же подписаться на журнал через интернет, сфотографировав код на его обложке.
При распознавании кода, содержащего SMS, телефон предлагает отправить на нужный номер SMS с некоторым текстом. Чем не идеальный способ заказа платного мобильного контента?
Некоторые делают татуировку в виде QR-кода
И напоследок, немного лёгкой эротики. На сайте, считывая с экрана коды, можно бесплатно загрузить на телефон девушек в купальниках.
Альтернативы
Одномерные, а затем и двухмерные штрих-коды были изначально разработаны как вид письменности, который бы легко могло прочитать электронное устройство.
Одновременно решалась и противоположная задача – компьютерное распознавание текстов (Optical Character Recognition, OCR), написаных обычным шрифтом.
И в этом были достигнуты значительные успехи. Сейчас программы оптического распознавания текста можно установить не только на компьютер. Появились и версии для сартфонов.
Например программа ABBYY Busines Card Reader от разработчиков системы FineReader умеет распознавать надписи на визитных карточках, автоматически находя там имя, фамилию, должность, телефон и т.п.
Основной недостаток технологий распознавания текста – ошибки в процессе распознавания. Двухмерные штрих-коды при не большем числе неверно считанных клеточек распознаются верно, благодаря наличию информации для коррекции ошибок, а сильно повреждённые коды – просто не считается.
В то же время, распознанный текст обычно содержит много ошибок, исправить которые в силах только живой пользователь. Даже интеллектуальные методы, применяющие словари для поиска подходящих слов, не могут дать надёжной гарантии.
Это способ маркировки обьектов при помощи миниатюрного радиоприемника-передатчика и антены, зачастую не требующего внешнего электропитания.
Считать метку можно специальным устройством с расстояния в несколько десятков сантиметров (в некоторых стандартах до трех метров). Существуют множества разновидностей RFID-устройств. Начиная с наклеек на товарах в магазинах и заканчивая чипами в бесконтактных пропусках или проездных билетах.
Разработан даже имплантат VeriChip размером с рисовое зернышко, который можно вживить под кожу (используется в медицине). Технология RFID заслуживает отдельной большей статьи, отмечу лишь, что для домашнего использования чипы и считыватели для них пока обойдутся намного дороже чем матричные штрих-коды, которые можно напечатать на принтере.
Poken
В небольшой шведской компании был придуман интересный способ к быстрому обмену контактной информацией. Электронная визитка на базе RFID Poken выглядит как игрушка или забавный брелок, но содержит в себе батарейку и RFID-чип.
Устройство легко в использовании и приятно на вид. Для того чтобы обменяться визитными карточками достаточно коснутся ладошками Poken`ов. Устройство может содержать в памяти до 64 визиток. Собраные визитки можно посмотреть, подключив брелок к компьютеру, на сайте.
Сейчас в мире насчитывается около 100 тыс. владельцев таких брелков. Не слишком-то и много чтобы бежать прямо сейчас в магазин за устройством ведь вероятность встретить человека с таким Poken’ом крайне мала.
Bluetooth
Ну если уж обмениваться визитными карточками в электронном виде, то нельзя не вспомнить про такую функцию как Bluetooth, ведь у каждого из нас в телефоне есть Bluetooth.
Существует много программ для удобного обмена визитками, мультимедиа файлами или обычным текстом через «синий зуб». А с развитием технологии и увеличением скорости это становится все проще и проще.
Двухмерные штрихкоды — что это такое и с чем их едят
Павел Крижепольский
Что такое двухмерный штрихкод (2d barcode)? Многие считают, что этот синоним «QR-код». Однако, на самом деле, это не совсем так — видов двухмерных штрихкодов намного больше. Именно о них мы и поговорим в этой статье.
Хочу сразу предупредить, что в этот раз текста будет довольно много, а цветных картинок мало. Да и тема довольно специфическая, и будет интересна далеко не всем. Тем более, что недавно на сайте уже была статья Виталия Буздалова про QR коды, где были четко и лаконично описаны все основные моменты — http://android.mobile-review.com/market/10514/
К сожалению, WorldPress не позволяет вставлять видео с youtube в текст статьи (либо я не разобрался как это сделать). Из-за этого пришлось вставлять картинку, при клике на которую откроется само видео.
Основное достоинство любого штрих кода — простота использования. Двухмерные коды не являются исключением, все работает по принципу «навел — снял — прочитал» и не требует каких-то специальных пояснений. Сами же программы-сканеры обычно имеют стандартный набор функций, и в детальном обзоре тоже не нуждаются. Поэтому получился в большей степени обзор самих разновидностей двухмерных штрихкодов, а не программ для их распознавания. Какой-то эксклюзивной информации в статье нет, все данные взяты из открытых источников.
Статья делится на две части — теоретическая (разновидности 2D кодов, их особенности и способы применения) и практическая (программы для сканирования и генерации кодов, сайты-генераторы и пр. )
ТЕОРИЯ
Все штрихкоды можно разделить на два типа: линейные и двухмерные.
Линейный штрихкод — это код, который читается в одном направлении. Такие штрихкоды очень просты и дешевы в использовании.
Авторами первого линейного штрихкода можно считать Бернарда Сильвера и Джозефа Вудланда. В 1948 они стали случайными свидетелями разговора между президентом крупной сети продуктовых компаний и деканом Института Технологии Университета Дрекселя, которые обсуждали создание системы, автоматически считывающей информацию о продукте.
Идея штрихкода родилась не сразу. Вначале было перепробовано несколько других вариантов, таких как метки, нанесенные ультрафиолетовыми чернилами и др. Но по разным причинам, все эти идеи оказались нежизнеспособны. На идею же самого штрихкода Джозефа Вудланда натолкнула Азбука Морзе. По его словам, он просто расширил точки и тире вниз и сделал из них узкие и широкие линии.
В 1951 году они показали свое изобретение компании IBM, но в ней почитали, что ее реализация потребует слишком сложного оборудования. Отчасти это было правдой — лазерных сканеров тогда еще не существовало и считывать штрихкоды было довольно сложно. Фактически, идея Джозефа и Сильвера опередила свое время более чем на десять лет.
Впервые широкой публике штрихкоды были продемонстрированы лишь в 1971 году на конференции по розничной торговле. Они были нанесены на лотерейные жетоны и состояли не из линий, а из окружностей. В дальнейшим от круглого варианта штрихкодов отказались — при их печати краска часто смазывалась и они становились нечитаемы.
Первый коммерческий формат штрихкода был разработан в 1972 году и получил название UPC — Universal Product Code. С тех пор форматы штрихкод многократно совершенствовались и менялись. На сегодняшний день существует более 300 стандартов штрих-кодирования.
Главный недостаток линейных штрихкодов — малое кол-во кодируемой информации. Именно для преодоления этого недостатка и были разработаны двухмерные штрихкоды.
PDF417
Сайт-генератор — http://barcode.tec-it.com
Программа-сканер — Accusoft Barcode Scanner
PDF417 был разработан компанией Symbol Technologies в 1991 году. Название PDF происходит от «Portable Data File». Число «417» отражает структуру кода — штрихкод имеет длинну в 17 модулей, состоящих из 4-х «штрихов» и «пробелов». По сути, такие блоки являются одномерным штрихкодом.
Теоретически, это должно упростить его считывание и декодирование. И скорее всего, для специальных сканеров именно так оно и есть. А вот с программами-сканерами для мобильных устройств часто бывают проблемы. Во всяком случае, у меня такие коды считываются в лучшем случае через раз. Впрочем, винить тут стоит не сам код, а исключительно программы-сканеры.
Код можно встретить на товарах, документах, билетах. Если не ошибаюсь, именно он используется на билетах АэроЭкспресса. Правда, прочитать его программой-сканером я не смог. Часто его можно увидеть и в мaгазинах, в частности на бутылках с алкогольной продукцией.
DataMatrix
Сайт-генератор — http://www.qrcc.ru/generator.php
Программа-сканер — Barcode Scanner
Код DataMatrix был изобретен компанией International Data Matrix, которая позже была объединена в Acuity CiMatrix и в 2005 году куплена компанией Siemens. Существенное влияние на разработку кода DataMatrix оказал предшествующий ему многострочный штрих-код PDF-417. В настоящее время Data Matrix описывается соответствующими стандартами ISO. Код может быть использован свободно, без каких либо лицензионных отчислений.
Код представляет собой двухмерную матрицу из черно-белых точек или модулей. В коде должно содержаться четное число таких модулей как по вертикали, так и по горизонтали. DataMatrix код может состоять как из одного, так и из нескольких блоков. В каждом блоке обязательно содержится две сплошные пересекающиеся линии в виде буквы L — так называемый «шаблон поиска», который помогает понять ориентацию кода для считывающего устройства. Две другие стороны блока состоят из чередующихся черных и белых точек, которые указывают считывающему устройству размер кода. Код использует стандарт коррекции ошибок, основанный на алгоритме Рида-Соломона. В случае повреждения кода, это позволит восстановить до 30% полезной информации.
Главное прeимущество этой разновидности двухмерных кодов — его сверхмалый размер. С помощью DataMatrix можно поместить информацию в 50 символов на площадь размером в два квадратных миллиметра. При этом, код может быть нанесен на поверхность огромным кол-вом способов : это и струйная печать, и гравировка, и лазер и многое другое. Кроме того, у кода есть две возможные формы: квадрат и прямоугольник. Это позволяет еще более эффективно использовать доступную для размещения кода площадь.
Все это делает DataMatix отличным кодом для маркировки малых объектов, например, микросхем. И именно поэтому Data Matrix очень активно применяется в промышленности. В частности, его активно используют такие крупные компании как Intel, AMD, BMW, Mercedes Benz, Siemens, Philips, NASA, Vodaphoone. Во многих странах он также используется для сортировки почты, но как с этим обстоит дело в России я не знаю. Впрочем, потихоньку он начинает появляться и у нас. Например, текущий формат больничного листа предусматривает специальное поле для размещения Data Matrix кода:
«для упрощения процедуры машинной обработки данных из больничного, в левый верхний угол бланка было добавлено поле для впечатывания в него двухмерного штрих-кода в формате Data Matrix, содержащего те же сведения, что и сам листок, причем этот штрих-код нужно иметь возможность впечатывать в заполненный ранее бланк отдельно даже в том случае, если бланк уже был сложен в несколько раз»
информация взята с сайта ФСС. Разумеется, пока наличие такого кода не является обязательным, но в будущем ситуация может и поменяться.
Хотя в промышленности DataMatrix является безусловным фаворитом, в повседневной жизни намного более распространен другой тип двумерного штрихкода — QR-код.
QR-код
Сайт-генератор – http://qrcc.ru/generator.php
Программа-сканер – Barcode Scanner
QR код это еще одна разновидность матричного кода. Его название происходит от английского «Quick Response» — «Быстрый Отклик». Он был создан компанией Denso-Wave в 1994 году в Японии. И именно в Японии он получил наиболее широкое распространение. Согласно данным опросов, в этой стране его использует более половины всех пользователей мобильной связи. В первую очередь это связано с тем, что в отличие от многих конкурентов, он понимает символы каны.
Само название «QR Code» является официально зарегистрированной торговой маркой компании Denso Wave Incorporated. Тем не менее, его использование бесплатно как для физический, так и юридических лиц и не попадает под действия каких либо лицензий.
Размеры кода могут варьироваться в довольно широких пределах : от 11 модулей в версии Micro QR (M1) до 177×177 модулей в Version 40 QR code. Официальных стандартов QR кодов, насколько мне известно, не существует. Ниже приведены примеры QR кодов разных версий, взятых из Википедии.
Как вы видите, любой QR код содержит несколько обязательных элементов. В первую очередь, это три больших «квадратика», окруженных пустым пространством. Именно по ним программа-сканер определяет позицию кода и корректирует искажение перспективы. Кроме того, код содержит еще один «квадратик» меньшего размера. Он служит для определения ориентации служебных областей. Стоит отметить, что в версии Micro QR используется всего одна метка позиционирования. Как и многие другие штрихкоды, QR код требует свободное пространство вокруг самого кода. Для полной версии кода оно состовляет 4 модуля, для микро версии — два модуля.
Как и в DataMatrix, в QR коде используется метод коррекции ошибок, основанный на алгоритме Рида-Соломона. Это позволяет легко прочитать даже поврежденный или загрязненный QR код. Существует четыре уровня коррекции ошибок. Они отличаются кол-вом информации, доступной для восстановления – L (7%), M (15%), Q (25%), H (30%). Благодаря такому «запасу прочности» можно разместить на QR коде произвольное изображение или текст. И если не будут задеты служебные области, то код все равно останется читаемым. Правда, стоит понимать, что в этом случае дальнейшая возможность коррекции ошибок сильно падает. |
Подробнее про разметку QR кодов можно прочитать на сайте анг. Википедии. Кроме того, на habrahabr.ru есть статья о том, как можно вручную прочитать QR код
У QR кодов довольно много применений. В первую очередь, они очень активно используются в рекламе и маркетинге. Начиная от банальной ссылки на рекламный ролик, размещенной на рекламном щите и заканчивая целыми интерактивными стендами. Например, на видео ниже вы видите стенд компании Tesco, размешенный в метро Южной Кореи.
С помощью мобильного телефона, люди могут на ходу заказать нужный товар, который будет доставлен им курьером как раз к моменту их приезда домой. Такие интерактивные стенды позволили компании увеличить прибыль от доставки товаров на 130%
А на фотографии ниже представлена реклама купальников Victoria’s Secret в Америке. Самое интересное заключается в том, что самих купальников на билбордах как раз нет. Есть только сама модель и QR код, сосканировав который можно увидеть альтернативный вариант плаката. С остальными фотографиями вы сможете ознакомиться на сайте первоисточника — http://ibigdan.livejournal.com/9908100.html
Интересно, насколько возросли продажи? =)
Не менее широко распространены QR коды и в туризме. Например, QR коды все чаще стали размещать на туристических объектах. В самом простом случае, такой код будет содержать короткую справку об объекте на разных языках или ссылку на Wikipedia. Но есть и более интересные варианты — например, прочитав QR код, вы сможете увидеть, как выглядел этот объект 100 лет назад. В качестве примера можно привести город Львов, где QR кодами отмечено более сотни туристических объектов. Информация есть, например, на этом сайте Аналогичные решения очень часто применяются и в музеях. Один клик — и вы находитесь на веб странице, содержащей всю информацию о заинтересовавшем вас экспонате.
Отдельно хочу отметить одно очень оригинальное решение, при котором сканируя один и тот же QR код, каждый пользователь автоматически попадет на статью именно на своем родном языке. Это стало возможно благодаря проекту QRpedia. Подробнее о нем можно прочесть тут: http://ru.wikipedia.org/wiki/QRpedia
С QR кодами можно все чаще встретиться и при оформлении билетов. В этом году и в России и в Украине собирались ввести QR коды на железнодорожных билетах. Это даст возможность заказать билет через интернет и просто распечатать QR код (или просто открыть его на экране мобильного телефона) для прохода через турникет или для предъявления проводнику. К сожалению, не знаю, работает ли уже такая система в РЖД, но точно могу сказать, что именно так обстоят дела в АэроЭкспрессе. На заказ билета через интернет я потратил несколько минут, после чего не пришлось даже его печатать – турникет успешно считал код с экрана телефона. Правда, код там используется не QR, а скорее PDF417.
Применений QR кодов сотни, они все чаще начинают проникать в нашу повседневную жизнь. Например, буквально на днях впервые «вживую» увидел визитку с QR кодом. И это оказалась действительно очень удобная штука, которая избавляет от необходимости вбивать все данные контакта вручную. Достаточно сосканировать QR код, и все данные контакта в вашем телефоне: имя, фамилия, компания, должность, e-mail, рабочие и мобильные телефоны. Не знаю, насколько такие визитки приживутся, но, на мой взгляд, идея отличная. Разумеется, на этом идеи использования QR кодов не заканчиваются. Есть масса других вариантов — татуировки с QR кодом, содержащим ссылку на страничку в соц. сети, брелоки с QR кодом, в котором зашифрованы имя и телефон владельца, QR код со ссылкой на аудио поздравление на подарке… Хорошо проиллюстрировано применение QR кодов в статье Виталия Буздалова.
Двумерный код данного формата начинает применяться и в Сбербанке (Источник — http://www.arendamest.ru/qr-kod-v-terminalach-sberbanka)
Почему он стал столь популярен на фоне уже довольно распространенного Data Matrix? Точного ответа на этот вопрос я не знаю, но мне кажется, что дело главным образом в его узнаваемости. В отличие от несколько безликого Data Matrix, он имеет свое лицо, интереснее выглядит, на него проще обратить внимание потенциальных пользователей. Учитывая, что чаще всего он применяется в маркетинге, это оказалось весьма важно. А сильные стороны Data Matrix (меньший размер, стандарт ISO ) здесь наоборот, практически не имеют значения.
Как мы видим, хотя в России QR коды пока распространены не так сильно, как во многих других странах, но, тем не менее, они постепенно становятся популярны и у нас.
Aztec Code
Сайт-генератор — http://barcode.tec-it.com/
Программа-сканер — Accusoft Barcode Scanner
Подробнее с алгоритмом декодирования Aztec Code можно ознакомиться на сайте odamis.ru по следующей ссылке. Как и в случае QR кода, у Aztec существует своя компактная версия.
Как и DataMatrix, Aztec код возможно применять там, где площадь для нанесения кода сильно ограничена. В первую очередь это обусловлено тем, что он не требует свободного места вокруг кода. Но, в отличие от DataMatrix, Aztec код может быть только квадратным. Сторона квадрата содержит от 15 до 151 модуля. Код может объединяться в блоки. Разумеется, как и остальные типы кодов, Aztec код поддерживает коррекцию данных по принципу Рида-Соломона. При этом он позволяет настроить избыточность данных от 5% до 95%.
Во многих странах данный код используется железнодорожными компаниями в электронных билетах. Кроме того, он был выбран международной ассоциацией воздушного транспорта для электронных билетов. В частности, по информации Википедии, он используется на электронных билетах Российской авиакомпании S7 Airlines. Ниже приведу цитату с офф. сайта s7.ru :
«В аэропорту вашего вылета должно быть специальное устройство, распознающее 2D-штрихкод мобильного посадочного талона. Оно находится перед входом в зону контроля безопасности и работает следующим образом: считывает информацию 2D-штрихкода мобильного посадочного талона с экрана вашего телефона, а затем распечатывает посадочный талон на бумаге.»
К сожалению, тип 2D штрихкода в этом сообщении не указан, но думаю, что Википедия не ошиблась.
Microsoft tag (High Capacity Color Barcode — HCCB)
Сайт-генератор — http://tag.microsoft.com
Программа-сканер — Microsoft Tag
Данный штрихкод был специально разработан компанией Microsoft для мобильных фотокамер. Это дает ряд преимуществ при сканировании и декодировании кода. Например, код удастся расшифровать, даже если он оказывается не в фокусе, что весьма актуально для простеньких телефонных камер без автофокуса.
Microsoft Tag довольно сильно отличается от большинства своих собратьев. Первое, что сразу бросается в глаза: в отличие от QR, Data Matrix и других монохромных кодов, он может быть цветным. Помимо белого используется еще три цвета: Yellow, Magenta, Cyan. Такой выбор цветов позволяет избежать ошибок декодирования из-за плохой цветопередачи CMYK принтера. Дополнительные цвета позволяют «впихнуть» в код больше информации не меняя его размер. Тем не менее, у штрихкода существует и черно-белый вариант.
Второе, не менее важное отличие: в штрихкоде содержатся не сами данные, а только ссылка на них (13 байт + 1 контрольный). Сами же данные хранятся на сервере Microsoft. Очевидный минус такого решения состоит в том, что без доступа в интернет воспользоваться таким кодом невозможно. С другой стороны, это дает и дополнительные возможности: можно в любой момент отредактировать «привязанную» к коду информацию, можно узнать кол-во считываний кода, можно установить срок действия кода.
Кроме того, у Microsoft Tag есть огромные возможности кастомизации. В штрихкоде этого формата вся информация закодирована в цветных точках в центрах треугольников. Все остальное поле может быть каким угодно. Это позволяет сделать штрих код действительно уникальным. Главное не перестараться, иначе кроме вас никто вообще не поймет, что это штрихкод.
Microsoft Tag распространен намного меньше, чем его аналоги. Тем не менее, кое-где он постепенно начинает входить в обиход. Например, в Татарстане, если верить новостям, правительство обязало владельцев туристических и спортивных объектов Универсиады размещать такие штрихкоды для доступа к соответствующим сайтам интернета. Новость проскальзывала, в частности, на этом сайте. Кроме того, с помощью таких же кодов можно оплачивать и гос. услуги.
У меня эта технология оставила смешанное чувство. Когда упоминание о Microsoft Tag впервые попалось мне на глаза, я отмахнулся от него, не вникая в детали. Штрихкод, для декодирования которого нужен доступ к интернету? Это не для Российских реалий. Да и напечатать цветной код сложнее, чем черно-белый. Изначально мне казалось, что при таких недостатках все плюсы этого кода уже не имеют значения. Но давайте на минуту задумаемся, какая именно информация чаще всего закодирована в 2D штрихкоде? В большинстве случаев, это ссылка на ресурс в интернете. Это может быть что угодно : сайт компании, рекламный ролик, статья об историческом объекте, но в любом случае, без доступа в интернет эта ссылка не имеет никакой практической ценности. И вот тут уже Microsoft Tag смотрится очень выигрышным вариантом. Информацию можно в любой момент поменять или обновить не меняя сам код, собрать статистику просмотров и пр. Потенциал у Microsoft Tag, безусловно, есть, но сможет ли Microsoft его реализовать — вопрос открытый.
Взгляд вперед
Вначале появились линейные штрихкоды. Затем двухмерные. Что может ждать нас в будущем?
Весьма интересной выглядит идея компании MIT Media Lab — bokode. Название произошло от слов bokeh и barcode. Прототип был показан еще в 2009 году. Диаметр метки данного кода составлял всего несколько квадратных миллиметров. Сама метка состоит из светодиода, на который накладывается специальная маска и особой линзы. Информация поступает на считывающее устройства в виде потоков света, проходящих через маску на светодиоде.
Такой код способен передавать в тысячи раз больше информации, чем линейные штрихкоды. Кроме того, его можно считать с расстояния в несколько метров (теоретический предел — 20 метров).
Более подробную информацию можно найти на сайте BBC или посмотрев видео от самой MIT Media Lab :
ПРАКТИКА
Сайт-генератор http://qrcc.ru
Один из популярных генераторов 2D штрихкодов. Позволяет создавать коды QR, Micro QR и DataMatrix. Интерфейс сайта интуитивно понятен, и я думаю, что нет смысла останавливаться на нем подробно. Вверху можно выбрать тип кода. В левой колонке — указать тип содержания. Внизу можно выбрать дополнительные параметры: иконку, которая будет отображаться на коде, текст над и под кодом, цвета текста и самого кода.
В отличие от многих подобных сайтов, qrcc.ru поддерживает большое кол-во разных типов данных. Разумеется, данные любого типа можно просто закодировать как обычный текст. Но в этом случае смартфон не сможет автоматически распознать их тип и понять, что с ними делать. В качестве примера приведу два кода с одинаковым текстом.
Как вы видите, в первом случае программа — сканер предлагает позвонить по этому номеру или сохранить его в телефонной книге. Во втором случае, программа не воспринимает этот набор цифр как номер и предлагает стандартный набор действий: поиск этих данных в интернете либо «поделиться» данными через электронную почту или смс. Впрочем, возможно это зависит еще и от самой программы.
Сайт позволяет сгенерировать данные следующих типов:
Визитка (VCARD) — после сканирования кода у пользователя будет возможность в один клик создать контакт со всеми данными в телефонной книге.
Произвольный текст — просто набор данных, программа-сканер будет реагировать на него стандартным образом
Телефонный звонок — после сканирования кода, программа предложит сохранить введенный вами номер в адресной книге либо позвонить на него.
СМС-сообщение — программа-сканер предложит пользователю отправить заданный им текст, указанный им номер в виде смс или ммс сообщения
Координаты Google Maps — позволяет вам выбрать на карте определенную точку и закодировать ее местоположение в 2D штрихкод. Сами данные по сути являются обычной ссылкой на Google Maps. Пользователю предложат перейти по ссылке, либо поделиться ей. При переходе по ссылке, сам смартфон предлагает открыть ее в браузере либо Google Maps (зависит от настроек смартфона).
E-mail адрес — пользователь сможет либо отправить по этому адресу письмо, либо добавить его в телефонную книгу. Тоже самое будет, если закодировать e-mail адрес и обычным способом, как «произвольный текст».
E-mail сообщение — содержит поля «E-mail получателя», «Тема» и «Текст». Предлагает пользователю отправить введенное им сообщение на соответствующий адрес.
Запланированное событие(VCALENDAR) — позволяет ввести название, начало и конец события. При сканировании такого кода будет возможность импортировать данное событие в календарь.
WI-FI — позволяет ввести SSID сети, пароль и тип шифрования. После сканирования такого кода, смартфон предложит вам подключиться к этой сети.
Сайт-генератор http://barcode.tec-it.com
Еще один хороший сайт-генератор. Позволяет создавать коды десятков различных типов, как линейные, так и двухмерные. Имеет более запутанный интерфейс, но предлагает больше возможностей.
Вверху сайта необходимо выбрать тип кода. Предлагает следующие варианты:
1D коды. Сюда входят 12 типов линейных штрихкодов, такие как Code-128, Code-11 и другие. У каждого кода указывается допустимый тип данных (только цифры, полный набор ASCII и пр.). Открыв раздел «дополнительные опции штрихкода» можно настроить такие параметры, как цвет кода, ориентация, зона молчания (место вокруг штрих кода).
2D коды. Сюда входят такие коды как QR, DataMatrix, Aztec, Codablock-F, PDF417, MaxiCode, MicroPDF417, Micro QR. Настройки кода аналогичны прошлой категории, но в «дополнительных параметрах» добавилась опция «корректировка ошибок» (пока поддерживается только QR кодом). Она позволяет вручную указать уровень коррекции — L, M, Q, H
Далее идет еще множество различных категорий линейных кодов: UAN \ UPC (ипользуются на товарах в магазинах), ISBN (книги и другая печатная продукция), почтовые коды, др. В конце списка представлены «Визитки» (поддерживается QR и DataMatrix), «События» (тоже QR и DataMatrix), WI-FI коды (QR и DataMatrix) — в этих пунктах все аналогично qrcc.ru
Сайт-генератор http://tag.microsoft.com
tag.microsoft.com заметно отличается от прошлых рассмотренных нами ресурсов. И в первую очередь, это связанно с особенностями формата Microsoft Tag. На самом сайте содержится масса справочного материала как по особенностям этого формата кода, так и по работе с самим генератором. К сожалению, информация доступна только на английском.
Для работы с сайтом требуется Microsoft account. Если у вас его нет — придется регистрироваться. Далее заходим в «My Tag» — «Tag manager». Для создания новой метки, выбираем «Create a tag» в левом верхнем углу менеджера.
Tag Title — имя метки, которое будет отображаться под самим штрихкодом в «истории» программы сканера
Tag Tipe — тип метки. Поддерживаются метки следующих типов: URL (ссылка), App Download (загрузка приложения, позволяет задать для каждой платформы отдельные ссылки на скачивание), Free Text (произвольный текст, до 1000 знаков), vCard (можно как загрузить готовую vCard, так и внести данные контакта вручную), Dialer (ввод телефонного номера)
Tag Notes — описание метки, длинной до 200 символов. Описание отображается только на сайте в самом в самом менеджере. Пользователь его не увидит.
Upload Thumbnail — загрузка эскиза метки, рекомендованный размер — 200 x 200, форматы JPEG, GIF, PNG
Start Date — дата, с которой метка начнет работать
End Date — дата окончания работы метки. Можно выбрать вариант «No End Date»
Поле для ввода данных — зависит от выбранного вами типа метки.
После ввода всех данных сохраняем метку, нажав на кнопку «Save». Созданная метка теперь отображается в менеджере. При необходимости, ее в любой момент можно отредактировать либо удалить. Кроме того, всегда можно посмотреть график кол-ва просмотров. Теперь загружаем созданную метку, нажав на синюю стрелочку «Download» справа.
Перед загрузкой метки необходимо выбрать формат ее кодирования. Доступные варианты: Tag Barcode (стандартный Microsoft Tag с рисунком в виде треугольников), Custom Tag Barcode (Microsoft Tag, на который нанесены только сами точки, в которых кодируется информация), QR Code, NFC URL. Здесь же можно выбрать формат файла и сам размер кода. В случае использования Microsoft Tag можно выбрать его монохромный вариант.
При сканировании QR кода обычной программой-сканером отобразится просто ссылка вида tagr.com/xxx. Для получения доступа к самой информации, необходимо открыть ее в браузере. При сканировании кода «родной» программой Microsoft Tag данные загрузятся с сервера MS автоматически. При этом будет отображена и дополнительная информация, такая как название метки, картинка метки в «истории» и пр. В общем и целом, использования QR кода в данном случае совершенно нецелесообразно.
Подробнее о сканировании кодов Microsoft Tag можно будет прочесть в описании самого сканера. Скажу только пару слов про формат Custom Tag Barcode. Как я уже писал, формат Microsoft Tag имеет огромный потенциал кастомизации. Фактически, код можно перекрашивать как угодно, главное не менять цвет точек, несущих информацию и не залезать на служебные области. При этом сами точки могут являться частью рисунка, их не требуется как-то выделять из окружающего их фона.
Проще всего открыть скаченный файл в Photoshop или любом другом редакторе, умеющем работать со слоями. Сам слой с точками не трогаем, под ним просто создаем еще один и делаем с ним все, что хотим. Более подробно ознакомиться с кастомизацией Microsoft Tag можно по следующей ссылке (англ.)
Программы сканеры
Barcode Scanner
Поддерживаемые форматы 2D кодов: QR, DataMatrix
Программа бесплатна. Имеет платную версию с поддержкой дополнительных форматов.
Начать хотел бы с классики жанра — программы Barcode Scanner (Zxing от Google).
Кто-то считает этот сканер слишком простым, но лично мне он очень нравится. В программе есть все, что нужно для выполнения ее основной функции и никаких лишних «наворотов». Этакий Linux way. Кому-то такой подход нравится, кому-то нет.
Обзор программы на Android.MR уже есть — http://android.mobile-review.com/market/87/ Отмечу только то, что программа умеет не только сканировать коды, но и генерировать их. Все происходит предельно просто и быстро. Например, содержимое буфера можно перевести в QR код буквально в один клик. Зачем это нужно? Например, быстро поделиться контактом, длинной ссылкой, координатами в Google Maps и пр. Один человек выводи QR код на экран своего телефона, другой считывает его. Получается некий аналог Android Beam, который не требует поддержки NFC. Которая пока встречается далеко не в каждом аппарате.
Accusoft Barcode Scanner
Поддерживаемые форматы 2D кодов: QR, DataMatrix, Aztec и PDF417
QR Droid
Именно эта программа упоминалась в недавней статье Виталия Буздалова. Она также использует библиотеки Zxing, но обладает большим функционалом. К примеру, есть возможность предпросмотра ссылки, редактирования смс из самой программы, назначать действия по умолчанию для разных типов кодов и пр.
Нужно это или нет, каждый решает для себя сам. Кроме того, в программе есть довольно функциональный генератор кодов.
Кроме стандартных действий по генерации и чтению кодов, программа предлагает и ряд других полезных функций. Например, через нее можно быстро создать короткую ссылку. Это может быть весьма полезно для того, чтобы избежать излишнего «раздувания» QR кода. Кроме того, у вас всегда будет возможность посмотреть статистику переходов по такой ссылке. Еще один пример: можно загрузить изображение в интернет и сразу же сгенерировать на него ссылку в виде QR кода.
Microsoft Tag
В то время, как обычный сканер предлагает отправить смску, сканер Microsoft Tag выводит просто весь набор закодированных данных.
В верхней части окна программы находится кнопка «Scan», в центре — список меток истории сканирования. Метки представлены в виде иконок, которые были назначены автором кода. Тут же отображается и название метки. Обычные QR коды, которые не имеют названия и иконки, в списке не отображаются. Разумеется, метки из списка истории можно открывать повторно.
На скриншоте ниже приведет результат сканирования кодов с закодированным текстом и с закодированной ссылкой на Android.MR
Обратите внимание, что ссылка сразу открывается в самой программе-сканере, а не предлагает пользователю открыть ее в браузере. Кроме того, в верхней части окна отображается название метки.
Выводы
Разумеется, рассказать о всех видах штрихкодов, программ для их чтения и ресурсах в рамках одной статьи невозможно. Поэтому, я упомянул только про некоторые из них, которые на мой взгляд, являются самыми актуальными.