Как называется код на продуктах. Как называется код из квадратиков. Что такое QR-коды, где они используются и как создаются. Добавление служебной информации

Before we tell you what you need to consider in practice, we want to familiarize you with the technical basics of QR Codes. Here you will learn how a QR Code functions, what elements are used to construct it, and what conditions are required for its creation and decoding.

What is a QR Code?

The QR Code is a two-dimensional version of the barcode, known from product packaging in the supermarket. Originally developed for process optimization in the logistics of the automotive industry, the QR Code has found its way into mobile marketing with the widespread adoption of smartphones. "QR" stands for "Quick Response", which refers to the instant access to the information hidden in the Code.

QR Codes are gaining popularity because the technology is "open source", i.e. available for everyone. Significant advantages of QR Codes over conventional barcodes are larger data capacity and high fault tolerance.

The black and white checkered pixel patterns appear at first glance to be a small crossword puzzle and seem to be composed at random. But if you look closely, certain structures can be identified. For the scanner to recognize a QR Code as such, the Code must always be square. A number of additional elements ensure that the information is read correctly.

They indicate the direction in which the Code is printed.

If the QR Code is large, this additional element helps with orientation.

Using these lines, the scanner determines how large the data matrix is.

The format patterns contain information about the error tolerance and the data mask pattern and make it easier to scan the Code.

These patterns hold the actual data.

This spacing is important for the scanning program in order to distinguish the QR Code from its surroundings.

What happens if a QR Code is damaged?

To ensure that the information contained in the QR Code can be read even if it is damaged, the data keys include duplications (redundancies).Because of this, up to 30% of the Code structure can be destroyed without affecting the readability of the Code.

What can be stored in a QR Code?

Up to 7089 digits or 4296 characters, including punctuation marks and special characters, can be entered in one Code. In addition to numbers and characters, words and phrases (e.g. Internet addresses) can be encoded as well. As more data is added to the QR Code, the Code size increases and the Code structure becomes more complex.

How do I create a QR Code?

Creating a QR Code takes only a few seconds. The first step is to go to a website which generates QR Codes, e.g. www.qr-code-generator.com. There you can choose the type of the Code you want to create and then enter the appropriate data. Simply click on "Create QR Code", and your personal QR Code is ready. Now you just decide, in which image format you want to use the Code and download the file easily.

How do I scan a QR Code?

To scan a QR Code, you first need to have a scanner app on your smartphone. A large selection of these can be downloaded for free in the various app stores. When you have installed one, start the application and keep the camera of your smartphone over the QR Code to scan it. If the Code is readable, the encoded address or action will be accessed automatically.

QR-код (в переводе с английского “Quick Response” – «быстрый ответ») – матричный код (двумерный штрих-код) шифрования некоторого объема информации в графический объект, разработанный и представленный японской компанией «Denso-Wave» в 1994 г.

Максимальное количество символов, которые помещаются в один QR-код:

– цифры – 7089;

– цифры и буквы (включая кириллицу) – 4296;

– двоичный код – 2953 байт;

– иероглифы – 1817.

В отличие от привычного штрих-кода, который сканируют тонким лучом, QR-код определяется сенсором как двумерное изображение. Три квадрата, которые можно заметить в углах изображения QR-кода, позволяют нормализовать размер изображения и его ориентацию, а также угол, под которым сенсор относится к поверхности изображения. Основное достоинство QR-кода – это лёгкое распознавание сканирующим оборудованием (в том числе и фотокамерой мобильного телефона), что дает возможность его активного использования в торговле, производстве, логистике.

Существует ряд специальных программных средств – генераторов QR-кодов, с помощью которых можно преобразовать в QR-код любое изображение, текст, ссылку на веб-страницу, контактную информацию и многое другое.

Широкое распространение обрели программы для сканирования и распознавания QR-кодов посредством использования камер на смартфонах и планшетных ПК пользователей: I-Nigma, QuickMark, BeeTagg, Scan, Kaywa reader.

Наиболее популярные программы просмотра QR-кодов поддерживают такие форматы данных: URL, Закладка в браузер, E-mail (с темой письма), SMS на номер (c темой), MeCard, vCard, географические координаты, а также GIF, JPG, PNG или MID файлы объемом меньше 4 КБ.

Система RQR совмещает полный спектр операций с QR-кодами: создание необходимой информационной базы, простую и полную схему генерации QR-кодов, редактирования и мониторинга информации в уже существующей базе.

Применение технологии QR -кодирования

В настоящее время QR-код широко распространён в странах Азии (особенно в Японии), постепенно развивается в Европе и Северной Америке.

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

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

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

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

В сфере образования QR-коды также нашли применение. Размещение их в учебном заведении позволяет студентам легко находить электронные версии книг, получать ссылки к дополнительным материалам. Учащиеся могут создавать собственные коды, делиться своими научными работами и заданиями с коллегами и наставниками.

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

QR-код как тренд современного дизайна используют в элементах фирменного стиля компаний, на одежде (на футболках размещают информацию о себе или своей фирме), предметах обихода и даже тату (например, нанесение татуировок с зашифрованными ссылками на аккаунты в социальных сетях). Художники применяют данную технологию, создавая дополненную реальность для постеров, позволяя увидеть видеоролик или услышать музыку.

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

Крупные мировые производители товаров и услуг, а также торговые сети успешно используют QR-коды в качестве купонов на скидки.

С помощью рассматриваемой технологии организовывают и проводят разнообразные культмассовые мероприятия: конкурсы, викторины, игры и т. д. Так называемые QR-квесты получают широкую огласку в обществе и СМИ и поэтому очень эффективны.

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

Используя единственную в Украине простую и быструю систему RQR, Вы можете создавать исключительные графические объекты – QR-коды, содержащие значимую для Вас или Вашего бизнеса информацию.


Наверное, небыло такого дня, когда вам на глаза не попалось бы черно-белое изображение квадрата с хаотично расположенными внутри его фигурками: прямоугольниками и квадратиками. Эти небольшие квадраты можно встретить на этикетках товаров, квитанциях оплаты за коммунальные платежи или на страницах сайтов, а на рекламных щитах подобные изображения могут быть размерами в человеческий рост. Речь идёт о QR-кодах – японском изобретении конца прошлого столетия, которое приобретает бешеную популярность. Почему QR-код так популярен, как им пользоваться (прочитать и расшифровать), как его можно бесплатно создать и наконец, как с его помощью можно совершать платежи – разберём в нашем обзоре. Кстати, в коде, расположенном ниже, зашифровано послание к читателям от автора статьи.

QR-код. Что это и для чего он нужен?

Так называемый матричный код QR-код (в переводе с английского quick response – быстрый отклик) был разработан в 1994 году японской компанией Denso-Wave. Целью данного изобретения было создание простой системы кодирования (в виде двумерного штрихкода), которое стало бы альтернативой классическому штрихкоду, который мы и по сей день видим на этикетках товаров в магазинах. Если то количество информации, которое можно закодировать старым штрихкодом устраивает торговые сети (а это, в принципе, только цена), то промышленность это не устраивало, так как для различных производственных и логистических целей требовалось закодировать всё больше информации. Так и появился двумерный код, который за счёт своих преимуществ стал называться QR-кодом.

Основные преимущества такого матричного кода заключаются в следующем:

Легкое распознавание закодированной информации сканерами. Это достигается за счёт конструкции кода: три квадрата по углам изображения и дополнительные квадратики для синхронизации по всему пространству кода нормализуют размер считываемого изображения, его ориентацию и угол, под которым сканирующее оборудование расположено к поверхности изображения.

Значительно количество информации, которое можно закодировать. Для примера, в один такой код может поместиться порядка 7 тысяч цифр, 4 тысяч цифр и букв (английских), или 3 тысяч букв в кириллице. Как видите, один маленький квадратик может закодировать целую статью, а в качестве демонстрации данной технологии выпускались даже произведения известных авторов, где на страницах вместо букв были только QR-коды!

Различные форматы данных. Информация может быть закодирована в различных форматах: не только в виде ссылки на сайт с описанием товара (Url-адрес), но и в виде географических координат (вам сразу покажут место на карте), смс-сообщения на определённый номер с каким-либо текстом, электронной почты, pdf –файла, закодированного изображения(!) – фотографии или просто JPG, GIF, PNG картинки. Собственно вы сами можете попробовать создать такой двумерный код на каком-либо сайте с онлайн-генератором QR-кода, например, на этом: http://ru.qr-code-generator.com/ .

Множество бесплатных мобильных приложений для Андроида, Айфона и Windows Phone , которые достаточно установить на вашем смартфоне и воспользоваться функционалом закодированной в квадрате информации. Смартфоны сейчас есть чуть ли не у каждого первого, причем совсем необязательно покупать дорогой телефон – сгодиться любой, а это говорит о широких возможностях использования QR-кода!

Где только он не встречается: на объектах культурного значения для туристов (например, около картин – сканируете и узнаёте расширенную информацию о шедевре), на маркировке продукции в магазинах, в рекламе товаров и услуг, в справочниках и журналах, даже на кладбищах коды размещают для получения информации об усопшем и т.д. Возможности столь неприхотливого сервиса не смогли оставить стороной и крупные финансовые организации: банки, коммунальные предприятия, страховые учреждения. Благодаря возможностям сервиса легко отправляются также денежные переводы физическим лицам.

Как пользоваться двумерным кодом?

Для обычного, неискушенного в современных технологиях человека, ответ на вопрос «как пользоваться QR-кодом?» проще не придумаешь. Если вы владелец телефона на базе операционной системы Андроид, то заходите в ГуглПлэй (GooglePlay) и забивайте в поиске QR-код. Вам будет предложено десяток бесплатных и платных предложений с похожим функционалом. Выбирать вам – как говорится: на вкус и цвет товарищей нет. Автор статьи поставил себе «QR code reader», и ещё ни разу не испытал каких – либо проблем. Программа сканирует коды в разных форматах и даже сохраняет историю полученной информации в результате сканирования и распознавания. На телефонах с операционной системой Iphone необходимо зайти в iTunes (App Store) и проделать вышеописанные действия.

Итак, вы установили программу. Как теперь прочитать и расшифровать QR-код? Вы просто запускаете программу и наводите прицел в виде окантовки квадрата на код. Как только двумерная картинка попадает в прицел (желательно держать телефон параллельно коду), программа даёт звуковой сигнал готовности и мгновенно преобразовывает закодированную информацию в удобочитаемый вид – производится онлайн-расшифровка изображения. В большинстве случаев это будет ссылка на веб-страницу, по которой вам будет предложено перейти. Сама страница откроется в браузере, установленном в вашем телефоне по умолчанию (например, Chrome).

В этом видео-ролике процесс установки приложения и сканирования показан более наглядно:

Но это ещё не всё, так как вы можете сами создать (сгенерировать) QR-код, о чём мы уже говорили чуть выше. Для этого заходите на сайт с онлайн-генератором этого чудо-кода, и начинаете экспериментировать. Технология даёт возможность создавать коды с различным дизайном (!) без ухудшения его структуры, например, вы можете «прилепить» к нему логотип вашей компании и т.д. Созданный код можно бесплатно сохранить к себе на компьютер (бесплатно это можно сделать, как правило, несколько раз, а дальше необходимо перейти на платный аккаунт).

Платежи по QR-коду

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

Посмотрим, как совершать необходимые платежи с помощью QR-кода на примере платежного сервиса PayQR :

  • Устанавливаем бесплатное приложение PayQR на свой телефон и привязываем к нему одну или несколько платёжных карточек. Можно также привязать и счёт вашего сотового – деньги в данном случае будут списываться с него в счёт оплаты покупки;
  • Сканируем информацию с помощью камеры телефона и получаем на телефоне информацию о товаре. Вы количество и нужные позиции для заказа и можете также сообщить другую информацию, например, бонусную карту для дополнительных скидок. Затем всё это отсылается в магазин. Напомним, что весь процесс обмена данными происходит в самом приложении PayQR, и вы из него не выходите. Далее, магазин подтверждает наличие товара и уточняет его конечную цену с учётом возможных скидок, а также предлагает оплатить вам товар. Вы оплачиваете товар из приложения (в реальности деньги списываются со счёта вашей привязанной карточки), после чего магазин осуществляет доставку купленного товара.

Технологию оплаты в действии можно увидеть на видео от PayQR:

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

Ниже мини-презентация технологии оплаты коммунальных услуг с помощью PayQR.

Это не единственный пример реализации подобных технологий совершения платежей по QR-коду – их применяет всё больше компаний, поскольку такой метод оплаты считается перспективным и безопасным.

Преимущества расчетов с помощью QR-кодов

Оплата с использованием QR-кода – сервис, в котором нет недостатков, кроме некоторой боязни современных услуг. На самом деле, в пользу данной системы свидетельствуют следующие факты:

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

2. Мгновенный результат расчетных операций. Поступление денег на требуемый счет фиксируется сразу после подтверждения.

3. Экономия денег и времени. В связи с мобильностью приложения, можно осуществлять платежи в любом доступном месте и в любое время, а на оплату уйдёт несколько десятков секунд. То есть отпадает необходимость посещения таких «излюбленных» мест как банки, где большое скопление людей со своими проблемами. Кроме того, часто за платежи с помощью таких чудо-кодов компании дают дополнительные скидки: от 5 до 15 процентов, так почему бы ими не воспользоваться?

Таким образом, использование простого в эксплуатации сервиса позволяет своевременно производить оплату без личного контакта с получателем средств. Система QR позволяет объединить мобильность и эффективность платежей при минимальных временных затратах.

Расширения включают отслеживание продукции, идентификацию предметов, отслеживание времени, управление документами и общий маркетинг .

QR-код состоит из чёрных квадратов, расположенных в квадратной сетке на белом фоне, которые могут считываться с помощью устройств обработки изображений, таких как камера, и обрабатываться с использованием кодов Рида - Соломона до тех пор, пока изображение не будет надлежащим образом распознано. Затем необходимые данные извлекаются из шаблонов, которые присутствуют в горизонтальных и вертикальных компонентах изображения .

Описание

QR-код разработан и представлен японской компанией Denso-Wave в 1994 году. Огромная популярность штрихкодов в Японии привела к тому, что объём информации, зашифрованной в них, вскоре перестал устраивать промышленность. Японцы начали экспериментировать с новыми современными способами кодирования небольших объёмов информации в графической картинке.

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

Основное достоинство QR-кода - это лёгкое распознавание сканирующим оборудованием, что даёт возможность использования в торговле , производстве, логистике .

Хотя обозначение «QR code» является зарегистрированным товарным знаком «DENSO Corporation», использование кодов не облагается никакими лицензионными отчислениями , а сами они описаны и опубликованы в качестве стандартов ISO.

Спецификация QR-кода не описывает формат данных . Наиболее популярные программы просмотра QR-кодов поддерживают такие форматы данных: URL , закладка в браузер , Email (с темой письма), SMS на номер (c темой), MeCard, vCard , географические координаты .

Также некоторые программы могут распознавать файлы GIF , JPG , PNG или MID меньше 4 КБ и зашифрованный текст , но эти форматы не получили популярности.

Применение

Общая техническая информация

Самый маленький QR-код (версия 1) имеет размер 21×21 пиксель (без учёта полей), самый большой (версия 40) - 177×177 пикселей.

Существует четыре основных кодировки QR-кодов:

  • Цифровая: 10 битов на три цифры, до 7089 цифр.
  • Алфавитно-цифровая: поддерживаются 10 цифр, буквы от A до Z и несколько спецсимволов. 11 битов на два символа, до 4296 символов
  • Байтовая: данные в любой подходящей кодировке (по умолчанию ISO 8859-1), до 2953 байт.
  • Кандзи : 13 битов на иероглиф, до 1817 иероглифов.

Также существуют «псевдокодировки»: задание способа кодировки в данных, разбиение длинного сообщения на несколько кодов и т. д.

Для исправления ошибок применяется код Рида-Соломона с 8-битным кодовым словом. Есть четыре уровня избыточности: 7, 15, 25 и 30 %. Благодаря исправлению ошибок удаётся нанести на QR-код рисунок и всё равно оставить его читаемым.

Чтобы в коде не было элементов, способных запутать сканер, область данных складывается по модулю 2 со специальной маской. Корректно работающий кодер должен перепробовать все варианты масок, посчитать штрафные очки для каждой по особым правилам и выбрать самую удачную.

Micro QR

Отдельно существует микро QR-код ёмкостью до 35 цифр.

Эффективность хранения данных по сравнению с традиционным QR кодом значительно улучшена благодаря использованию всего одной метки позиционирования, по сравнению с тремя метками в обычном QR коде. Из-за этого освобождается определённое пространство, которое может быть использовано под данные. Кроме того, QR код требует свободного поля вокруг кода шириной минимум в 4 модуля (минимальной единицы построения QR-кода), в то время как Micro QR код требует поля в два модуля шириной. Из-за большей эффективности хранения данных, размер Micro QR кода увеличивается не столь значительно с увеличением объёма закодированных данных по сравнению с традиционным QR кодом.

По аналогии с уровнями коррекции ошибок в QR кодах, Micro QR код бывает четырёх версий, М1-М4 .

Версия кода Количество модулей Уровень коррекции ошибок Цифры Цифры и буквы Двоичные данные Kanji
M1 11 - 5 - - -
M2 13 L (7 %) 10 6 - -
M (15 %) 8 5 - -
M3 15 L (7 %) 23 14 9 6
M (15 %) 18 11 7 4
M4 17 L (7 %) 35 21 15 9
M (15 %) 30 18 13 8
Q (25 %) 21 13 9 5

Кодирование данных

Закодировать информацию в QR-код можно несколькими способами, а выбор конкретного способа зависит от того, какие символы используются. Если используются только цифры от 0 до 9, то можно применить цифровое кодирование, если кроме цифр необходимо зашифровать буквы латинского алфавита, пробел и символы ±*/$%*.:, используется алфавитно-цифровое кодирование. Ещё существует кодирование кандзи, которое применяется для шифрования китайских и японских иероглифов, и побайтовое кодирование. Перед каждым способом кодирования создаётся пустая последовательность бит, которая затем заполняется.

Цифровое кодирование

Этот тип кодирования требует 10 бит на 3 символа. Вся последовательность символов разбивается на группы по 3 цифры, и каждая группа (трёхзначное число) переводится в 10-битное двоичное число и добавляется к последовательности бит. Если общее количество символов не кратно 3, то если в конце остаётся 2 символа, полученное двузначное число кодируется 7 битами, а если 1 символ, то 4 битами.

Например, есть строка «12345678», которую надо закодировать. Последовательность разбивается на числа: 123, 456 и 78, затем каждое число переводится в двоичный вид: 0001111011, 0111001000 и 1001110, и объединяется это в один битовый поток: 000111101101110010001001110.

Буквенно-цифровое кодирование

В отличие от цифрового кодирования, для кодирования 2 символов требуется 11 бит информации. Последовательность символов разбивается на группы по 2, в группе каждый символ кодируется согласно таблице «Значения символов в буквенно-цифровом кодировании». Значение первого символа умножается на 45, затем к этому произведению прибавляется значение второго символа. Полученное число переводится в 11-битное двоичное число и добавляется к последовательности бит. Если в последней группе остаётся один символ, то его значение кодируется 6-битным числом. Рассмотрим на примере: «PROOF». Разбиваем последовательность символов на группы: PR , OO , F . Находим соответствующие значения символам к каждой группе (смотрим в таблицу): PR -(25,27), OO -(24,24), F -(15). Находим значения для каждой группы: 25*45+27=1152, 24*45+24=1104, 15=15. Переводим каждое значение в двоичный вид: 1152=10010000000, 1104=10001010000, 15=001111. Объединяем в одну последовательность: 1001000000010001010000001111.

Байтовое кодирование

Таким способом кодирования можно закодировать любые символы. Входной поток символов кодируется в любой кодировке (рекомендовано в UTF-8), затем переводится в двоичный вид, после чего объединяется в один битовый поток.

Например, слово «Мир» кодируем в Unicode (HEX) в UTF-8: М - D09C; и - D0B8; р - D180. Переводим каждое значение в двоичную систему счисления: D0=11010000, 9C =10011100, D0=11010000, B8=10111000, D1=11010001 и 80=10000000; объединяем в один поток бит: 11010000 10011100 11010000 10111000 11010001 10000000.

Кандзи

В основе кодирования иероглифов (как и прочих символов) лежит визуально воспринимаемая таблица или список изображений иероглифов с их кодами. Такая таблица называется «character set». Для японского языка основное значение имеют две таблицы символов: JIS 0208:1997 и JIS 0212:1990. Вторая из них является дополнением к первой. JIS 0208:1997 разбита на 94 страницы по 94 символа. К примеру, страница 4 - хирагана, 5 - катакана, 7 - кириллица, 16-43 - кандзи уровня 1, 48-83 - кандзи уровня 2. Кандзи уровня 1 («JIS дайити суйдзюн кандзи») упорядочены по онам. Кандзи уровня 2 (JIS дайни суйдзюн кандзи) упорядочены по ключам, и внутри них - по количеству черт.

Добавление служебной информации

После определения версии кода и кодировки необходимо определиться с уровнем коррекции ошибок. В таблице представлены максимальные значения уровней коррекции для различных версий QR-кода. Для исправления ошибок применяется код Рида-Соломона с 8-битным кодовым словом.

Таблица. Максимальное количество информации.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
L 152 272 440 640 864 1088 1248 1552 1856 2192 2592 2960 3424 3688 4184 4712 5176 5768 6360 6888
M 128 224 352 512 688 864 992 1232 1456 1728 2032 2320 2672 2920 3320 3624 4056 4504 5016 5352
Q 104 176 272 384 496 608 704 880 1056 1232 1440 1648 1952 2088 2360 2600 2936 3176 3560 3880
H 72 128 208 288 368 480 528 688 800 976 1120 1264 1440 1576 1784 2024 2264 2504 2728 3080
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
L 7456 8048 8752 9392 10208 10960 11744 12248 13048 13880 14744 15640 16568 17528 18448 19472 20528 21616 22496 23648
M 5712 6256 6880 7312 8000 8496 9024 9544 10136 10984 11640 12328 13048 13800 14496 15312 15936 16816 17728 18672
Q 4096 4544 4912 5312 5744 6032 6464 6968 7288 7880 8264 8920 9368 9848 10288 10832 11408 12016 12656 13328
H 3248 3536 3712 4112 4304 4768 5024 5288 5608 5960 6344 6760 7208 7688 7888 8432 8768 9136 9776 10208

После определения уровня коррекции ошибок необходимо добавить служебные поля, они записываются перед последовательностью бит, полученной после этапа кодирования. В них указывается способ кодирования и количество данных. Значение поля способа кодирования состоит из 4 бит, оно не изменяется, а служит знаком, который показывает, какой способ кодирования используется. Оно имеет следующие значения:

  • 0001 для цифрового кодирования,
  • 0010 для буквенно-цифрового и
  • 0100 для побайтового

Ранее в примере байтового кодирования кодировалось слово «Мир», при этом получилась следующая последовательность двоичного кода:

11010000 10011100 11010000 10111000 11010001 10000000, содержащая 48 бит информации.

Пусть необходим уровень коррекции ошибок Н, позволяющий восстанавливать 30 % утраченной информации. По таблице максимальное количество информации выбирается наиболее оптимальная версия QR-кода (в данном случае 1 версия, которая позволяет закодировать 72 символа полезной информации при уровне коррекции ошибок Н).

Информация о способе кодирования: побайтовому кодированию соответствует поле 0100.

Указание количества данных (для цифрового и буквенно-цифрового кодирования - количество символов, для побайтового - количество байт): данная последовательность содержит 6 байт данных (в двоичной системе счисления: 110).

По таблице определяется необходимая длина двоичного числа - 8 бит. Дописываются недостающие нули: 00000110.

Версия 1-9 Версия 10-26 Версия 27-40
Цифровое 10 бит 12 бит 14 бит
Буквенно-цифровое 9 бит 11 бит 13 бит
Побайтовое 8 бит 16 бит 16 бит

Вся информация записывается в порядке <способ кодирования> <количество данных> <данные>, получается последовательность бит:

0100 00000110 11010000 10011100 11010000 10111000 11010001 10000000.

Разбиение на блоки

Последовательность байт разделяется на определённое для версии и уровня коррекции количество блоков, которое приведено в таблице «Количество блоков». Если количество блоков равно одному, то этот этап можно пропустить. А при повышении версии - добавляются специальные блоки.

Сначала определяется количество байт (данных) в каждом из блоков. Для этого надо разделить всё количество байт на количество блоков данных. Если это число не целое, то надо определить остаток от деления. Этот остаток определяет, сколько блоков из всех дополнены (такие блоки, количество байт в которых больше на один, чем в остальных). Вопреки ожиданию, дополненными блоками должны быть не первые блоки, а последние. Затем идёт последовательное заполнение блоков.

Пример: для версии 9 и уровня коррекции M количество данных - 182 байта, количество блоков - 5. Поделив количество байт данных на количество блоков, получаем 36 байт и 2 байта в остатке. Это значит, что блоки данных будут иметь следующие размеры: 36, 36, 36, 37, 37 (байт). Если бы остатка не было, то все 5 блоков имели бы размер по 36 байт.

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

Создание байтов коррекции

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

Таблица. Количество байтов коррекции на один блок
Строка - уровень коррекции, столбец - номер версии.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
L 7 10 15 20 26 18 20 24 30 18 20 24 26 30 22 24 28 30 28 28 28 28 30 30 26 28 30 30 30 30 30 30 30 30 30 30 30 30 30 30
M 10 16 26 18 24 16 18 22 22 26 30 22 22 24 24 28 28 26 26 26 26 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28
Q 13 22 18 26 18 24 18 22 20 24 28 26 24 20 30 24 28 28 26 30 28 30 30 30 30 28 30 30 30 30 30 30 30 30 30 30 30 30 30 30
H 17 28 22 16 22 28 26 26 24 28 24 28 22 24 24 30 28 28 26 28 30 24 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30

По количеству байтов коррекции определяется генерирующий многочлен (приведено в таблице).

Таблица. Генерирующие многочлены.

Количество байт коррекции Генерирующий многочлен
7 87, 229, 146, 149, 238, 102, 21
10 251, 67, 46, 61, 118, 70, 64, 94, 32, 45
13 74, 152, 176, 100, 86, 100, 106, 104, 130, 218, 206, 140, 78
15 8, 183, 61, 91, 202, 37, 51, 58, 58, 237, 140, 124, 5, 99, 105
16 120, 104, 107, 109, 102, 161, 76, 3, 91, 191, 147, 169, 182, 194, 225, 120
17 43, 139, 206, 78, 43, 239, 123, 206, 214, 147, 24, 99, 150, 39, 243, 163, 136
18 215, 234, 158, 94, 184, 97, 118, 170, 79, 187, 152, 148, 252, 179, 5, 98, 96, 153
20 17, 60, 79, 50, 61, 163, 26, 187, 202, 180, 221, 225, 83, 239, 156, 164, 212, 212, 188, 190
22 210, 171, 247, 242, 93, 230, 14, 109, 221, 53, 200, 74, 8, 172, 98, 80, 219, 134, 160, 105, 165, 231
24 229, 121, 135, 48, 211, 117, 251, 126, 159, 180, 169, 152, 192, 226, 228, 218, 111, 0, 117, 232, 87, 96, 227, 21
26 173, 125, 158, 2, 103, 182, 118, 17, 145, 201, 111, 28, 165, 53, 161, 21, 245, 142, 13, 102, 48, 227, 153, 145, 218, 70
28 168, 223, 200, 104, 224, 234, 108, 180, 110, 190, 195, 147, 205, 27, 232, 201, 21, 43, 245, 87, 42, 195, 212, 119, 242, 37, 9, 123
30 41, 173, 145, 152, 216, 31, 179, 182, 50, 48, 110, 86, 239, 96, 222, 125, 42, 173, 226, 193, 224, 130, 156, 37, 251, 216, 238, 40, 192, 180

Расчёт производится исходя из значений исходного массива данных и значений генерирующего многочлена, причём для каждого шага цикла отдельно.

Объединение информационных блоков

На данном этапе имеется два готовых блока: исходных данных и блоков коррекции (из прошлого шага), их необходимо объединить в один поток байт. По очереди необходимо брать один байт информации из каждого блока данных, начиная от первого и заканчивая последним. Когда же очередь доходит до последнего блока, из него берётся байт и очередь переходит к первому блоку. Так продолжается до тех пор, пока в каждом блоке не закончатся байты. Есть исключения, когда текущий блок пропускается, если в нём нет байт (ситуация, когда обычные блоки уже пусты, а в дополненных ещё есть по одному байту). Так же поступается и с блоками байтов коррекции. Они берутся в том же порядке, что и соответствующие блоки данных.

В итоге получается следующая последовательность данных: <1-й байт 1-го блока данных><1-й байт 2-го блока данных>…<1-й байт n-го блока данных><2-й байт 1-го блока данных>…<(m - 1)-й байт 1-го блока данных>…<(m - 1)-й байт n-го блока данных><1-й байт 1-го блока байтов коррекции><1-й байт 2-го блока байтов коррекции>…<1-й байт n-го блока байтов коррекции><2-й байт 1-го блока байтов коррекции>….

Здесь n - количество блоков данных, m - количество байтов на блок данных у обычных блоков, l - количество байтов коррекции, k - количество блоков данных минус количество дополненных блоков данных (тех, у которых на 1 байт больше).

Этап размещения информации на поле кода

На QR-коде есть обязательные поля, они не несут закодированной информации, а содержат информацию для декодирования. Это:

  • Поисковые узоры
  • Выравнивающие узоры
  • Полосы синхронизации
  • Код маски и уровня коррекции
  • Код версии (с 7-й версии)

а также обязательный отступ вокруг кода . Отступ - это рамка из белых модулей, её ширина - 4 модуля. Поисковые узоры - это 3 квадрата по углам кроме правого нижнего. Используются для определения расположения кода. Они состоят из квадрата 3х3 из чёрных модулей, вокруг рамка из белых модулей шириной 1, потом ещё одна рамка из чёрных модулей, так же шириной 1, и ограждение от остальной части кода - половина рамки из белых модулей шириной 1. Итого эти объекты имеют размер 8х8 модулей.

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
- 18 22 26 30 34 6, 22, 38 6, 24, 42 6, 26, 46 6, 28, 50 6, 30, 54 6, 32, 58 6, 34, 62 6, 26, 46, 66 6, 26, 48, 70 6, 26, 50, 74 6, 30, 54, 78 6, 30, 56, 82 6, 30, 58, 86 6, 34, 62, 90
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
6, 28, 50, 72, 94 6, 26, 50, 74, 98 6, 30, 54, 78, 102 6, 28, 54, 80, 106 6, 32, 58, 84, 110 6, 30, 58, 86, 114 6, 34, 62, 90, 118 6, 26, 50, 74, 98, 122 6, 30, 54, 78, 102, 126 6, 26, 52, 78, 104, 130 6, 30, 56, 82, 108, 134 6, 34, 60, 86, 112, 138 6, 30, 58, 86, 114, 142 6, 34, 62, 90, 118, 146 6, 30, 54, 78, 102, 126, 150 6, 24, 50, 76, 102, 128, 154 6, 28, 54, 80, 106, 132, 158 6, 32, 58, 84, 110, 136, 162 6, 26, 54, 82, 110, 138, 166 6, 30, 58, 86, 114, 142, 170

Полосы синхронизации - используются для определения размера модулей. Располагаются они уголком, начинается одна от левого нижнего поискового узора (от края чёрной рамки, но переступив через белую), идёт до левого верхнего, а оттуда начинается вторая, по тому же правилу, заканчивается она у правого верхнего. При наслоении на выравнивающий модуль он должен остаться без изменений. Выглядят полосы синхронизации как линии чередующихся между собой чёрных и белых модулей.

Код маски и уровня коррекции - расположен рядом с поисковыми узорами: под правым верхним (8 модулей) и справа от левого нижнего (7 модулей), и дублируются по бокам левого верхнего, с пробелом на 7 ячейке - там, где проходят полосы синхронизации, причём горизонтальный код в вертикальную часть, а вертикальный - в горизонтальную.

Код версии - нужен для определения версии кода. Находятся слева от верхнего правого и сверху от нижнего левого, причём дублируются. Дублируются они так - зеркальную копию верхнего кода поворачивают против часовой стрелки на 90 градусов. Ниже представлена таблица кодов, 1 - чёрный модуль, 0 - белый.

Версия 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Код версии 000010 011110 100110 010001 011100 111000 110111 011000 000100 101001 111110 000000 001111 111010 111100 001101 100100 011010 101011 100000 100110 110101 000110 100010 010011 000010 011110 011100 010001 011100 111010 010101 100000 100100 110011 100100 000010 110111 011000 000000 101001 111110 100110 101101 000010 111000 001011 000110 011110 001111 111010
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
001101 001101 100100 101011 001001 011000 110101 101111 011100 010011 101011 100000 010001 110101 000110 110111 110001 111010 101001 010111 111110 001111 010011 000010 101000 011000 101101 001110 011100 010001 010000 111010 010101 110110 111110 101001 110100 100000 001111 010010 100100 110011 001100 000010 110111 101010 000110 001011 111001 000100 010101

Занесение данных

Оставшееся свободным место делят на столбики шириной в 2 модуля и заносят туда информацию, причём делают это «змейкой». Сначала в правый нижний квадратик заносят первый бит информации, потом в его левого соседа, потом в тот, который был над первым и так далее. Заполнение столбцов ведётся снизу вверх, а потом сверху вниз и т. д., причём по краям заполнение битов ведётся от крайнего бита одного столбца до крайнего бита соседнего столбца, что задаёт «змейку» на столбцы с направлением вниз. Если информации окажется недостаточно, то поля просто оставляют пустыми (белые модули). При этом на каждый модуль накладывается маска.

В 1994 году.

Энциклопедичный YouTube

    1 / 5

    ✪ Демонстрация печати QR-coda на ККТ для ЕГАИС.

    ✪ QR-код кассового чека на банковском терминале PAX D200 после продажи в торговом автомате

    ✪ Pay.qrpr.ru - Мобильные платежи на основе QR-кодов

    ✪ Видео 14. Как добавить QR код на ценник.

    ✪ Печать QR-кода для ЕГАИС на ШТРИХ-LIGHT-ФР-К

    Субтитры

Описание

Основное достоинство QR-кода - это лёгкое распознавание сканирующим оборудованием, что дает возможность использования в торговле , производстве, логистике .

Максимальное количество символов, которые помещаются в один QR-код:

  • цифры десятичной системы счисления - 7089;
  • цифры десятичной системы счисления и буквы (латиница) - 4296;
  • двоичный код - 2953 байт (следовательно, около 2953 букв кириллицы в кодировке windows-1251 или около 1450 букв кириллицы в utf-8);
  • иероглифы - 1817.

Хотя обозначение «QR code» является зарегистрированным товарным знаком «DENSO Corporation», использование кодов не облагается никакими лицензионными отчислениями , а сами они описаны и опубликованы в качестве стандартов ISO.

Спецификация QR-кода не описывает формат данных . Наиболее популярные программы просмотра QR-кодов поддерживают такие форматы данных: URL , закладка в браузер , Email (с темой письма), SMS на номер (c темой), MeCard, vCard , географические координаты .

Также некоторые программы могут распознавать файлы GIF , JPG , PNG или MID меньше 4 КБ и зашифрованный текст , но эти форматы не получили популярности.

Применение

QR-коды больше всего распространены в Японии . Уже в начале 2000 года QR-коды получили столь широкое распространение в Японии, что их можно было встретить на большом количестве плакатов, упаковок и товаров, там подобные коды наносятся практически на все товары, продающиеся в магазинах, их размещают в рекламных буклетах и справочниках. С помощью QR-кода даже организовывают различные конкурсы и ролевые игры .
Ведущие японские операторы мобильной связи совместно выпускают под своим брендом мобильные телефоны со встроенной поддержкой распознавания QR-кода .

В настоящее время QR-код также широко распространён в странах Азии , постепенно развивается в Европе и Северной Америке . Наибольшее признание он получил среди пользователей мобильной связи - установив программу-распознаватель, абонент может моментально заносить в свой телефон текстовую информацию, добавлять контакты в адресную книгу, переходить по web-ссылкам, отправлять SMS -сообщения и т. д.

Как показало исследование, проведённое компанией comScore в 2011 году, 20 млн жителей США использовали мобильные телефоны для сканирования QR-кодов .

В Японии, Австрии и России QR-коды также используются на кладбищах и содержат информацию об усопшем.

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

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

Общая техническая информация

Самый маленький QR-код (версия 1) имеет размер 21×21 пиксель (без учёта полей), самый большой (версия 40) - 177×177 пикселей.

Существует четыре основных кодировки QR-кодов:

  • Цифровая: 10 битов на три цифры, до 7089 цифр.
  • Алфавитно-цифровая: поддерживаются 10 цифр, буквы от A до Z и несколько спецсимволов. 11 битов на два символа, до 4296 символов
  • Байтовая: данные в любой подходящей кодировке (по умолчанию ISO 8859-1), до 2953 байт.
  • Кандзи : 13 битов на иероглиф, до 1817 иероглифов.

Также существуют «псевдокодировки»: задание способа кодировки в данных, разбиение длинного сообщения на несколько кодов и т. д.

Для исправления ошибок применяется код Рида-Соломона с 8-битным кодовым словом. Есть четыре уровня избыточности: 7, 15, 25 и 30 %. Благодаря исправлению ошибок удаётся нанести на QR-код рисунок и всё равно оставить его читаемым.

Чтобы в коде не было элементов, способных запутать сканер, область данных складывается по модулю 2 со специальной маской. Корректно работающий кодер должен перепробовать все варианты масок, посчитать штрафные очки для каждой по особым правилам и выбрать самую удачную.

Отдельно существует микроQR-код ёмкостью до 35 цифр.

Кодирование данных

Закодировать информацию в QR-код можно несколькими способами, а выбор конкретного способа зависит от того, какие символы используются. Если используются только цифры от 0 до 9, то можно применить цифровое кодирование, если кроме цифр необходимо зашифровать буквы латинского алфавита, пробел и символы ±*/$%*.:, используется алфавитно-цифровое кодирование. Ещё существует кодирование кандзи, которое применяется для шифрования китайских и японских иероглифов, и побайтовое кодирование. Перед каждым способом кодирования создается пустая последовательность бит, которая затем заполняется.

Цифровое кодирование

Этот тип кодирования требует 10 бит на 3 символа. Вся последовательность символов разбивается на группы по 3 цифры, и каждая группа (трёхзначное число) переводится в 10-битное двоичное число и добавляется к последовательности бит. Если общее количество символов не кратно 3, то если в конце остаётся 2 символа, полученное двузначное число кодируется 7 битами, а если 1 символ, то 4 битами.

Например, есть строка «12345678», которую надо закодировать. Последовательность разбивается на числа: 123, 456 и 78, затем каждое число переводится в двоичный вид: 0001111011, 0111001000 и 1001110, и объединяется это в один битовый поток: 000111101101110010001001110.

Буквенно-цифровое кодирование

В отличие от цифрового кодирования, для кодирования 2 символов требуется 11 бит информации. Последовательность символов разбивается на группы по 2, в группе каждый символ кодируется согласно таблице "Значения символов в буквенно-цифровом кодировании". Значение первого символа умножается на 45, затем к этому произведению прибавляется значение второго символа. Полученное число переводится в 11-битное двоичное число и добавляется к последовательности бит. Если в последней группе остается один символ, то его значение кодируется 6-битным числом. Рассмотрим на примере: «PROOF». Разбиваем последовательность символов на группы: PR , OO , F . Находим соответствующие значения символам к каждой группе (смотрим в таблицу): PR -(25,27), OO -(24,24), F -(15). Находим значения для каждой группы: 25*45+27=1152, 24*45+24=1104, 15=15. Переводим каждое значение в двоичный вид: 1152=10010000000, 1104=10001010000, 15=001111. Объединяем в одну последовательность: 1001000000010001010000001111.

Байтовое кодирование

Таким способом кодирования можно закодировать любые символы. Входной поток символов кодируется в любой кодировке (рекомендовано в UTF-8), затем переводится в двоичный вид, после чего объединяется в один битовый поток.

Например, слово «Мир» кодируем в Unicode (HEX) в UTF-8: М - D09C; и - D0B8; р - D180. Переводим каждое значение в двоичную систему счисления: D0=11010000, 9C =10011100, D0=11010000, B8=10111000, D1=11010001 и 80=10000000; объединяем в один поток бит: 11010000 10011100 11010000 10111000 11010001 10000000.

Кандзи

В основе кодирования иероглифов (как и прочих символов) лежит визуально воспринимаемая таблица или список изображений иероглифов с их кодами. Такая таблица называется «character set». Для японского языка основное значение имеют две таблицы символов: JIS 0208:1997 и JIS 0212:1990. Вторая из них является дополнением к первой. JIS 0208:1997 разбита на 94 страницы по 94 символа. К примеру, страница 4 - хирагана, 5 - катакана, 7 - кириллица, 16-43 - кандзи уровня 1, 48-83 - кандзи уровня 2. Кандзи уровня 1 («JIS дайити суйдзюн кандзи») упорядочены по онам. Кандзи уровня 2 (JIS дайни суйдзюн кандзи) упорядочены по ключам, и внутри них - по количеству черт.

Добавление служебной информации

После определения версии кода и кодировки необходимо определиться с уровнем коррекции ошибок. В таблице представлены максимальные значения уровней коррекции для различных версий QR-кода. Для исправления ошибок применяется код Рида-Соломона с 8-битным кодовым словом.

Таблица. Максимальное количество информации.

1 2 3 4 5 6 7 8 9 10
L 152 272 440 640 864 1088 1248 1552 1856 2192
M 128 224 352 512 688 864 992 1232 1456 1728
Q 104 176 272 384 496 608 704 880 1056 1232
H 72 128 208 288 368 480 528 688 800 976
11 12 13 14 15 16 17 18 19 20
L 2592 2960 3424 3688 4184 4712 5176 5768 6360 6888
M 2032 2320 2672 2920 3320 3624 4056 4504 5016 5352
Q 1440 1648 1952 2088 2360 2600 2936 3176 3560 3880
H 1120 1264 1440 1576 1784 2024 2264 2504 2728 3080
21 22 23 24 25 26 27 28 29 30
L 7456 8048 8752 9392 10208 10960 11744 12248 13048 13880
M 5712 6256 6880 7312 8000 8496 9024 9544 10136 10984
Q 4096 4544 4912 5312 5744 6032 6464 6968 7288 7880
H 3248 3536 3712 4112 4304 4768 5024 5288 5608 5960
31 32 33 34 35 36 37 38 39 40
L 14744 15640 16568 17528 18448 19472 20528 21616 22496 23648
M 11640 12328 13048 13800 14496 15312 15936 16816 17728 18672
Q 8264 8920 9368 9848 10288 10832 11408 12016 12656 13328
H 6344 6760 7208 7688 7888 8432 8768 9136 9776 10208

После определения уровня коррекции ошибок необходимо добавить служебные поля, они записываются перед последовательностью бит, полученной после этапа кодирования. В них указывается способ кодирования и количество данных. Значение поля способа кодирования состоит из 4 бит, оно не изменяется, а служит знаком, который показывает, какой способ кодирования используется. Оно имеет следующие значения:

  • 0001 для цифрового кодирования,
  • 0010 для буквенно-цифрового и
  • 0100 для побайтового

Ранее в примере байтового кодирования кодировалось слово «Мир», при этом получилась следующая последовательность двоичного кода:

11010000 10011100 11010000 10111000 11010001 10000000, содержащая 48 бит информации.

Пусть необходим уровень коррекции ошибок Н, позволяющий восстанавливать 30 % утраченной информации. По таблице максимальное количество информации выбирается наиболее оптимальная версия QR-кода (в данном случае 1 версия, которая позволяет закодировать 72 символа полезной информации при уровне коррекции ошибок Н).

Информация о способе кодирования: побайтовому кодированию соответствует поле 0100.

Указание количества данных (для цифрового и буквенно-цифрового кодирования - количество символов, для побайтового - количество байт): данная последовательность содержит 6 байт данных (в двоичной системе счисления: 110).

По таблице определяется необходимая длина двоичного числа - 8 бит. Дописываются недостающие нули: 00000110.

Версия 1-9 Версия 10-26 Версия 27-40
Цифровое 10 бит 12 бит 14 бит
Буквенно-цифровое 9 бит 11 бит 13 бит
Побайтовое 8 бит 16 бит 16 бит

Вся информация записывается в порядке <способ кодирования> <количество данных> <данные>, получается последовательность бит:

0100 00000110 11010000 10011100 11010000 10111000 11010001 10000000.

Разбиение на блоки

Последовательность байт разделяется на определённое для версии и уровня коррекции количество блоков, которое приведено в таблице «Количество блоков». Если количество блоков равно одному, то этот этап можно пропустить. А при повышении версии - добавляются специальные блоки.

Сначала определяется количество байт (данных) в каждом из блоков. Для этого надо разделить всё количество байт на количество блоков данных. Если это число не целое, то надо определить остаток от деления. Этот остаток определяет, сколько блоков из всех дополнены (такие блоки, количество байт в которых больше на один, чем в остальных). Вопреки ожиданию, дополненными блоками должны быть не первые блоки, а последние. Затем идет последовательное заполнение блоков.

Пример: для версии 9 и уровня коррекции M количество данных - 182 байта, количество блоков - 5. Поделив количество байт данных на количество блоков, получаем 36 байт и 2 байта в остатке. Это значит, что блоки данных будут иметь следующие размеры: 36, 36, 36, 37, 37 (байт). Если бы остатка не было, то все 5 блоков имели бы размер по 36 байт.

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

Создание байтов коррекции

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

Таблица. Количество байтов коррекции на один блок
Строка - уровень коррекции, столбец - номер версии.

1 2 3 4 5 6 7 8 9 10
L 7 10 15 20 26 18 20 24 30 18
M 10 16 26 18 24 16 18 22 22 26
Q 13 22 18 26 18 24 18 22 20 24
H 17 28 22 16 22 28 26 26 24 28
11 12 13 14 15 16 17 18 19 20
L 20 24 26 30 22 24 28 30 28 28
M 30 22 22 24 24 28 28 26 26 26
Q 28 26 24 20 30 24 28 28 26 30
H 24 28 22 24 24 30 28 28 26 28
21 22 23 24 25 26 27 28 29 30
L 28 28 30 30 26 28 30 30 30 30
M 26 28 28 28 28 28 28 28 28 28
Q 28 30 30 30 30 28 30 30 30 30
H 30 24 30 30 30 30 30 30 30 30
31 32 33 34 35 36 37 38 39 40
L 30 30 30 30 30 30 30 30 30 30
M 28 28 28 28 28 28 28 28 28 28
Q 30 30 30 30 30 30 30 30 30 30
H 30 30 30 30 30 30 30 30 30 30

По количеству байтов коррекции определяется генерирующий многочлен (приведено в таблице).

Таблица. Генерирующие многочлены.

Количество байт коррекции Генерирующий многочлен
7 87, 229, 146, 149, 238, 102, 21
10 251, 67, 46, 61, 118, 70, 64, 94, 32, 45
13 74, 152, 176, 100, 86, 100, 106, 104, 130, 218, 206, 140, 78
15 8, 183, 61, 91, 202, 37, 51, 58, 58, 237, 140, 124, 5, 99, 105
16 120, 104, 107, 109, 102, 161, 76, 3, 91, 191, 147, 169, 182, 194, 225, 120
17 43, 139, 206, 78, 43, 239, 123, 206, 214, 147, 24, 99, 150, 39, 243, 163, 136
18 215, 234, 158, 94, 184, 97, 118, 170, 79, 187, 152, 148, 252, 179, 5, 98, 96, 153
20 17, 60, 79, 50, 61, 163, 26, 187, 202, 180, 221, 225, 83, 239, 156, 164, 212, 212, 188, 190
22 210, 171, 247, 242, 93, 230, 14, 109, 221, 53, 200, 74, 8, 172, 98, 80, 219, 134, 160, 105, 165, 231
24 173, 125, 158, 2, 103, 182, 118, 17, 145, 201, 111, 28, 165, 53, 161, 21, 245, 142, 13, 102, 48, 227, 153, 145, 218, 70
26
28 168, 223, 200, 104, 224, 234, 108, 180, 110, 190, 195, 147, 205, 27, 232, 201, 21, 43, 245, 87, 42, 195, 212, 119, 242, 37, 9, 123
30 41, 173, 145, 152, 216, 31, 179, 182, 50, 48, 110, 86, 239, 96, 222, 125, 42, 173, 226, 193, 224, 130, 156, 37, 251, 216, 238, 40, 192, 180

Расчет производится исходя из значений исходного массива данных и значений генерирующего многочлена, причём для каждого шага цикла отдельно.

Объединение информационных блоков

На данном этапе имеется два готовых блока: исходных данных и блоков коррекции (из прошлого шага), их необходимо объединить в один поток байт. По очереди необходимо брать один байт информации из каждого блока данных, начиная от первого и заканчивая последним. Когда же очередь доходит до последнего блока, из него берётся байт и очередь переходит к первому блоку. Так продолжается до тех пор, пока в каждом блоке не закончатся байты. Есть исключения, когда текущий блок пропускается, если в нём нет байт (ситуация, когда обычные блоки уже пусты, а в дополненных ещё есть по одному байту). Так же поступается и с блоками байтов коррекции. Они берутся в том же порядке, что и соответствующие блоки данных.

В итоге получается следующая последовательность данных: <1-й байт 1-го блока данных><1-й байт 2-го блока данных>…<1-й байт n-го блока данных><2-й байт 1-го блока данных>…<(m - 1)-й байт 1-го блока данных>…<(m - 1)-й байт n-го блока данных><1-й байт 1-го блока байтов коррекции><1-й байт 2-го блока байтов коррекции>…<1-й байт n-го блока байтов коррекции><2-й байт 1-го блока байтов коррекции>….

Здесь n - количество блоков данных, m - количество байтов на блок данных у обычных блоков, l - количество байтов коррекции, k - количество блоков данных минус количество дополненных блоков данных (тех, у которых на 1 байт больше).

Этап размещения информации на поле кода

На QR-коде есть обязательные поля, они не несут закодированной информации, а содержат информацию для декодирования. Это:

  • Поисковые узоры
  • Выравнивающие узоры
  • Полосы синхронизации
  • Код маски и уровня коррекции
  • Код версии (с 7-й версии)

а также обязательный отступ вокруг кода . Отступ - это рамка из белых модулей, её ширина - 4 модуля. Поисковые узоры - это 3 квадрата по углам кроме правого нижнего. Используются для определения расположения кода. Они состоят из квадрата 3х3 из черных модулей, вокруг рамка из белых модулей шириной 1, потом ещё одна рамка из черных модулей, так же шириной 1, и ограждение от остальной части кода - половина рамки из белых модулей шириной 1. Итого эти объекты имеют размер 8х8 модулей.


Top