Як працюють QR-коди

Також відомо як: кодування QR-коду, декодування QR-коду, how QR codes work

Визначення

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

Від даних до візерунка

Створення QR-коду починається з вибору режиму кодування, що підходить до даних: цифровий, буквено-цифровий, байтовий або кандзі. Кодувальник перетворює дані на біти, ділить їх на 8-бітові кодові слова й додає кодові слова корекції помилок Ріда-Соломона обраного рівня. Потім він вибирає найменшу версію, у яку все вміщається.

Кодові слова розкладаються по сітці зигзагоподібним шляхом, що обходить фіксовані шаблони. Наприкінці кодувальник застосовує одну з восьми масок, щоб розбити великі порожні ділянки чи заплутані форми, і записує маску та рівень корекції помилок в інформацію про формат.

  • Обрати режим кодування
  • Закодувати дані й додати кодові слова корекції помилок
  • Вибрати версію (розмір)
  • Розмістити пошукові шаблони, шаблони синхронізації та вирівнювання
  • Заповнити модулі даних
  • Застосувати найкращу з восьми масок і записати інформацію про формат

Від зображення з камери до даних

Декодування виконує ті самі кроки у зворотному порядку. Сканер знаходить три пошукові шаблони, співвідношення темного й світлого в яких 1:1:3:1:1 вирізняється на тлі більшості зображень, і разом із шаблонами синхронізації та вирівнювання будує карту сітки. Він зчитує інформацію про формат, знімає маску й збирає кодові слова.

Далі декодування Ріда-Соломона виправляє кодові слова, що були прочитані неправильно, у межах, які дозволяє рівень корекції помилок. Якщо пошкоджено занадто багато, код не читається, а не повертає хибні дані, тому QR-коди рідко дають спотворений результат.

Чому важливі розмір і контраст

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

Поширені запитання

Як телефон знає, де QR-код?

Він шукає три великі квадратні пошукові шаблони в кутах. Їхнє характерне співвідношення 1:1:3:1:1 дозволяє сканеру знайти їх під будь-яким кутом і визначити орієнтацію.

Навіщо QR-кодам маска?

Маска інвертує модулі за заданим візерунком, щоб у коді не було великих суцільних ділянок і форм, схожих на пошукові шаблони. Кодувальник пробує всі вісім масок і залишає ту, яка читається найнадійніше.

Чи можна прочитати QR-код догори дном?

Так. Пошукові шаблони підказують сканеру орієнтацію, тож QR-код можна прочитати за будь-якого повороту.

Джерела та стандарти

Усі терміни