QR-код

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
QR-код со ссылкой на страницу этой статьи.
QR-код со ссылкой на веб-сайт на биллборде
Художественный QR-код. Благодаря избыточной информации, этот код остаётся читаемым.

QR-код (англ. quick response — быстрый отклик) — матричный код (двумерный штрихкод), разработанный и представленный японской компанией «Denso-Wave»[1] в 1994 году.

Описание[править | править вики-текст]

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

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

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

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

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

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

Миниатюрное издание А. С. Пушкина «Евгений Онегин» в QR-коде[2]

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

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

Применение[править | править вики-текст]

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

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

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

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

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

QR-коды активно используются музеями[8], а также и в туризме. Например, во Львове (Украина), объединение бизнесменов «Туристическое движение Львова» разместило QR-коды более чем на 80 туристических объектах. Это позволяет индивидуальному туристу легко ориентироваться в городе, даже не зная украинского языка, так как QR-коды установлены на нескольких языках[9][10].

Также в Белгороде (Россия), в конце 2013 года был реализован областной проект по оснащению памятников культуры города QR-кодами. Таким образом запуск информационного ресурса «QR Белгород» позволил сделать информацию об историческом и культурном наследии региона более доступной для гостей и жителей области[11][12].

Общая техническая информация[править | править вики-текст]

Самый маленький 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 то можно применить цифровое кодирование, если кроме цифр вам необходимо зашифровать буквы латинского алфавита, пробел и символы +-*/$%*.:, то вам необходимо использовать алфавитно-цифровое кодирование. Еще существует кодирование кандзи, которое применяется для шифрования китайских и японских иероглифов, и побайтовое кодирование. Перед каждым способом кодирования создается пустая последовательность бит, которая затем заполняется.

Кандзи[править | править вики-текст]

В основе кодирования иероглифов (как и прочих символов) лежит визуально воспринимаемая таблица или список изображений иероглифов с их кодами. Такая таблица называется "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 дайни суйдзюн кандзи) упорядочены по ключам, и внутри них - по количеству черт.

Цифровое кодирование[править | править вики-текст]

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

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

Формирование информационных блоков[править | править вики-текст]

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

Этап размещения информации на поле кода[править | править вики-текст]

На 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 модуля и заносят туда информацию, причем делают это "змейкой". Сначала в правый нижний квадратик заносят первый бит информации, потом в его левого соседа, потом в тот, который был над первым и так далее. Заполнение столбцов ведется снизу вверх, а потом сверху вниз и т.д., причем по краям заполнение битов ведется от крайнего бита одного столбца до крайнего бита соседнего столбца, что задает "змейку" на столбцы с направлением вниз. Если информации окажется недостаточно, то поля просто оставляют пустыми (белые модули).При этом на каждый модуль накладывается маска.

Программное обеспечение[править | править вики-текст]

для мобильных телефонов
  • для Apple iOS: Scan&Play, Qrafter, i-nigma, Scan, RedLaser, QR Reader for iPhone, Bakodo — Barcode Scanner and QR Bar Code Reader, AT&T Code Scanner, Elinext UPC, Line Tools, Ценометр, Google, QR and Bar code scanner for iOS;
  • для Android: С версии 4.2 интегрировано в систему в приложении Google Now, Google Goggles, Scan&Play, KKC Barcode Pro 3.0, QuickMark, Barcode Scanner, Barcode2file, QR Droid, NeoReader, ixMAT Scanner, 2D-код, Elinext UPC, I-Nigma, AIcam, расширение QR-сканер для UC Browser, QR and Bar code scanner for Android;
  • для Bada: BeeTagg, Quick QR Reader;
  • для BlackBerry OS: Встроено в App World (магазин приложений), i-nigma;
  • для Java: Kaywa reader, I-Nigma, UpCode;
  • для Maemo: mbarcode;
  • для Symbian OS: QuickMark, Kaywa reader, Nokia barcode reader, I-Nigma, UpCode, NeoReader, BeeTag;
  • для Windows Mobile: QuickMark, I-Nigma;
  • для Windows Phone 7, Windows Phone 8: Встроено в поиск (обновление Mango), QR Code Reader, UC Browser (встроено в сам браузер), Scan, i-nigma
  • для MeeGo: MeeScan, CodeCam
для ПК
  • для Windows: CodeTwo QR Code Desktop Reader

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

Литература[править | править вики-текст]

  • Леонид Бугаев. Мобильный маркетинг. Как зарядить свой бизнес в мобильном мире. — М.: Альпина Паблишер, 2012. — 214 с. — ISBN 978-5-9614-2222-1.

Ссылки[править | править вики-текст]