Как устроен QR-код
Три квадрата по углам, модули, версии и коррекция ошибок: что спрятано в чёрно-белом узоре
QR-код — двумерный штрихкод из чёрных и белых квадратиков-модулей. Три больших квадрата по углам помогают камере найти код и понять, как он повёрнут. Данные записаны в остальных модулях вместе с избыточной информацией по коду Рида — Соломона, поэтому даже испачканный или частично закрытый код читается: до 30% повреждений на самом надёжном уровне. Изобрёл его японский инженер Масахиро Хара в 1994 году.
Откуда взялся QR-код
QR-код придумал инженер Масахиро Хара из японской компании Denso Wave в 1994 году — чтобы отслеживать автомобильные детали на производстве. Название — от английского Quick Response, «быстрый отклик»: код задумывался так, чтобы считываться быстро[1]. Сначала его использовали в автопроме для «электронного канбана» — учёта деталей на производстве.
Обычный штрихкод хранит информацию в одном направлении — в ширине полосок. QR-код — двумерный: данные записаны и по горизонтали, и по вертикали, поэтому их помещается намного больше.
Из чего состоит код

QR-код собран из чёрных и белых квадратиков — модулей. Часть из них служебные:
- Три поисковых квадрата в верхних углах и в левом нижнем. По ним камера находит код, определяет его размер и поворот. Четвёртого угла нет — так понятно, где «верх».
- Выравнивающие узоры — маленькие квадраты в больших кодах. Они помогают прочитать код, если он снят под углом или на изогнутой поверхности.
- Синхронизирующие линии — чередующиеся модули между поисковыми квадратами, по ним определяют сетку.
- Служебная информация — уровень коррекции ошибок и маска.
Всё остальное пространство — данные вместе с проверочными кодами.
Версии: от 21×21 до 177×177
Размер QR-кода задаёт версия. Версия 1 — сетка 21×21 модуль, каждая следующая добавляет по 4 модуля на сторону, вплоть до версии 40 — 177×177.
Самый большой код с минимальной коррекцией вмещает примерно:
| Что записываем | Сколько символов |
|---|---|
| Только цифры | 7089 |
| Цифры и заглавные латинские буквы | 4296 |
| Произвольные байты (например, текст в UTF-8) | 2953 |
| Японские иероглифы кандзи | 1817 |
Коррекция ошибок
Самое умное в QR-коде — избыточность. Данные дополняются проверочными кодами по алгоритму Рида — Соломона (тому же, что использовался на компакт-дисках). Даже если часть кода испачкана или закрыта, его можно восстановить. Уровней четыре:
| Уровень | Сколько можно восстановить |
|---|---|
| L | около 7% |
| M | около 15% |
| Q | около 25% |
| H | около 30% |
Чем выше уровень, тем надёжнее код, но тем меньше в него помещается данных (или тем крупнее он получается при том же содержимом).
Логотип посреди QR-кода — это, по сути, «повреждение». Код всё равно читается, потому что коррекция ошибок восстанавливает закрытые модули. Для кодов с логотипом выбирают уровень H.
В нашем генераторе QR-кодов можно сделать код для ссылки, текста, Wi-Fi или визитки, поменять цвет и форму модулей и поставить логотип в центр — и сразу проверить, как это влияет на читаемость.
Сделайте QR-код прямо здесь
Выберите, что зашить, — ссылку или номер телефона, — и код нарисуется сам. Всё считается в вашем браузере, ничего не отправляется на сервер.
Нужны Wi-Fi, контакт, SMS, свой цвет, логотип по центру или PNG? Откройте полную версию генератора QR-кодов.
Свободный стандарт
Denso Wave сохранила права на патент, но объявила, что не будет их применять, и опубликовала спецификацию, поэтому QR-коды может делать и использовать кто угодно бесплатно[1]. Стандартом AIM код стал в 1997 году, японским JIS — в 1999-м, международным ISO — в 2000-м. Американский и японский патенты к тому же уже истекли. Сам формат описан в международном стандарте ISO/IEC 18004[2].
Частые вопросы
Почему QR-код читается, даже если на нём логотип?
В код встроена избыточность — коррекция ошибок Рида — Соломона. На уровне H можно восстановить около 30% данных, поэтому небольшой логотип в центре не мешает.
Сколько информации помещается в QR-код?
Самый большой код (версия 40, уровень L) вмещает около 7089 цифр, 4296 букв и цифр или 2953 байта.
Нужно ли платить за использование QR-кодов?
Нет. Denso Wave сохранила патентные права, но объявила, что не будет их применять, и открыла спецификацию. А сами патенты в США и Японии уже истекли.
Источники
- History of QR Code, DENSO WAVE — разработчик QR-кода. www.qrcode.com
- QR code, Wikipedia. en.wikipedia.org
Обсуждение
Комментариев пока нет — начните обсуждение первым.
Чтобы написать комментарий или ответить, войдите на сайт: