Что такое QR-код

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

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

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

Основное достоинство 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-код (версия 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 цифр.