как генерируется штрих код
Бесплатно Создать Штрихкоды Онлайн
Линейные Штрихкоды, 2D Коды, GS1 DataBar, Почтовые Штрихкоды и многие другие!
Этот веб-сервис не хранит данные пользователя. Данные входа обрабатываются только провайдером входа. Пожалуйста, ознакомьтесь с нашими условиями использования и политикой конфиденциальности.
Ваши преимущества
Для зарегистрированных пользователей в ближайшее время будут добавлены новые расширенные функции.
Спасибо за Ваш интерес! Для получения дополнительной информации, пожалуйста, свяжитесь с нами!
Scan-IT to Office
Приложение Scan-IT to Office (для Android, iOS) отправляет удаленно собранные данные и штрихкоды в реальном времени в Excel, Word, Google Таблицы, базы данных или любые другие приложения для ПК или Mac.
Онлайн генератор этикеток
Создавайте этикетки со штрих-кодом и отраслевые этикетки и формы этикетки VDA 4902, AIAG, MAT и т.д. Попробуйте бесплатную демо-версию Онлайн-генератора этикеток со штрихкодом для моментальной печати нужных Вам этикеток.
Онлайн-генератор QR-кодов
Используйте созданные QR-коды для перехода на веб-страницы, ввода телефонных номеров, сообщений, отправки твитов, передачи контактных данных, подключения к Wi-Fi сетям и т.д. Просто попробуйте!
Данный генератор штрихкодов является бесплатным
Вы можете использовать данный генератор штрих-кодов как часть Вашего некоммерческого веб-приложения или веб-сайта для создания динамических штрих-кодов с Вашими собственными данными. В ответ мы просим Вас разместить на Вашем сайте обратную ссылку с текстом «Генератор штрихкодов от TEC-IT». Использование логотипов TEC-IT опционально. Пожалуйста, свяжитесь с нами, если Вы хотите использовать данный сервис в коммерческих целях.
Для размещения обратной ссылки используйте подготовленный HTML-код.
Бесплатно Создать Штрихкоды Онлайн
Линейные Штрихкоды, 2D Коды, GS1 DataBar, Почтовые Штрихкоды и многие другие!
Этот веб-сервис не хранит данные пользователя. Данные входа обрабатываются только провайдером входа. Пожалуйста, ознакомьтесь с нашими условиями использования и политикой конфиденциальности.
Ваши преимущества
Для зарегистрированных пользователей в ближайшее время будут добавлены новые расширенные функции.
Спасибо за Ваш интерес! Для получения дополнительной информации, пожалуйста, свяжитесь с нами!
Scan-IT to Office
Приложение Scan-IT to Office (для Android, iOS) отправляет удаленно собранные данные и штрихкоды в реальном времени в Excel, Word, Google Таблицы, базы данных или любые другие приложения для ПК или Mac.
Онлайн генератор этикеток
Создавайте этикетки со штрих-кодом и отраслевые этикетки и формы этикетки VDA 4902, AIAG, MAT и т.д. Попробуйте бесплатную демо-версию Онлайн-генератора этикеток со штрихкодом для моментальной печати нужных Вам этикеток.
Онлайн-генератор QR-кодов
Используйте созданные QR-коды для перехода на веб-страницы, ввода телефонных номеров, сообщений, отправки твитов, передачи контактных данных, подключения к Wi-Fi сетям и т.д. Просто попробуйте!
Данный генератор штрихкодов является бесплатным
Вы можете использовать данный генератор штрих-кодов как часть Вашего некоммерческого веб-приложения или веб-сайта для создания динамических штрих-кодов с Вашими собственными данными. В ответ мы просим Вас разместить на Вашем сайте обратную ссылку с текстом «Генератор штрихкодов от TEC-IT». Использование логотипов TEC-IT опционально. Пожалуйста, свяжитесь с нами, если Вы хотите использовать данный сервис в коммерческих целях.
Для размещения обратной ссылки используйте подготовленный HTML-код.
Бесплатно Создать Штрихкоды Онлайн
Линейные Штрихкоды, 2D Коды, GS1 DataBar, Почтовые Штрихкоды и многие другие!
Этот веб-сервис не хранит данные пользователя. Данные входа обрабатываются только провайдером входа. Пожалуйста, ознакомьтесь с нашими условиями использования и политикой конфиденциальности.
Ваши преимущества
Для зарегистрированных пользователей в ближайшее время будут добавлены новые расширенные функции.
Спасибо за Ваш интерес! Для получения дополнительной информации, пожалуйста, свяжитесь с нами!
Scan-IT to Office
Приложение Scan-IT to Office (для Android, iOS) отправляет удаленно собранные данные и штрихкоды в реальном времени в Excel, Word, Google Таблицы, базы данных или любые другие приложения для ПК или Mac.
Онлайн генератор этикеток
Создавайте этикетки со штрих-кодом и отраслевые этикетки и формы этикетки VDA 4902, AIAG, MAT и т.д. Попробуйте бесплатную демо-версию Онлайн-генератора этикеток со штрихкодом для моментальной печати нужных Вам этикеток.
Онлайн-генератор QR-кодов
Используйте созданные QR-коды для перехода на веб-страницы, ввода телефонных номеров, сообщений, отправки твитов, передачи контактных данных, подключения к Wi-Fi сетям и т.д. Просто попробуйте!
Данный генератор штрихкодов является бесплатным
Вы можете использовать данный генератор штрих-кодов как часть Вашего некоммерческого веб-приложения или веб-сайта для создания динамических штрих-кодов с Вашими собственными данными. В ответ мы просим Вас разместить на Вашем сайте обратную ссылку с текстом «Генератор штрихкодов от TEC-IT». Использование логотипов TEC-IT опционально. Пожалуйста, свяжитесь с нами, если Вы хотите использовать данный сервис в коммерческих целях.
Для размещения обратной ссылки используйте подготовленный HTML-код.
Как устроен штрихкод?
Со штрихкодами современный человек сталкивается каждый день, даже не задумываясь об этом. Когда мы покупаем в супермаркете продукты, их коды считываются именно с помощью штрихкода. Также посылки, товары на складах, и прочее и прочее. Однако, мало кто знает, как же реально это работает.
Как устроен баркод, и что закодировано на этой картинке?
Попробуем разобраться, заодно напишем декодер таких кодов.
Введение
Использование штрихкодов имеет давнюю историю. Первые попытки автоматизации начинались еще в 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-коды.
Генератор штрих кодов
В этой статье рассказывается, как сгенерировать штрих коды для товаров вашего магазина. Здесь же вы сможете скачать бесплатный файл Excel, при помощи которого вы сможете сгенерировать нужное количество штрихкодов и распечатать их на обычном принтере либо на принтере этикеток.
Маленькое научное отступление
В мире существует несколько (до десятка или чуть больше) различных систем штрих кодирования товара. Среди этих систем нас с вами в первую очередь интересует система EAN13 (аббревиатура EAN расшифровывается как European Article Number, т.е. Европейский Код Товара. Несмотря на название, этот код используется по всему миру, включая Америку, Китай, Японию и все остальные страны мира:), так как именно этой системой кодируются 99.9% товаров во всем мире.
код EAN13
Код EAN13 состоит из тринадцати цифр, разные места этой 13-символьной последовательности имеют различный смысл. В рамках этой статьи нам интересно только, что:
Из вышесказанного следует, что если магазину необходимо присвоить штрихкоды продаваемым товарам, эти штрихкоды ни в коем случае нельзя придумывать из головы: придуманные цифры скорее всего не попадут в формат EAN13 и сканер штрих кодов просто не прочитает такой штрихкод. Для того, чтобы решить эту проблему, институт EAN (разработчик стандарта EAN13) предусмотрел специальный диапазон штрихкодов (любые штрих коды, начинающиеся с цифр 200, 201, 202 и так далее вплоть до 299 и заканчивающиеся правильно расчитанной контрольной цифрой) для использвания внутри магазинов, а мы подготовили специальный файл Excel, который генерирует штрихкоды в этом диапазоне и предлагает вам их распечатать на принтере.
Скачивание генератора штрих кодов
Для того, чтобы генерировать штрихкоды на своем компьютере, вам необходимо скачать бесплатную рабочую книгу Excel для генерации штрихкодов и сохранить ее на жестком диске вашего компьютера. Собственно, скачаете вы не просто файл Excel, а архив, содержащий три файла:
Скачайте и разархивируйте этот файл на жесткий диск вашего компьютера, после чего приступайте к установке штрихкодового шрифта ean13.ttf в Windows.
Установка штрифта для печати штрих кодов
Сейчас вам нужно установить в Windows штрифт EAN13.TTF, без которого вы не сможете печатать штрихкоды. Пожалуйста:
В Windows XP и более ранних версиях этой операционной системы:
Выберите кнопку Пуск, далее Панель Управления, в ней запустите иконку Шрифты
В результате запуска у вас на экране появится окно со списком установленных штрифтов. Щелкните мышкой пункт меню «Добавить новый шрифт» и в появившемся окне выберите файл штрифта EAN13.TTF, сохраненный на жестком диске (см. предыдущую главу).
В Windows 7 и Windows Vista:
В Windows 7 кнопка «добавить шрифт» исчезла из окна Шрифты. Найдите в проводнике файл шрифта EAN13.TTF, «скопируйте» его при помощи правой кнопки мыши и затем «вставьте» его в список шрифтов Windows..
Запуск генератора штрих кодов
Теперь штрих кодовый шрифт проинсталлирован в Windows. В той папке, куда вы разархивировали скачаные файлы, запустите двойным щелчком мыши файл Генератор штрих кодов.xls. Возможно, при запуске вы увидите такую картину:
Это значит, что в вашем Office для безопасности компьютера выключены макросы, и вам необходимо их включить.
Однако этим пользуюся не только программисты. Популярность Microsoft Office и мощь встроенного в него языка программирования привлекли к себе внимание хакеров и вирусописателей со всего мира, начиняющих хакерскими подпрограммами электронные таблицы и документы Office и выкладывающих их в Интернет. Единственной мерой, который смог придумать Майкрософт для безопасности пользователей было отключение запуска макросов по умолчанию.
Если вы решили нам доверять, включите макросы в Excel и «запустите» скачанный файл Генератор штрих кодов.xls. Когда рабочая книга Excel для печати ценников откроется, вы сразу же сможете сгенерировать штрихкоды после указания несложных настрок генератора:
В этом окне вам необходимо указать:
После того, как настройки генератора штрихкодов будет выполнены, вы можете нажать кнопку Создать штрихкоды. В ответ на это генератор штрих кодов создаст для вас новый лист Excel и заполнит его сгенерированными штрихкодами (колонка А). Дополнительно эта программа заполнит колонку B «картинками» штрихкодов, «нарисованных» при помощи того самого шрифта EAN13, который вы скачали вместе с генератором штрихкодов:
Вы можете распечатать эту страницу на принтере и потом удалить ее из рабочей книги, а можете удалить даже не печатая: вы всегда можете сгенерировать эти штрих коды заново и вам т.о. просто незачем сохранять их на жесткий диск.