штрих код количество цифр
Что зашифровано в штрих-коде?
Прямоугольники с черными полосками несут много полезной информации для потребителя.
Подавляющее большинство продуктовых товаров, попадающих на прилавки магазинов, имеют на этикетках так называемые штрих-коды — небольшие белые прямоугольники с черными полосками и набором цифр под ними. Разбираемся, для чего они нужны и какую полезную для потребителя информацию они несут.
Штриховой код, или штрих-код, содержит такую информацию, как страна-изготовитель продукта, на каком предприятии он был произведен, а также технические характеристики: наименование, сорт, артикул, цвет, массу, размер и т. д. Кроме того, проведя несложные расчеты, на основе данных штрих-кода кассир и покупатель могут определить подлинность товара.
Штрих-код наносится на упаковку товара в виде последовательности штрихов и пробелов разной ширины. Для считывания такой информации используются специальные устройства — сканеры. Большинство штрих-кодов созданы при помощи кодировочных систем. Самые распространенные — это европейская система кодирования EAN (European Article Number) и американский универсальный товарный код UPC (Universal Product Code). Каждому виду изделия присваивается свой номер, состоящий из 13 или 8 цифр.
Страна-изготовитель продукта обозначается первыми двумя или тремя цифрами. Код страны не может быть обозначен только одной цифрой. Например, код России — цифры в интервале от 460 до 469, США и Канады — 00–13, Италии — 80–83, Китая — 690–699, Великобритании соответствует число 50, Беларуси — 481.
Иногда первые цифры штрих-кода могут не соответствовать информации о производителе на этикетке. Это происходит из-за того, что организация была зарегистрирована и получила код не в стране, куда экспортирует продукцию, товар был изготовлен на дочернем предприятии или по лицензии организации из другой страны, а также в том случае, если учредителями предприятия являются несколько фирм из различных государств.
Все коды, начинающиеся с 200 и заканчивающиеся на 299, зарезервированы для внутреннего использования предприятиями любых стран. Например, продуктовый магазин может изготовить собственные этикетки со штрих-кодом и зашифровать в них информацию о товарах для внутренних целей. Чаще всего — для продуктов, продающихся на развес. Кроме того, первые цифры от 977 и далее соответствуют не стране-изготовителю, а некоторым видам товаров, например, журналам и книгам.
Код предприятия — это следующие четыре цифры, обозначающие регистрационный номер производителя товара. За присвоение номера ответственна региональная организация, представляющая страну в системе кодирования. Эта часть кода позволяет исключить возможность появления двух различных товаров с одинаковыми кодами.
Для маркировки продукции совсем небольших размеров часто используется сокращенный код (EAN-8), в котором не размещается информация об изготовителе, и после кода страны сразу идет регистрационный номер товара.
Код товара — оставшиеся пять цифр (кроме последней) — используется для кодировки самого товара и присваивается изготовителем или продавцом в виде регистрационного номера в пределах своей организации. В этих цифрах изготовитель может закодировать необходимые для идентификации товара данные: наименование, сорт, артикул, цвет, массу, размер и т. д.
Последняя в коде цифра введена для того, чтобы сканер мог определить подлинность товара. Однако покупатель может сделать это самостоятельно, проведя несложные вычисления:
1. Сложите цифры, стоящие на четных местах (6 + 3 + 2 + 6 + 0 + 1 = 18).
2. Полученную сумму умножьте на три (18 * 3 = 54).
3. Сложите цифры, стоящие на нечетных местах, кроме самой контрольной цифры (4 + 2 + 7 + 0 + 6 + 1 = 20).
4. Сложите числа, полученные в п. 2 и п. 3 (54 + 20 = 74).
5. Отбросьте десятки (74 – 70 = 4).
6. Из числа 10 вычтите полученное в п. 5 (10 – 4 = 6).
Если результат расчета не совпадает с контрольной цифрой в штрих-коде — значит товар произведен незаконно.
Если Вы не нашли необходимую информацию, попробуйте
зайти на наш старый сайт
Разработка и продвижение сайта – FMF
Почтовый адрес:
Адрес: 350000, г. Краснодар, ул. Рашпилевская, д. 100
Канцелярия +7 (861) 255-11-54
прием посетителей пн., вт., ср., чт. с 10.00 до 16.00
ПТ. и предпраздничные дни с 10.00 до 13.00
перерыв с 13.00 до 13.48
Виды штрих-кодов, описание линейных и двумерных форматов. Как определить тип по изображению?
В современном мире во всех основных экономических сферах – торговле, промышленности, логистике и других, где необходим эффективный автоматизированный учёт товаров и материалов, применяют различные виды штрих-кодов. Подбор подходящего штрихового кодирования для конкретного случая использования и технического оборудования для его нанесения является важным этапом организации торговых и производственных взаимодействий.
Дорогие читатели! Наши статьи рассказывают о типовых способах решения юридических вопросов, но каждый случай носит уникальный характер.
Классификация видов
Штрих-код представляет собой графическую информацию в виде чередования черных и белых полос, которая наносится на поверхность, упаковку или маркировку товара.
Наибольшее применение штриховые коды получили:
Существует два основных вида штрих-кодов.
Линейные, или одномерные (1D)
Это графические изображения из сочетания черных и белых элементов виде линий разной толщины, обычно читаемые в горизонтальном направлении, которые содержат закодированную по определённым стандартам текстовую или числовую информацию.
Характерные черты:
Двумерные (2D)
Это графическое изображение в виде квадрата (иногда прямоугольника), состоящего из матрицы квадратных элементов, которое содержит вертикально и горизонтально расположенную закодированную информацию.
Отличительные особенности:
Форматы линейных и их характеристика
Существует несколько наиболее распространённых форматов линейных штриховых кодов, каждый из которых более подробно рассмотрен ниже.
EAN-13
European Article Number (EAN) – штрих-код европейского стандарта, введённый в действие странами Европы в 1977 году, аналогичный по назначению и структуре коду UPC.
Структура EAN-13 кода обычно содержит:
В некоторых случаях EAN код может быть дополнен добавочным товарным идентификатором (из 2-5 цифр), который печатается справа от основного изображения.
У этого кода есть разновидность EAN-8, включающая 8 носителей информации. Обычно применяется для кодировки маленьких партий или малогабаритных товаров. Меньший размер штрих-кода способствует более оперативному считыванию данных.
Universal Product Code (UPC) – это один из самых ранних штриховых кодов, принятый в 1973 году в США и являющийся американским стандартом универсального товарного кода.
Его состав включает 12 цифр:
Состоит из двух групп цифр – левой и правой, по шесть символов в каждой. Каждая цифра в группе кодируется четырьмя штрихами – двумя темными и двумя белыми. Отличительная особенность UPC-кода в симметричности правой и левой его сторон, а также в фотографически негативном начертании правой цифровой группы относительно левой.
Код UPC преобразуется в EAN-13 добавлением нуля перед составляющими его двенадцатью цифрами.
CODE 39
Это штрихкодовое обозначение переменной длины, в котором могут быть зашифрованы большие латинские буквы, цифры и некоторые символы. В отличие от кода EAN-13, он не содержит фиксированного числа символов и не требует обязательного применения контрольной цифры.
CODE 128
Увеличенный вариант штрихового кодирования, который содержит большое количество цифровых и буквенных символов, объединённых в разные группы. Отличается компактностью, достигаемой при помощи записи двух цифр в один штрихкодовой шаблон.
Обычно в его состав входят такие зашифрованные данные:
Interlesved 2 of 5 (ITF)
Вид штрих-кода, который содержит числовую информацию, зашифрованную на основе ширины штрихов и промежутков. Узнаваем по контурной толстой рамке на рисунке, которая помогает улучшить распознавание кода сканером, даже под большим углом. Содержит чётное число цифр, в случае нечётного их количества впереди добавляется ноль. Был разработан в 1995 году в США.
Форматы двумерных и их характеристика
Самыми распространенными видами двумерных штриховых кодов являются: QR-code, Data Matrix и Aztec Code.
QR-код
Наиболее универсальный вид штрих-кода, легко узнаваемый по присутствию квадратов в трёх углах графического рисунка – верхнем правом, нижнем левом и верхнем левом, а также нечетным количеством начерченных столбцов. Отличительной его особенностью служит возможность сканирования при помощи мобильных устройств.
Этот вид штрихового кодирования может содержать практически любые зашифрованные текстовые и числовые данные, в том числе персонифицированного и рекламного характера. Он обладает алгоритмами автоматической коррекции ошибок при возможных повреждениях кода или сканировании в сложных условиях.
Предлагаем посмотреть видео что такое QR-код, как он появился и для чего используется:
Data Matrix
Разновидность штрих-кода, выбранная в качестве основной для российской системы маркировки товаров. Его графическое изображение напоминает QR-код, но здесь отсутствуют характерные для последнего квадраты, зато имеются две отличительные непрерывные перпендикулярные чёрные полосы по левой боковой и нижней части рисунка.
Основное отличие Data Matrix заключается в компактном размере и чётном количестве изображенных столбцов. Возможности этого кода очень схожи с QR-кодированием, с хорошим уровнем защиты от ошибок. Согласно распоряжению правительства РФ (от 28 апреля 2018 г. N 792-р), в 2019 году обязательная маркировка новейшей версией штрих-кода Data Matrix ECC200 требуется для:
Aztec Code
Один из самых эффективных видов штрихового кодирования по возможностям корректировки возникающих ошибок. Графическое изображение отличается от двух предыдущих видов наличием в самом центре элемента в виде вложенных друг в друга квадратов.
Все три основные вида двумерных штрих-кодов, в целом, очень схожи между собой. Это позволяет считать их взаимозаменяемыми, и в случаях невозможности применения какого-либо из них (например, при отсутствии совместимости с используемым сканером), разрешено перейти на альтернативную разновидность кодирования.
Как определить тип по изображению?
Графическое изображение различных видов штриховых кодов отличается некоторыми элементами, что помогает распознать их. Линейные виды кодирования информации обозначаются чередующимися чёрными штрихами разной толщины (в зависимости от видовых особенностей кода) и белыми промежутками, с определённым набором символов под ними.
Видовые отличия изображений одномерных штрих-кодов:
Двумерные коды состоят из квадратно-пиксельных графических рисунков с отличительными особенностями для каждого вида:
О том, из чего состоят штрих-коды и как их расшифровать, говорится в другом материале.
Штрих-кодирование товаров помогает создавать правильную организацию их оптовых и розничных поставок, обеспечивать контроль за сроками реализации и удобство процесса продажи и учёта товарных изделий. Кроме того, применение кодов снижает риск возможных ошибок, что позволяет ускорить производственный оборот и увеличить прибыль компании.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Штрих код: что это, каким бывает и как используется
Штрихкод товара — это графическое изображение, содержащее закодированные буквы и цифры и необходимое для автоматизации учета. Оно представлено в виде комбинации черных полос разной ширины с набором цифр под ними или прямоугольного поля, заполненного черно-белыми модулями.
Штрихкодирование активно используется практически во всех областях экономики: торговле, промышленности, транспортной сфере, рекламе и других, где необходима оптимизация учета продукции, материалов, событий. Применение штрихкодов не просто оправдано, а необходимо с точки зрения конкурентоспособности бизнеса.
В статье разберемся, какие бывают штрих коды, по какому принципу они работают, и какие сведения содержат.
Штрихкод на товаре: для чего нужен
Штрихкоды используются для идентификации любых объектов учета. Они содержат информацию, которая помогает определить принадлежность товара к какой-либо категории, заданной пользователем (производителем).
Для чего нужен штрих код на товаре? Он предоставляет основные характеристики изделий, тем самым облегчает и ускоряет работу с ними на различных предприятиях.
Зачем нужен штрих код:
Виды и типы штрих кодов
Существуют два способа кодирования:
Рассмотрим виды и основные типы штрихкодов подробнее.
Линейный штрих код: описание, какие бывают
Линейный (одномерный или 1D-) штрих код представляет собой рисунок, состоящий из комбинации черных полос разной ширины и пробелов между ними. Под линиями располагаются цифры, дублирующие информацию.
Штрихкод содержит закодированные по определенным стандартам текстовые и/или числовые данные. Их запись обеспечивается двоичной системой кодирования, где полосы обозначаются символом «1», а пробелы — «0».
Характерные особенности штрихкода:
Какие бывают 1D-штрихкоды (наиболее распространенные типы):
EAN — самый популярный тип линейных штрихкодов, используемый практически во всех торговых точках. Обычно кодировка состоит из 13 символов, но для небольших упаковок, где не хватает места для размещения полноразмерного кода, может использоваться EAN-8.
Цифры, расположенные под вертикальными штрихами, дублируют данные, зашифрованные в комбинации полос. Это нужно для того, чтобы при повреждении кода можно было получить информацию, вбив в учетную базу числовое сочетание.
Как выглядит штрих код EAN-13:
ITF-14 — обычно используется для учета оптовых партий товаров и организации складского хранения. Содержит 14 цифровых символов. Отличительная особенность кода — черная полоса по периметру, которая нужна для снижения вероятности неправильного чтения.
Двумерный штрих код: описание, какие бывают
Двумерный (2D-) штрихкод — изображение в виде прямоугольника или квадрата, которое считывается сразу в двух плоскостях. Такой способ шифрования позволяет экономить место на этикетке или упаковке и при этом хранить большой объем данных о товаре (до нескольких страниц текста). Применяется в торговле, в области документооборота, удостоверения личности, в складском учете, при маркировке товаров, транспортировке грузов и не только.
Характерные особенности кода:
На какие две распространенные группы делятся 2D-штрих коды:
QR-код — пожалуй, самый популярный тип. Он активно используется в торговле, рекламе, маркетинге, туризме, сервисах продаж электронных билетов и многих других сферах.
Любой QR-код содержит несколько обязательных элементов — 3 квадрата, благодаря которым сканер может определять положение рисунка, а также исправлять искажение.
Data Matrix — код, представляющий собой изображение из модулей контрастных цветов (чаще черного и белого). С двух сторон ограничивается линиями, благодаря которым сканер понимает ориентацию штрихкода. Алгоритмы шифрования позволяют восстанавливать утраченные фрагменты.
В России применяется для обязательной маркировки продукции. Такой код может иметь размеры 0,5 × 0,5 см, благодаря этому его удобно размещать на небольших упаковках, например, пачках сигарет или лекарств.
Какую информацию несет в себе штрих код
Наиболее распространенная в России кодировка — EAN (13 или 8 символов). Второй вариант используется, когда нет физической возможности расположить на упаковке или товаре первый, расширенный тип.
Штрихкод включает:
первые 1–3 символа — код национальной компании, в чьих реестрах зарегистрирован производитель товара. Можно было бы сказать, что это информация о стране-производителе, но это не совсем корректно, поскольку регистрирующая организация может находиться в другом государстве.
Каждая страна имеет одну или несколько уникальных комбинаций кода, например, для России это 460–469, США и Канады — 00–13, Китая — 690–693. Номера присваиваются Международной Ассоциацией товарной нумерации (GS1).
вторые 4–5 цифр — номер регистрации компании-изготовителя. Он выдается национальным органом страны, в которой был произведен товар.
следующие 3–5 символов — сведения о товаре. Номер, под которым продукция занесена в базу данных компании-продавца. И уже в ней под порядковым номером со штрихкода зарегистрированы название товара, габариты, стоимость и другие характеристики.
последняя цифра — контрольное число, необходимое для проверки сканером подлинности товара.
поле, содержащее знак «>» — «свободная зона» (пустое пространство, по которому сканер определяет конец штрихкода).
Информация, зашифрованная в штрих коде, как правило, не предназначена для покупателей. Но с введением в России обязательной маркировки кодами Data Matrix, это изменилось. Теперь содержание штрихкода доступно для потребителей и является свидетельством качества продукции.
Какую информацию несет в себе штрихкод (что зашифровано в нем):
Идентифицировать товары без штрихкодов очень трудно, а порой невозможно, так как визуально они могут быть совершенно одинаковыми. Кроме того, штрихкодирование значительно ускоряет процесс продажи. Если кассиру приходилось бы при реализации каждого товара вручную вводить его параметры, на кассе образовывались бы огромные очереди.
Что в штрихкоде стандартизировано
Что может быть стандартизировано в самом штрихкоде? Например, номинальные размеры кода. Для EAN ширина и высота символа составляют 37,29 мм и 25,93 мм, высота штриха — 22,85 мм. Стандарт позволяет пропорционально увеличивать элементы кода до 200% или уменьшать до 80% от указанных номинальных значений.
Преимущества работы со штрихкодами
Использование системы штрихкодирования имеет ряд преимуществ для компании:
Использовать штрихкодирование для организации учета на предприятии — довольно просто. Для внедрения достаточно купить принтер этикеток с расходными материалами и сканер штрихкодов. При помощи товароучетной системы каждому изделию присваивается персональный код, он распечатывается на принтере и наносится на упаковку или поверхность объекта.
При продаже товара кассир считывает код, информация сравнивается с той, что имеется в учетной базе магазина или склада, стоимость автоматически пробивается на кассе.
Если компания занимается продажей продукции, подлежащей обязательной маркировке, порядок действий несколько сложнее. Для начала необходимо зарегистрироваться в единой системе прослеживаемости «Честный ЗНАК» при помощи электронной подписи, описать остатки товара в магазине и на складе (для розницы) и заказать на них коды Data Matrix, затем распечатать и наклеить на продукцию.
При реализации товаров кассир сканирует штрихкоды и выдает чек покупателю. Данные с онлайн-кассы автоматически поступают в «Честный ЗНАК», и коды маркировки выводятся из оборота.
Автоматизация работы со штихкодами и обязательной маркировкой с DataMobile
Чтобы работать с товарами, подлежащими обязательной маркировке, в соответствии с требованиями законодательства, необходимо грамотное программное обеспечение. DataMobile Маркировка — решение, разработанное специально для автоматизации учета товаров с кодами Data Matrix.
Софт позволяет:
Работать с ПО DataMobile Маркировка удобно благодаря быстрой интеграции с любой товароучетной системой, простой настройке галочками, понятному интерфейсу, поддержке большинства современных моделей сканеров штрихкодов и терминалов сбора данных (ТСД). Также важным преимуществом являются регулярные бесплатные обновления в соответствии с меняющимися требованиями законодательства. Чтобы выполнять операции с новыми категориями товаров, не нужно покупать или устанавливать другое ПО.
Функциональность софта можно расширять за счет перехода на старшую версию (по разнице в цене) и подключения дополнительных модулей (ЕГАИС, RFID, Конструктор).
Штрихкодирование значительно упрощает учет товаров в магазинах, на складах, производстве, в офисе. Помимо этого, оно активно используется для идентификации любых объектов и даже людей: на выставках, в кино, рекламе, в медучреждениях и не только.
Применение штрихкодов не только автоматизирует все процессы в компании, но и помогает выйти на новый уровень дохода за счет оптимизации работы и роста эффективности труда. Главное, грамотно определить цели предприятия и подобрать соответствующий вид и тип штрихкода.
Ссылки на материалы, законы, постановления, использованные в статье:
Как устроен штрихкод?
Со штрихкодами современный человек сталкивается каждый день, даже не задумываясь об этом. Когда мы покупаем в супермаркете продукты, их коды считываются именно с помощью штрихкода. Также посылки, товары на складах, и прочее и прочее. Однако, мало кто знает, как же реально это работает.
Как устроен баркод, и что закодировано на этой картинке?
Попробуем разобраться, заодно напишем декодер таких кодов.
Введение
Использование штрихкодов имеет давнюю историю. Первые попытки автоматизации начинались еще в 50х, патент на устройство считывания кодов был получен в 1952г. Инженер, занимавшийся сортировкой вагонов на железной дороге, захотел упростить процесс. Идея была очевидной — кодировать номер с помощью полос и считывать их с помощью фотоэлементов. В 1962г коды стали официально использоваться для идентификации вагонов на американской железной дороге (система KarTrak), в 1968 прожектор заменили лазерным лучом, что позволило повысить точность и уменьшить размер считывателя. В 1973г появился формат «универсального кода продукта» (Universal Product Code), и в 1974 с использованием сканера кодов был продан первый продукт (жевательная резинка Wrigley’s — это же США;) в супермаркете. В 1984 треть магазинов использовали штриходы, в России же они начали использоваться примерно с 90х годов.
Разных кодов под разные задачи сейчас используется довольно много, к примеру, последовательность «12345678» может быть представлена такими способами (и это еще не все):
Приступим к побитовому разбору. Далее, все ниженаписанное будет относиться к виду «Code-128» — просто потому, что его формат довольно простой и понятный. Желающие поэкспериментировать с другими видами, могут открыть онлайн-генератор и посмотреть самостоятельно.
На первый взгляд штрихкод кажется просто беспорядочной последовательностью линий, на самом деле, его структура четко фиксирована:
1 — Пустое место, нужное для четкого определения начала кода
2 — Стартовый символ. Для Code-128 возможны 3 варианта (называемых А, В и С): 11010000100, 11010010000 или 11010011100, им соответствуют разные кодовые таблицы (подробнее в Википедии).
3 — Собственно код, содержащий нужные нам данные
4 — Контрольная сумма
5 — Стоп символ. Для Code-128 это 1100011101011.
6(1) — Пустое место.
Теперь о том, как кодируются биты. Тут все очень просто — если взять ширину самой тонкой линии за «1», то линия двойной ширины даст код «11», тройная «111», и так далее. Пустое место будет «0» или «00» или «000» по тому же самому принципу. Желающие могут сравнить стартовый код на картинке, чтобы убедиться что правило выполняется.
Теперь можно начинать программировать.
Получаем битовую последовательность
В принципе, это самая сложная часть, и разумеется, алгоритмически ее можно реализовать по-разному. Не уверен, что приведенный ниже алгоритм оптимальный, но для учебного примера его вполне достаточно.
Для начала загрузим изображение, растянем его по ширине, возьмем из середины изображения горизонтальную линию, преобразуем ее в ч/б и загрузим в виде массива.
На штрихкоде черному соответствует «1», а в RGB наоборот, 0, так что массив нужно инвертировать. Заодно вычислим среднее значение.
Запускаем программу, чтобы убедиться, что баркод загружен корректно:
Теперь нужно определить ширину одного «бита». Для этого мы выделим начало стартовой последовательности «1101», записывая моменты перехода графика через среднюю линию.
Мы записываем только переходы через середину, так что код «1101» будет записан как «101», но нам этого достаточно чтобы узнать его ширину в пикселах.
Теперь собственно декодирование. Находим очередной переход через середину, и определяем число бит, попавших в интервал. Поскольку совпадение не абсолютное (код может быть слегка изогнут или растянут), используем округление.
Не уверен что это оптимальный вариант, возможно, есть способ лучше, желающие могут написать в комментариях.
Если все было сделано правильно, то мы получаем на выходе примерно такую последовательность:
11010010000110001010001000110100010001101110100011011101000111011011
01100110011000101000101000110001000101100011000101110110011011001111
00010101100011101011
Декодирование
Здесь никаких сложностей в принципе, нет. Символы в Code-128 кодируются 11-битным кодом, который имеет 3 разновидности (А, В и С) и может хранить либо разные кодировки символов, либо цифры от 00 до 99.
В нашем случае, начало последовательности 11010010000, что соответствует «Code B». Было жутко влом вбивать вручную все коды из Википедии, поэтому таблица была просто скопирована из браузера и ее парсинг был тоже сделан на Python (hint: на продакшене так делать не надо).
Теперь осталось самое простое. Разбиваем нашу битовую последовательность на 11-символьные блоки:
Наконец, формируем строку и выводим ее на экран:
Ответ на то, что закодировано в таблице, приводить не буду, пусть это будет домашним заданием для читателей (использование готовых программ для смартфонов будет считаться читерством:).
В коде также не реализована проверка CRC, желающие могут сделать это самостоятельно.
Разумеется, алгоритм неидеален, и был написан за полчаса. Для более профессиональных целей есть готовые библиотеки, например pyzbar. Код с использованием такой библиотеки займет всего 4 строчки:
(предварительно нужно установить библиотеку, введя команду «pip install pyzbar»)
Дополнение: о подсчете CRC написал в комментариях пользователь vinograd19:
Интересна история контрольной цифры. Она возникла эволюционно.
Контрольная цифра нужна для того, чтобы избежать неправильного декодирования. Если штрихкод был 1234, а его распознали как 7234, то нужна валидация, которая предупредит замену 1 на 7. Валидация может быть неточная, чтобы хотя бы в 90% невалидные номера определялись заранее.
1-й подход: Давайте просто возьмем сумму. Чтобы в остатке от деления на 10 был 0. Ну то есть первые 12 символов несут информационную нагрузку, а последняя цифры подбирается так, чтобы сумма цифр делилась на 10. Декодируем последовательность, если сумма не делится на десять — значит декодировали с багом и нужно сделать это еще раз. Например, код 1234 — валидный. 1+2+3+4 = 10. Код 1216 — тоже валидный, а вот 1218 — нет.
Это позволяет избежать проблем с автоматикой. Однако в момент создания штрихкодов был фоллбек в виде набивания номер на клавишах. И там есть плохой кейс: если поменять порядок следования двух цифр, то контрольная сумма не меняется, и это плохо. То есть если штрихкод 1234 был вбит как 2134, контрольная сумма сойдется, а вот номер мы вбили неправильный. Оказывается, неправильный порядок цифр — это распространенный кейс, если стучать по клавишам быстро.
2-й подход. Хорошо, давайте сумму сделаем чуть сложнее. Чтобы цифры на четных местах учитывались дважды. Тогда при изменении порядка, сумма точно не сойдется к нужной. Например код 2364 валидный (2 + 3+3 + 6 + 4+4 = 20), а код 3264 — невалидный (3+ 2+2 + 6 + 4+4 = 19). Но тут оказался еще один плохой пример вбития. Некоторые клавиатуры такие, что десять цифр располагаются в два ряда. первый ряд 12345 и под ним второй второй ряд 67890. Если вместо клавишы «1» нажать правее клавишу «2», то контрольная сумма предупредит неправильный ввод. А вот если вместо клавишу «1» нажать ниже клавишу «6» — то может не предупредить. Ведь 6=1+5, и в случае когда эта цифра стоит на четном месте при вычислении контрольной суммы, мы имеем 2*6 = 2*1 + 2*5. То есть контрольная сумму увеличилась ровно на 10, поэтому ее последняя цифра не изменилась. Например контрольные суммы кодв 2134 и 2634 одинаковые. Та же ошибка будет, если мы вместо 2 нажмем 7, вместо 3 нажмем 8 и тд.
3-й подход. Ок, давайте что ли возьмем опять сумму, только цифры, стоящие на четных местах будем учитывать… трижды. То есть код 1234565 — валидный, потому как 1 + 2*3 + 3 + 4*3 + 5 + 6*3 +5 = 50.
Описанный способ стал стандартом вычисления контрольной суммы EAN13 за небольшими правками: число цифр стало фиксированным и равно 13, где 13-ая — это та самая контрольная цифра. Цифры на нечетных местах считаются трижды, на четных — один раз.
Заключение
Как можно видеть, даже такая простая вещь как штрихкод, имеет в себе немало интересного. Кстати, еще один лайфхак для тех, кто дочитал до сюда — текст под штрихкодом (если он есть) полностью дублирует его содержание. Это сделано для того, чтобы в случае нечитабельности кода, оператор мог ввести его вручную. Так что узнать содержимое штрихкода обычно просто — достаточно посмотреть на текст под ним.
Как подсказали в комментариях, наиболее популярным в торговле является код EAN-13, битовое кодирование там такое же, а структуру символов желающие могут посмотреть самостоятельно.
Если у читателей не пропал интерес, отдельно можно рассмотреть QR-коды.