Все статьи
Числа и сеть

Штрих-коды: типы и генерация

Виды штрих-кодов: EAN, UPC, Code128, QR. Где используются, как генерировать, стандарты.

8 апреля 2025
7 мин чтения
ConvertHub
#barcode#штрих-код#генерация

Введение

Штрих-код — это графическое представление данных, которое машина (сканер или камера) может прочитать за доли секунды. Сегодня штрих-коды стоят на каждой упаковке товара, билете, посылке, рецепте и даже лабораторном образце. Без них современная логистика, розничная торговля и складской учёт были бы немыслимы. Каждый формат штрих-кода разработан под конкретные задачи: одни удобны для розницы, другие — для кодирования длинных строк, третьи — для хранения больших объёмов данных в квадрате.

В этой статье мы разберём основные типы штрих-кодов — от классических одномерных (EAN, UPC, Code128) до двумерных (QR, Data Matrix, PDF417) — обсудим, где применяется каждый формат, как они устроены и как сгенерировать штрих-код самостоятельно. Также мы рассмотрим контрольные суммы, без которых штрих-код не будет считываться корректно.

Одномерные штрих-коды

Одномерный (линейный) штрих-код состоит из вертикальных чёрных и белых полос разной ширины. Каждый символ кодируется комбинацией полос, а сканер читает код по изменению отражения света. Линейные коды компактны, легко печатаются и быстро считываются, но вместимость их ограничена — обычно 8–20 символов.

ТипДлина данныхТип данныхТипичное применение
EAN-1313 цифртолько цифрыРозничная торговля (Россия, Европа)
EAN-88 цифртолько цифрыМалогабаритные товары
UPC-A12 цифртолько цифрыРозница в США и Канаде
Code39переменнаяцифры + заглавные буквы + спецсимволыПромышленность, оборона, логистика
Code128переменнаяполный ASCIIЛогистика, транспортные накладные
ITF-1414 цифртолько цифрыГрупповая упаковка (короба)

EAN-13: стандарт розницы

EAN-13 — самый распространённый штрих-код в мире. Он состоит из 13 цифр: первые 2–3 — код страны (для России — 460–469), следующие 4–5 — код предприятия, ещё 5 — код товара, последняя цифра — контрольный разряд. Контрольная сумма вычисляется по алгоритму, похожему на Luhn, и позволяет обнаружить ошибку при ручном вводе или повреждении кода.

EAN-13: 4 6 0 1 2 3 4 5 6 7 8 9 0
                  │             │     │
                  │             │     └── контрольная цифра
                  │             └── код товара
                  └── код страны + предприятия

Контрольная цифра EAN-13:
1. Сложить цифры на нечётных позициях (кроме последней)
2. Сложить цифры на чётных позициях, умножить на 3
3. Сумма должна делиться на 10
4. Контрольная цифра = (10 − сумма mod 10) mod 10

Code128: код для логистики

Code128 поддерживает все 128 символов ASCII и использует три набора (A, B, C) для переключения между режимами. Это позволяет компактно кодировать как буквы, так и цифры — режим C кодирует цифры парами, экономя место. Code128 широко применяется в транспортных накладных, маркировке посылок и идентификации паллет.

Двумерные штрих-коды

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

ТипВместимостьОсобенности
QR Codeдо 7089 цифр / 4296 буквКоррекция ошибок, быстрое распознавание под углом
Data Matrixдо 3116 цифр / 2335 буквКомпактный, читается при низком контрасте
PDF417до 2710 цифр / 1850 букв«Высокий» код, несколько строк данных
Aztecдо 3832 цифр / 3067 буквЦентральный «глаз», не требует тихой зоны

QR Code: король мобильных кодов

QR (Quick Response) был разработан в 1994 году японской компанией Denso Wave для отслеживания автомобильных деталей. Сегодня это самый популярный двумерный код: его можно встретить на рекламе, в меню ресторанов, на билетах, чеках и в платежных системах. QR поддерживает четыре уровня коррекции ошибок (L, M, Q, H), которые позволяют восстановить от 7 % до 30 % данных при повреждении кода.

Уровни коррекции ошибок QR:
L — восстанавливает ~7 %  данных
M — восстанавливает ~15 % данных
Q — восстанавливает ~25 % данных
H — восстанавливает ~30 % данных

Чем выше уровень, тем больше размер кода при тех же данных.

Подробнее об устройстве QR-кодов, режимах кодирования и применении читайте в нашей статье прогенератор QR-кодов.

Data Matrix и Aztec: когда важна компактность

Data Matrix чаще всего применяется для маркировки мелких деталей и медикаментов — он остаётся читаемым даже при размере в несколько миллиметров. В России формат Data Matrix обязателен для маркировки табачной, молочной и других категорий товаров в системе «Честный знак».

Aztec-коды используются в транспортной сфере: на билетах РЖД и авиакомпаний. Их особенность — центральный «глаз» в виде квадрата из концентрических колец, который служит для позиционирования сканера и не требует тихой зоны вокруг кода.

Контрольные суммы и валидация

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

Алгоритм проверки EAN-13 на JavaScript

function ean13CheckDigit(twelveDigits) {
  let sum = 0;
  for (let i = 0; i < 12; i++) {
    const digit = parseInt(twelveDigits[i], 10);
    sum += i % 2 === 0 ? digit : digit * 3;
  }
  return (10 - (sum % 10)) % 10;
}

function isValidEAN13(code) {
  if (!/^\d{13}$/.test(code)) return false;
  const expected = ean13CheckDigit(code.slice(0, 12));
  return expected === parseInt(code[12], 10);
}

isValidEAN13('4601234567890'); // true или false

Как сгенерировать штрих-код

Генерация штрих-кода состоит из двух шагов: вычисления контрольной цифры (если требуется стандартом) и преобразования строки в графическое изображение. Для генерации в коде используют специализированные библиотеки:

  • JavaScript: jsbarcode для одномерных кодов, qrcode иbwip-js для двумерных.
  • Python: python-barcode и qrcode.
  • PHP: endroid/qr-code и picqer/php-barcode-generator.
  • Java: zxing (Zebra Crossing) — универсальная библиотека для всех основных форматов.
// Пример генерации Code128 через JsBarcode
import JsBarcode from 'jsbarcode';
import { Canvas } from 'canvas';

const canvas = new Canvas();
JsBarcode(canvas, '123456789012', {
  format: 'CODE128',
  width: 2,
  height: 80,
  displayValue: true,
});
const dataUrl = canvas.toDataURL('image/png');

Для большинства задач удобнее использовать готовый веб-инструмент — нашгенератор штрих-кодов поддерживает EAN-13, UPC-A, Code128, Code39, ITF-14 и другие форматы, а также генерирует QR-коды с настройкой уровня коррекции ошибок.

Выбор формата под задачу

ЗадачаРекомендуемый форматПочему
Розничный товар в РФEAN-13Требование торговых сетей и касс
Коробка с группой товаровITF-14Простой для печати на гофрокартоне
Посылка или накладнаяCode128Полный ASCII, переменная длина
Ссылка на сайт в рекламеQR CodeЛёгкое сканирование камерой смартфона
Маркировка медикаментовData MatrixТребование «Честного знака»
Билет на поездAztecКомпактность, быстрое сканирование

Качество печати и сканирования

Даже правильно сгенерированный штрих-код может не считываться, если нарушены требования к печати:

  • Тихая зона — пустые поля вокруг кода (минимум в 10 раз шире самого узкого модуля). Без неё сканер не понимает, где начинается код.
  • Контраст — чёрные полосы на белом фоне; цветные коды считываются хуже, а инверсные (белое на чёрном) — только специальными сканерами.
  • Минимальный размер модуля — для розницы обычно не менее 0,33 мм; при печати на струйном принтере стоит добавлять запас.
  • Разрешение печати — не менее 300 dpi для печати штрих-кодов; при меньшем разрешении возможны искажения ширины полос.
  • Расположение — код не должен пересекать сгибы упаковки или попадать на закруглённые поверхности.

Заключение

Штрих-коды — это зрелая, стандартизованная технология, которая решает конкретные задачи: идентификацию товара, отслеживание посылок, передачу коротких строк, доступ к информации по камере смартфона. Выбор формата зависит от требований конкретной сферы: розница использует EAN-13, логистика — Code128, реклама — QR, а маркировка медикаментов — Data Matrix. Понимание устройства контрольных цифр и правил печати помогает создавать коды, которые считываются с первого раза.

Для генерации штрих-кодов в один клик используйте наш генератор штрих-кодов — он поддерживает все основные одномерные форматы. Если нужен QR-код с расширенными настройками (Wi-Fi, контакт, ссылка), воспользуйтесь генератором QR-кодов.

Попробуйте эти инструменты

Похожие статьи