Рівні корекції помилок QR-коду - це обсяг надлишкових даних, які несе код, щоб сканер міг відновити те, що розмазане, подряпане чи закрите логотипом. Їх чотири: L, M, Q і H, що відновлюють приблизно 7%, 15%, 25% і 30% коду. Обирайте M для більшості екранів і коротких посилань, а H - коли логотип або грубе поводження з'їдатимуть частину коду. Ціна кожного кроку вгору - щільність: більше модулів, дрібніші квадрати за тієї самої надрукованої ширини.
Саме з цього компромісу починається більшість історій "мій QR-код не скануватиметься", і тому цей туторіал розбирає реальні кількості модулів, а не обмежується загальними словами. Якщо ви ще не створили код, як створити QR-код - місце, з якого варто почати; ця стаття - про вибір рівня, коли код уже є.
Що насправді робить корекція помилок у QR-коді
QR-код зберігає ваші дані як байти, що називаються кодовими словами. Поруч із ними він зберігає додаткові кодові слова, обчислені за допомогою корекції помилок Ріда-Соломона, тієї самої родини математики, що використовується на компакт-дисках. Коли сканер читає пошкоджений код, він використовує ці додаткові кодові слова, щоб з'ясувати, які кодові слова з даними хибні та якими вони мали бути.
Обраний вами рівень визначає, скільки є додаткових кодових слів. Denso Wave, що винайшла формат, описує функцію корекції помилок як чотири рівні й зазначає, що підвищення рівня покращує відновлення, але збільшує обсяг даних, а отже й розмір символу. Наведені нижче показники відновлення - ті, що вказані в ISO/IEC 18004 і повторені в статті Вікіпедії про QR-код.
- Рівень L (Low, низький): близько 7% кодових слів можна відновити.
- Рівень M (Medium, середній): близько 15%.
- Рівень Q (Quartile, квартильний): близько 25%.
- Рівень H (High, високий): близько 30%.
Зверніть увагу на слово "близько". Відсоток рахує кодові слова, а не пляму фарби. Сприймайте це як бюджет на ремонт, а не гарантію пошкоджень.
Компроміс щільності: чому вище не завжди безпечніше
Надмірність має десь жити. Вищий рівень заштовхує ваші дані у більший символ. QR-коди бувають версій від 1 до 40, а довжина сторони - це 17 + 4 x версія модулів: версія 1 - це 21 x 21, а версія 40 - 177 x 177, за таблицею версій і місткості від Denso Wave. Кодувальник обирає найменшу версію, місткість якої на обраному вами рівні вміщує ваші дані.
Для URL ці дані - це текст у байтовому режимі. Версія 2 вміщує 32 байти на L, 26 на M, 20 на Q і 14 на H. Версія 8 вміщує 192, 152, 108 і 84. Версія 11 вміщує 321, 251, 177 і 137.
Ціна проступає у версії 8: 192 байти на L, 84 на H. Та сама сітка, менш ніж половина місця для вашого URL, бо решта - це парність.
Чому щільніший код скануватиметься гірше
Телефон має розрізнити кожен модуль. Надрукуйте код шириною 3 см, і сітка з 33 модулів дасть модулі завширшки приблизно 0,9 мм; сітка з 61 модуля - приблизно 0,5 мм. Та сама камера, те саме світло, та сама тремтяча рука. Удвічі менший запас. Правила розмірів у матеріалі яким великим має бути QR-код виходять із того, що розмір модуля розумний, а щільність - це те, що непомітно ламає це припущення.
Робочий приклад: один URL на кожному рівні
Ось експеримент, який я запускаю щоразу, коли хтось каже "просто виставте H". Я взяв URL відстежуваної кампанії довжиною 126 символів: домен, шлях і параметри utm_source, utm_medium, utm_campaign та utm_content. Потім узяв коротке посилання з 25 символів, https://s.elido.me/qr7kP2, як ілюстративний приклад. Обидва в байтовому режимі. Я закодував кожен на всіх чотирьох рівнях стандартним кодувальником, а наведена вище таблиця місткості передбачає результат.
| Рівень | Відновлення | URL з 126 символів | Коротке посилання з 25 символів |
|---|---|---|---|
| L | ~7% | V6, 41 x 41 | V2, 25 x 25 |
| M | ~15% | V8, 49 x 49 | V2, 25 x 25 |
| Q | ~25% | V9, 53 x 53 | V3, 29 x 29 |
| H | ~30% | V11, 61 x 61 | V4, 33 x 33 |
Впадають в око дві речі. По-перше, довгий URL зростає з 41 до 61 модуля на сторону при переході від L до H, тобто з 1681 до 3721 модуля, приблизно в 2,2 раза за площею. По-друге, і про це ніхто не згадує: коротке посилання на найсильнішому рівні H (33 x 33) усе ще менше за довгий URL на найслабшому рівні L (41 x 41).
Корисне навантаження важливіше за рівень. Ви можете купити максимальний бюджет відновлення 30% для короткого посилання й отримати розрідженіший, грубіший код, ніж "ефективний" код рівня L для довгого URL.
Коли обирати H, а коли краще L або M
Підбирайте рівень під те, що справді трапиться з кодом. Загальна обережність - це не специфікація.
Обирайте H (або Q), коли
- Посередині стоїть логотип або знак бренду. Він ховає модулі, які сканер має відновити.
- Код надруковано на упаковці, флаєрі в кишені, наліпці, столі, який витирають, або на чомусь просто неба.
- Поверхня груба чи вигнута, а фінішну обробку ви контролювати не можете.
- Повторне сканування неможливе, наприклад код на продукті, що вже відправлений.
Довідкова стаття Elido про QR-коди каже те саме: тримайте логотип менш ніж 20% площі коду й перемикайтеся на H, коли виходите за цю межу або друкуєте з логотипом.
Обирайте L або M, коли
- Код з'являється на екрані: слайд, вебсторінка, підтвердження оформлення замовлення.
- URL короткий, і ніщо його не закриє й не подряпає.
- Місця мало, і код має лишатися малим, тож кожен модуль на рахунку.
M - практичний вибір за замовчуванням. Denso Wave каже, що це найчастіше обираний рівень, а наш власний допис QR-код не скануватиметься наголошує на тому самому з боку служби підтримки: H - хибний вибір за замовчуванням для звичайного коду, бо щільність, яку він додає, спричиняє більше невдалих сканувань, ніж пошкоджень, від яких він захищає.
Застереження щодо логотипів: корекція помилок відновлює відсутні модулі, але не виправляє поганий контраст, розмитість чи обрізане поле. Правила дизайну для витрачання бюджету на логотип наведено в матеріалі дизайн брендованого QR-коду, зокрема чому три кутові квадрати лишаються недоторканими.
Короткі посилання тримають код розрідженим (і динамічні QR-коди їх використовують)
Робочий приклад дає правило, яке можна застосувати вже сьогодні: зменшуйте корисне навантаження, перш ніж піднімати рівень. Динамічний QR-код робить саме це. Замість кодування повної цілі він кодує коротке посилання, а коротке посилання переадресовує куди завгодно, куди ви його спрямуєте.
Кодування короткого посилання має три наслідки для надійності:
- Сітка лишається на низькій версії, тож модулі лишаються великими за будь-якого розміру друку.
- Ви можете дозволити собі рівень Q або H для логотипа чи зношування в друці, не роздуваючи код.
- Параметри відстеження живуть у цілі, а не в візерунку, тож зміна мітки кампанії ніколи не змушує створювати новий, щільніший код.
Є й четверта перевага, що не має стосунку до щільності: оскільки код вказує на коротке посилання, ви можете змінити його ціль пізніше без повторного друку й безкоштовно отримуєте кількість сканувань. У статичного коду ціль вшита у візерунок, тож єдиний спосіб виправити помилку - надрукувати знову.
Якщо хочете спробувати це на власних посиланнях, генератор QR-кодів дає змогу задати рівень для кожного коду, з M як відправною точкою, а подробиці планів є на сторінці цін. Зробіть один код на M і один на H із того самого короткого посилання, надрукуйте їх шириною 3 см і порівняйте. Закладаюся, що вам буде важко відрізнити їх на око, і в цьому суть.
Короткий контрольний список перед друком
Виконуйте їх по порядку.
- Спершу скоротіть URL; тримайте параметри відстеження в цілі.
- Оберіть рівень за таблицею: M для екранів і звичайного друку, Q або H для логотипів і зношування.
- Перевірте версію, яку обрав ваш генератор. Якщо для URL вона перевищує приблизно 10, запитайте себе, чому навантаження таке довге.
- Збережіть тиху зону: щонайменше чотири модулі порожнього поля з кожного боку.
- Надрукуйте в кінцевому розмірі й відскануйте двома різними телефонами за звичайного освітлення.
Крок 5 ловить те, чого не передбачить жодна таблиця. Логотип, що виглядав малим на екрані, може закрити більше модулів, ніж ви гадаєте.
Читайте серію Cornerstone
Ця публікація входить до кластера туторіалів, а її Cornerstone - як створити QR-код. Правила розмірів і відстані, що визначають, чи достатньо великий ваш модуль, дивіться в матеріалі яким великим має бути QR-код.
Пов'язані публікації в блозі
Поширені запитання
Який рівень корекції помилок QR-коду найкращий?
Рівень M - розумний вибір за замовчуванням: він відновлює близько 15% коду й зберігає малу сітку. Denso Wave, винахідник формату, каже, що M - найчастіше обираний рівень. Переходьте на Q або H, коли код містить логотип або буде надрукований на чомусь, що дряпається, згинається чи лишається просто неба.
Що означає 30% корекції помилок на QR-коді?
Це означає, що код рівня H можна ще розкодувати, коли до приблизно 30% його кодових слів з даними нечитабельні або закриті. Код зберігає додаткові дані парності Ріда-Соломона, і сканер використовує їх, щоб відновити відсутнє. Це стеля для відновлюваних пошкоджень, а не обіцянка, що можна втратити будь-які 30% поверхні.
Чи ускладнює вищий рівень корекції помилок сканування QR-коду?
Опосередковано - так. Вищі рівні додають дані парності, тож для того самого URL потрібна вища версія з більшою кількістю дрібніших модулів. За тієї самої надрукованої ширини дрібніші модулі камері телефона розрізнити важче. Виправлення - коротше корисне навантаження, а не нижчий рівень для коду, якому потрібен захист.
Чи потрібен рівень H, щоб розмістити логотип на QR-коді?
Використовуйте H, або принаймні Q, для будь-якого коду з логотипом посередині. Логотип ховає модулі, і сканер сприймає їх як пошкодження, яке треба відновити. Тримайте логотип значно менше чверті площі коду та подалі від трьох кутових квадратів, щоб на зношування в друці лишався запас.
Чи можна відсканувати пошкоджений QR-код?
Часто так, у межах ліміту рівня. Подряпаний, розмазаний чи частково закритий код розкодовується, якщо втрачена площа лишається в межах того, що може відновити його рівень, а кутові квадрати цілі. Код рівня L переносить близько 7% пошкоджень, код рівня H - близько 30%.
Який рівень корекції помилок QR-коду є типовим?
У стандарті немає єдиного типового значення; кожен генератор обирає власне, а M - найпоширеніший вибір. Пісочниця QR-кодів Elido починається з M, а L, Q і H доступні з того самого елемента керування.
Спробуйте Elido
Вставте URL - отримайте коротке посилання
Без реєстрації. Посилання живе 30 днів. Зареєструйтесь, щоб зберегти назавжди.
Безкоштовно, без реєстрації · 2 на день