QRkoder

Числовой режим (Numeric Mode)

Самый компактный режим кодирования QR-кода — только цифры 0–9. Использует 10 бит на 3 цифры по ISO/IEC 18004, даёт максимальную ёмкость до 7089 цифр при версии 40.

Определение числового режима

Числовой режим (Numeric Mode) — один из четырёх режимов кодирования QR-кода по ISO/IEC 18004. Алфавит — только 0–9, никаких пробелов, точек, дефисов и букв. Взамен ограничения режим даёт самую плотную упаковку: 10 бит кодируют сразу 3 цифры. В заголовке Numeric помечается индикатором 0001, далее идёт счётчик длины (10–14 бит в зависимости от версии) и сам поток данных тройками.

Упаковка 10 бит на 3 цифры

Тройка цифр представляет число 0–999, для которого нужно ровно 10 бит (2¹⁰ = 1024). Если общее количество цифр не кратно трём, остаток в 1 цифру кодируется 4 битами, в 2 цифры — 7 битами. Сравнение с другими режимами:

РежимБит на символАлфавит
Numeric3,330–9
Alphanumeric5,50–9, A–Z, $%*+−./: пробел
Byte8любой байт UTF-8 / ISO-8859-1
Kanji13Shift JIS X 0208

Numeric в 2,4 раза экономнее байтового режима: 100 цифр — 334 бита против 800. Конкретные значения ёмкости: V1+L = 41 цифра (хватает на ИНН), V5+L = 255 цифр, V40+L = 7089 цифр — это абсолютный потолок ёмкости QR в любом режиме.

Где применяется Numeric Mode

В большинстве реальных QR содержится URL — там работает Byte Mode. Чисто числовые задачи встречаются реже, но регулярно: числовая часть GTIN/EAN-13 (60 бит вместо 104), ID платежа в СБП-QR, артикулы и серийные номера на складских этикетках, чековые PIN и купоны.

Ручной выбор режима не нужен. QRkoder и движки ZXing, qrencode, libqrencode анализируют входную строку и автоматически переключаются: чистые цифры идут в Numeric, смешанные строки разбиваются на блоки и кодируются каждым своим режимом. На длинных числовых хвостах URL оптимизатор экономит 15–25% бит относительно сплошного Byte.

Частые вопросы

Почему 10 бит на 3 цифры?

Тройка цифр даёт диапазон 0–999, который требует ровно 10 бит (2¹⁰ = 1024). Четвёрка дала бы 0–9999 и потребовала 14 бит — 3,5 бита на символ против 3,33 при тройках. Стандарт ISO/IEC 18004 выбрал тройки как оптимум плотности.

Можно ли закодировать номер с плюсом и скобками?

Нет, Numeric принимает только 0–9. Знаки «+», скобки, дефисы переключат строку в Byte. Очистите номер до чистых цифр (79991234567 вместо +7 (999) 123-45-67) — это даст выигрыш в одну-две версии QR.

Почему QR с цифрами всё равно идёт в Byte?

Скорее всего, в строке есть невидимые символы: \n, BOM, пробелы. Сделайте trim перед генерацией. Также убедитесь, что библиотека поддерживает Optimal Mode Switching — старые реализации кодируют всё в Byte подряд. Современные движки (QRkoder, ZXing 3.5+, qrencode 4+) переключаются сами.

Сколько цифр в QR версии 1?

V1 (21×21) при ECC L вмещает 41 цифру, M — 34, Q — 27, H — 17. Этого хватает на ИНН (10–12 знаков), короткий номер заказа или PIN. Для трекинговых номеров удобнее V2–V3 с запасом до 77–127 цифр.

Используется ли Numeric в СБП-QR?

СБП-QR построен по EMVCo TLV — строка с тегами и значениями. Большая часть полей цифровая: ID получателя, сумма, BIC, MCC. Оптимизатор кодирует числовые блоки в Numeric, текстовые (название магазина, комментарий) — в Byte. За счёт этого платёжный QR умещается в V6–V10 вместо V10–V14 — критично для печати на чеке.

Создавайте QR-коды бесплатно

Динамические QR-коды с аналитикой, дизайном и без ограничений по сканированиям.

Начать бесплатно