Штрих код производителя — это последовательность линий и пробелов, в которых закодированы цифры, идентифицирующие изделие. Цифры могут быть напечатаны и под штрих кодом, позволяя расшифровать его человеку. Штрихкод считывается или сканируется электронным устройством, что облегчает отслеживание перемещения, складирования и учета товара.
Штрихкоды значительно увеличивают надежность, скорость, безопасность и эффективность передвижения товара от производителя к покупателю в торговле. Широко применяется штрихкодирование в производственных процессах, на транспорте, в библиотечном деле, на почте. Наносится изображение штрих кода производителем на упаковке или на этикетке.
Сегодня существуют разные типы штриховых кодов, называемые символиками, в том числе линейные и двухмерные.
Наиболее часто используются линейные цифровые коды EAN, UPC — для потребительских товаров, двухмерная символика Data Matrix для лекарств, Databar, QR код — в разных областях.
Нас интересует символика EAN-13, выдаваемая Европейской Ассоциацией по маркировке товаров (с 2004 года GS1) и объединяющей более 93 стран и более 1.5 миллионов производителей со всего мира.
Алгоритм проверки штрих-кода EAN-13
Например, проверим штрих-код 4640017590383
- Складываем все четные цифры: 6+0+1+5+0+8=20
- Полученную сумму умножаем на 3: 20*3=60
- Складываем нечетные цифры, кроме последней, контрольной (3): 4+4+0+7+9+3=27
- Складываем результаты п.2 и п.3: 60+27=87
- От полученного в п.4 числа отбрасываем десятки. Получаем результат 7
- Вычитаем из 10 полученное в п.5 число: 10-7=3
- Сравниваем последнюю (контрольную) цифру (3) и число, полученное в п.6.: 3=3 — код верный
Ещё один пример штрих-кода: 4640017590710
- Складываем все четные цифры: 6+0+1+5+0+1=13
- Полученную сумму умножаем на 3: 13*3=39
- Складываем нечетные цифры, кроме последней (0): 4+4+0+7+9+7=31
- Складываем результаты п.2 и п.3: 39+31=70
- От полученного в п.4 числа отбрасываем десятки. Получаем результат 0
- Вычитаем из 10 полученное в п.5 число: 10-0=10
- Если полученный в п.6. результат равен 10, то приравниваем его к 0
- Сравниваем последнюю цифру (0) и число, полученное в п.7.: 0=0 — код верный
Что «шифруется» в двумерных кодах
Двумерный штрих-код — действительно более технологически продвинутый в сравнении с линейным. В нем присутствуют не полоски и пробелы (не только они), а иные, более сложные по формам элементы — квадраты, точки, линии и иные. Вариантов их взаимного расположения — несопоставимо больше в сравнении с вариантами взаимного расположения «пробелов и полосок», и потому в один двумерный штрих-код можно зашифровать намного больший объем данных в сравнении с одномерным кодом.
Как и в случае с традиционными кодами, порядок взаимного расположения «квадратов, точек и линий» — и порядок установления соответствия им (их сочетаниям) «понятных для человека» данных (как и «реально понятных данных») определяется по конкретному стандарту штрихового кодирования.
Отличительная особенность двумерных штрих-кодов в том, что в них изначально зашифрованы преимущественно «реально полезные данные» — то есть, готовая к восприятию информация. Во многих случаях нет промежуточной стадии, при которых «полезные данные» — полученные сразу из кода, сопоставляются с информацией по базе, что предусмотрена стандартом. Но поиск такого соответствия, безусловно, может производиться на регулярной основе.
«Одноступенчатая» расшифровка двумерного штрих-кода возможна как раз благодаря его большой емкости: нет необходимости, в отличие от линейного кода, размещать часть данных на стороннем источнике. При этом, для соответствующей расшифровки, как правило, требуется значительная вычислительная мощность. Раньше она обеспечивалась встраиванием в сканеры штрих-кодов дорогостоящих высокопроизводительных микросхем. Сейчас — аналогичную производительность показывают даже самые дешевые мобильные гаджеты. Также подешевели и сами сканеры — оснащенные необходимыми аппаратными компонентами. Собственно, этим и обусловлен тот факт, что двумерные штрих-коды — относительно новое явление для массового рынка.
Можно выделить следующие популярные стандарты двумерного штрих-кодирования:
- QR-код.
Легко узнается по наличию 3-х квадратов, расположенных на правом верхнем, правом и левом нижних углах. Изначально был создан для автомобильных производителей из Японии. Но впоследствии стал применяться повсеместно — в том числе и в розничной торговле. Может шифровать практически любые данные — текстовые, числовые. Теоретически — даже простейшие исполняемые команды и графические изображения небольшого объема.
На практике код применяется в целях отслеживания движения товаров, идентификации отдельных объектов, времени их обработки, обеспечения коммуникации между поставщиком и потребителем. Популярно использование QR-кода в качестве визитной карточки в бизнесе.
QR-код вмещает данные объемом до нескольких килобайт. Оптимально размещение 2-3 КБ — так, чтобы функционировали алгоритмы защиты информации от ошибок прочтения, которые предусмотрены стандартом (при их использовании можно обеспечить прочтение кода, если на нем повреждено до 30% информации). Благодаря данной опции QR-коды можно различным образом модифицировать — например, добавляя на некоторые его участки рисунки (как вариант, фирменные логотипы). Это позволит выделить код среди остальных, и при этом сохранить возможность считывания информации с него (разумеется, если остальные участки вне рисунка не будут повреждены).
При необходимости можно использовать особую разновидность идентификатора — Micro QR. Он позволяет зашифровать до 35 цифр и до 21 буквы на участке минимальной площади. Во многих случаях — существенно меньшей в сравнении с той, что занимал бы одномерный штрих-код, в котором зашифрованы аналогичные данные.
- DataMatrix.
Этот код примечателен тем, что именно его российский законодатель выбрал в качестве идентификатора для системы маркировки (к 2024 году, как ожидается, в рамках нее будут маркироваться большинство современных потребительских товаров).
По основным характеристикам стандарт очень схож с QR, и по внешнему виду коды похожи. Код DataMatrix имеет почти тот же уровень защищенности — когда данные считываются при повреждении до 30% поверхности кода.
DataMatrix узнаваем по двум перпендикулярным линиям по правому и нижнему краям. Одно из преимуществ кода — в возможности формировать его не только в квадратном, но и в прямоугольном виде.
- Aztec.
Данный двумерный код узнаваем по «глазу» в самом центре — в виде нескольких заключенных друг в друга квадратов. По своему назначению и характеристикам также очень схож с QR и DataMatrix, но имеет уникальное преимущество — в виде приспособленности к считыванию при повреждении в некоторых случаях до 90% поверхности. Правда, на этот показатель следует ориентироваться, только если объем записываемых данных не слишком большой. Если он составляет те же 2-3 КБ, то исправление ошибок, как правило, возможно, если код поврежден не более, чем на те же 30%.
Код отлично приспособлен к считыванию под большим углом: сканер ориентируется на «глаз» и на другие корректирующие элементы.
Еще одна особенность кода — в возможности размещать его на объекте, не обеспечивая пустого пространства между краями кода и другими графическими объектами. Условно говоря, код можно разместить на самом краю идентифицируемого объекта.
Теперь — ознакомимся с практическим инструментарием для расшифровки (и «шифровки») одномерных и двумерных штрих-кодов.
Таблица штрих-кодов стран
Страна, в которой произведен товар, определяется по трем первым цифрам штрих-кода (EAN-13). В нижеприведенной таблице отображено это соответствие
Три первые цифры кода | Страна |
000-139 | США |
200-299 | Внутренняя нумерация (для свободного использования внутри предприятий) |
300-379 | Франция |
380 | Болгария |
383 | Словения |
385 | Хорватия |
387 | Босния-Герцеговина |
400-440 | Германия |
450-459 | Япония |
490-499 | Япония |
460-469 | Россия |
470 | Кыргызстан |
471 | Тайвань |
474 | Эстония |
475 | Латвия |
476 | Азербайджан |
477 | Литва |
478 | Узбекистан |
479 | Шри-Ланка |
480 | Филиппины |
481 | Беларусь |
482 | Украина |
484 | Молдова |
485 | Армения |
486 | Грузия |
487 | Казахстан |
489 | Гонконг |
500-509 | Великобритания |
520 | Греция |
528 | Ливан |
529 | Кипр |
530 | Албания |
531 | Северная Македония |
535 | Мальта |
539 | Ирландия |
540-549 | Бельгия, Люксембург |
560 | Португалия |
569 | Исландия |
570-579 | Дания |
590 | Польша |
594 | Румыния |
599 | Венгрия |
600-601 | Южная Африка |
603 | Гана |
608 | Бахрейн |
609 | Маврикий |
611 | Марокко |
613 | Алжир |
616 | Кения |
618 | Кот д Ивуар |
619 | Тунис |
621 | Сирия |
622 | Египет |
624 | Ливия |
625 | Иордания |
626 | Иран |
627 | Кувейт |
628 | Саудовская Аравия |
629 | ОАЭ |
640-649 | Финляндия |
690-699 | Китай |
700-709 | Норвегия |
729 | Израиль |
730-739 | Швеция |
740 | Гватемала |
741 | Сальвадор |
742 | Гондурас |
743 | Никарагуа |
744 | Коста-Рика |
745 | Панама |
746 | Доминиканская республика |
750 | Мексика |
754-755 | Канада |
759 | Венесуэла |
760-769 | Швейцария |
770 | Колумбия |
773 | Уругвай |
775 | Перу |
777 | Боливия |
779 | Аргентина |
780 | Чили |
784 | Парагвай |
786 | Эквадор |
789-790 | Бразилия |
800-839 | Италия |
840-849 | Испания |
850 | Куба |
858 | Словакия |
859 | Чехия |
860 | Сербия и Черногория |
865 | Монголия |
867 | Северная Корея |
869 | Турция |
870-879 | Нидерланды |
880 | Южная Корея |
884 | Камбоджа |
885 | Таиланд |
888 | Сингапур |
890 | Индия |
893 | Вьетнам |
899 | Индонезия |
900-919 | Австрия |
930-939 | Австралия |
940-949 | Новая Зеландия |
950 | Главный офис |
955 | Малайзия |
958 | Макао |
История изобретения
Еще в 1948 году многие производства столкнулись с серьезной проблемой необходимости считывания для оптимизации складов и ускорения обработки заказов. Бернард Сильвер, аспирант университета, занялся вопросом маркировки вместе с друзьями. Начало экспериментов было не самым удачным – использовались ультрафиолетовые чернила, которые быстро теряли цвет и стоили дорого.
Правильное решение пришло внезапно – на пляже. Первый нужный код выглядел, как удлиненная азбука Морзе – это были широкие и узкие полоски. Чтобы считывать их, настроили технологию, которую обычно применяли для записи звука к фильмам.
В 1949 году изобретение отправили на получение патента. А в 1951 его отвергли, так как посчитали слишком дорогими воплощение и применение. В 1952 году документально подтвердили уникальность созданной системы, но из-за недостатка финансов и отсутствия спонсоров идею продали компании RCA.
В 1974 году появился первый супермаркет, в котором реализовывалась продукция через считывание. Сейчас чек от этой покупки хранится в музее «Американской истории» как символ начала новой эпохи.
Технические требования к нанесению символов
Чтобы верно распознать устройством кодировку, нужно соблюдать все рекомендуемые размеры и цвета.
Среди важных параметров:
- ширина изображения – 37,29 мм;
- его высота – 25,93 мм;
- максимально высокий штрих – 22,85 мм;
- свободная часть с левой стороны – 3,63 мм, с правой – 2,31 мм;
- штриховые ограничители должны быть длиннее на 1,65 мм;
- цифры, не превышающие 2,72 мм.
Уменьшить его можно не больше, чем на 20%, увеличить – максимум на 200%.
Функционал
Штрих-код имеет больше полезных функций, чем многие другие знаки, несущие информацию. Он пригодится на любом предприятии, в магазине, на складе.
Дополнительные возможности:
- Автоматизированное определение разновидностей при помощи считывающих устройств.
- Автоматизация учета продукции на складских помещениях.
- Контроль перемещений, местонахождения любого элемента партии, их количества.
- Легкость управления погрузки, транспортировки, отгрузки, локализации в помещении.
- Скорость загрузки и сбора заказа значительно вырастает, минимизируется риск ошибок.
- Формирование улучшенной культуры обслуживания клиентов.
- Маркетинговые исследования можно проводить быстрее, их результаты будут более достоверными и точными.
Наиболее часто встречаемые штрихкоды
Импортные товары на украинский рынок поступают со штрихкодами, по которым без особенных трудностей можно определить страну производителя. Для получения точной информации можно воспользоваться таблицей штрих кодов стран из этой статьи для проверки штрихкодов.
Наиболее распространенные в Украине товары имеют коды с номерами 871 (Нидерланды), 859 (Чехия), 869 (Турция), 590 (Польша), 690 (Китай) и ряд других.
Знание этих основных номеров позволит убедиться в подлинности товара, если речь идет о брендовой продукции известных мировых производителей.
Штрих код 871 — Нидерланды
Штрих код из Нидерландов 87 (871) известен, прежде всего, маркировкой на оптовых упаковках цветов, которые в большом количестве поставляются на украинский рынок. Некоторые группы продуктов питания (кондитерские изделия, кофе, шоколад, растительное масло), бытовая химия, одежда и косметическая продукция из Нидерландов имеют штрих код, начинающийся цифрами 87.
Штрих код 859 — Чехия
Сочетание цифр 859 на штрих коде свидетельствует о том, что товар произведен в Чехии. Наверное, такая информация будет полезной потребителям автомобильных комплектующих, кондитерской продукции, текстильной и бытовой техники, а также любителям чешского пива, произведенного на пивоваренных заводах Чешской Республики.
Штрих код 869 — Турция
Турецкие товары имеют штрих код, начинающийся цифрами 869. В настоящее время рост импорта из Турции все больше приобретает упорядоченные формы, а значит, поступающий на внутренний рынок товар сопровождается соответствующей маркировкой. Наиболее востребованы в Украине турецкие кофе, сладости, бобовые, при этом лидерство, по-прежнему, занимает трикотаж и верхняя одежда. Если они произведены промышленным способом и имеют соответствующую сертификацию, на упаковках ищите цифровой штрихкод 869.
Штрих код 762 — Швейцария
Товары с кодом 76 (762, 7622) произведены в Швейцарии. На внутренний украинский рынок из Швейцарии поступает знаменитый шоколад, конфеты, кондитерские изделия, кофе, косметика, товары для дома, посуда, белье и текстиль. Присутствие штрихкода с цифрами 76 дают гарантию потребителю, что приобретенный товар высокого «швейцарского» качества.
Ручной метод
Проверяемый код состоит из 13 цифр, разбиваем цифры по алгоритму четного и нечетного нахождения в составе кода.
Приступаем к расчету:
- Складываем цифры из четных мест: 9 + 5 + 2 + 2 + 5 + 4 = 27.
- Результат из 1-го пункта умножаем на 3: 27 х 3 = 81.
- Складываем цифры из нечетных мест (последняя цифра не участвует в расчете): 5 + 9 + 3 + 7 + 7 + 7 + 1 = 32.
- Складываем результат пункта 2 и пункта 3: 81 + 32 = 113.
- Оставляем последнюю цифру из результата пункта 4 и вычитаем это число из 10: 10 — 3 = 7.
- Итог вычислений — цифра 7, которая схожа с контрольной цифрой (последняя цифра) в штрих-коде. Это означает, что код подлинный.
Кто и когда впервые предложил создать кодировку
Предпосылки появились в далеком 1932 г. в Америке. Для оптимизации коммерции студент Высшей Школы Экономики Уоллис Флинт разработал специальные перфокарты для каждой единицы товара.
В конце сороковых годов прошлого столетия все чаще были слышны жалобы директоров супермаркетов о большом количестве контрафакта, о несоответствии качества продукции с заявленным, о путанице и расхождениях в балансовой отчетности. Поэтому ученые придумали маркировку путем нанесения на упаковку чернил и фломастера, а затем и изобрели линейный штриховой код. Они взяли за основу азбуку Морзе, где зашифровка информации происходила в тире и точках. Так создавались знаменитые черные и белые полосы. А читали кодировку при помощи специального устройства, применяемого для озвучки кинофильмов. Метод использовали аж до 3 апреля 1973 года. Эта дата является днем рождения первой системы кодирования (UPC), используемой в Америке по сей день. А в Западной и Восточной Европе придумали аналогичную идентификацию под названием «Европейский артикул» (EAN). Обе структуры абсолютно совокупны, реальное несоответствие между ними – в американском кодировании присутствуют 12 цифр, а в европейском –13.
Кроме того, вы должны знать, что существуют знаки:
- международные. Они используются одновременно на товарах для внутреннего потребления, так и на изделиях, предназначенных на экспорт. И там, и там номера понятны и расшифровываются;
- национальные, как правило, применяются для развесной продукции внутри своего государства;
- локальные – для управления в одном взятом предприятии.
Штрихкоды: как и где получить?
В Украине действует Ассоциация товарной нумерации ДжиЭс1 Украина которая представляет интересы украинских производителей в GS1. Кроме этого, в функции Ассоциации входит внедрение и разработка стандартов и штрихового кодирования. Юридические лица и частные предприниматели могут получить членство Ассоциации, чтобы формировать собственные штрихкоды.
Заявку на членство в ДжиЭс1 можно подать в режиме онлайн на сайте online.gs1ua.org.
Чтобы получить штрихкод, следует:
- Подать заявку;
- Предоставить выписку о государственной регистрации предприятия (копию);
- Сообщить данные о заявителе (адрес, вид деятельности и т.п.).
Став членом Ассоциации, юридическое лицо или частный предприниматель получает возможность идентификации и штрихового кодирования, имеет допуск к обмену цифровой информацией, а также может получить расширительные обозначения. Префиксы GS1 применяются для кодирования продукции, выпущенной компанией на территории зарубежных филиалов. Например, штаб-квартира компании находится в США, а филиал (структурное подразделение) – в Китае. Префикс GS1 будет содержать такую расширенную информацию.
Услуги Ассоциации товарной нумерации все более востребованы, поскольку того требует развитие технического и технологического сопровождения производственного процесса на всех этапах, — от сборки, до поставки конечной продукции на потребительские рынки во всем мире.
Украинские предприятия понимают важность подобных процессов, потому все больше продукции в Украине проходит процедуру штрихового кодирования.
Получаем битовую последовательность
В принципе, это самая сложная часть, и разумеется, алгоритмически ее можно реализовать по-разному. Не уверен, что приведенный ниже алгоритм оптимальный, но для учебного примера его вполне достаточно.
Для начала загрузим изображение, растянем его по ширине, возьмем из середины изображения горизонтальную линию, преобразуем ее в ч/б и загрузим в виде массива.
from PIL import Image import numpy as np import matplotlib.pyplot as plt image_path = «barcode.jpg» img = Image.open(image_path) width, height = img.size basewidth = 4*width img = img.resize((basewidth, height), Image.ANTIALIAS) hor_line_bw = img.crop((0, int(height/2), basewidth, int(height/2) + 1)).convert(‘L’) hor_data = np.asarray(hor_line_bw, dtype=»int32″)[0] На штрихкоде черному соответствует «1», а в RGB наоборот, 0, так что массив нужно инвертировать. Заодно вычислим среднее значение. hor_data = 255 — hor_data avg = np.average(hor_data) plt.plot(hor_data) plt.show() Запускаем программу, чтобы убедиться, что баркод загружен корректно:
Теперь нужно определить ширину одного «бита». Для этого мы выделим начало стартовой последовательности «1101», записывая моменты перехода графика через среднюю линию.
pos1, pos2 = -1, -1 bits = «» for p in range(basewidth — 2): if hor_data
< avg and hor_data > avg: bits += «1» if pos1 == -1: pos1 = p if bits == «101»: pos2 = p break if hor_data
> avg and hor_data < avg: bits += «0» bit_width = int((pos2 — pos1)/3) Мы записываем только переходы через середину, так что код «1101» будет записан как «101», но нам этого достаточно чтобы узнать его ширину в пикселах.
Теперь собственно декодирование. Находим очередной переход через середину, и определяем число бит, попавших в интервал. Поскольку совпадение не абсолютное (код может быть слегка изогнут или растянут), используем округление.
bits = «» for p in range(basewidth — 2): if hor_data
> avg and hor_data < avg: interval = p — pos1 cnt = interval/bit_width bits += «1»*int(round(cnt)) pos1 = p if hor_data
< avg and hor_data > avg: interval = p — pos1 cnt = interval/bit_width bits += «0»*int(round(cnt)) pos1 = p Не уверен что это оптимальный вариант, возможно, есть способ лучше, желающие могут написать в комментариях.
Если все было сделано правильно, то мы получаем на выходе примерно такую последовательность:
11010010000110001010001000110100010001101110100011011101000111011011 01100110011000101000101000110001000101100011000101110110011011001111 00010101100011101011
Код предприятия
Правительство любой страны обязывает организацию зарегистрироваться и получить индивидуальный код. Это необходимо для отслеживания трудовой деятельности, для легализации компании, и чтобы узнать, какое она направление избрала. Также он позволяет автоматизировать обработку данных и обмениваться сведениями.
Непосредственный код шифруется в зависимости от страны 4 — 6 цифрами. И количество нумерации определяет Национальная организация. Такой разброс чисел позволяет зарегистрировать огромное количество предприятий в конкретном регионе от 10 000 до миллиона. Присвоенный адрес вносится сразу в международную базу данных, где каждый потребитель вправе узнать интересующие сведения про компанию.
Нормативной базы на сегодняшний момент не существует и это дает возможность организациям получать хоть три номера, соответственно, в разных государствах. Можно не уделять внимания этому вопросу, однако, в противном случае не получится выйти со своим товаром на международный уровень. Кроме того, отечественные торговые организации контактируют только с предприятиями, которые наносят на продукцию идентификацию. Если вы надумали серьезно заниматься бизнесом, то лучше все-таки обозначить себя в международной базе данных.
Онлайн сервис
Для примера и сравнения результат автоматической и ручной проверки возьмем штрих-код с упаковки лекарственного препарата:
Вначале воспользуемся онлайн проверкой с нашего сайта:
- Вводим номер 5995327275147;
- Нажимаем проверить.
После мгновенной проверки, выводится результат:
Вывод из произведенной проверки — штрих-код не поддельный, страна изготовитель лекарства Венгрия. Быстро и легко, главное не ошибиться в воде цифр.
Определение подлинности товара по контрольной цифре
Чтобы сделать расшифровку штрих кода товара и убедиться в том, что он произведен законно, нужно воспользоваться следующим алгоритмом:
- произвести сложение четных цифр. Их сумма в нашем случае составит 18 (смотри изображение линейной кодировки);
- полученную сумму увеличить втрое (54);
- произвести сложение нечетных цифр, оставив без внимания контрольную (10);
- произвести сложение двух предыдущих результатов (54+10);
- отбросить в результате предыдущего сложения (64) десятки (4);
- из результата суммы нечетных цифр минусовать 4 (6).
Контрольная цифра (в данном случае 6) и результат произведенных действий совпадают. Значит, продукция выпускается законно.
Распространенные виды кодировок
К числу распространенных кодировок можно отнести EAN (Европейская система кодирования) и UPC (американский Универсальный товарный код).
Так выглядит стандарт кодов EAN, который в основном используют для маркировки мировых товаров. Их присвоением занимается организация EAN International, чтобы исключить выход на рынок нескольких продуктов с одинаковыми маркировками.
Информация, зашифрованная в штрих-коде