Наверх

Штрих-коды. Как их правильно готовить и с чем есть

Архив
Время чтения: 10 минут
0
Штрих-коды. Как их правильно готовить и с чем есть

Немного о частых и неочевидных задачах использования штрих-кодов в документообороте

Михаил Романов, ИТ-аналитик компании DIRECTUM

Эксклюзивно для DIRECTUM-Journal

Штрих-кодами ныне никого не удивишь. Они успешно используются для маркировки готовой продукции, для кодирования информации о весе/цене товара, для организации техпроцессов выпуска продукции (прохождении продукции по стадиям, расход деталей и т.д.) и в сотнях других решений. Однако, как и в любой другой области, в штрих-кодировании, а особенно при использовании штрих-кодов в работе с электронно-бумажными документами (документами, которые могут существовать одновременно и в бумажном и в электронном вариантах), есть свои тонкости и нюансы. Постараемся разобраться с основными из них:

●  Какие штрих-коды использовать?

●  Как правильно наносить штрих-коды?

●  Как их читать?

Что есть будем?

Начнем с вопроса выбора типа штрих-кода для наших задач.

Для начала стоит сказать, что «штрих-код» понятие очень емкое и в общем случае включает различные способы визуального кодирования информации в виде набора рисок-штрихов. Однако, широко распространенные в настоящее время штрих-коды, во-первых, являются 2-цветными (черные риски на белом фоне), а во-вторых, делятся на:

●  линейные или 1D штрих-коды,

●  двумерные или 2D коды.

Рис 1

В каждой из подгрупп имеется огромное количество различных стандартов кодирования.

На что следует обратить внимание при выборе типа штрих-кода:

●  Поддерживаемый кодом алфавит. Встречаются коды поддерживающие: только цифры; буквы, цифры и некоторые знаки препинания; произвольные байты.

●  Максимальный размер кодируемого сообщения. Некоторые штрих-коды имеют явно заложенные в стандарт ограничения. В любом случае, по данному показателю вне конкуренции оказываются 2D штрих-коды, которые позволяют кодировать от нескольких тысяч знаков и более (для сравнения: средний линейный код позволяет закодировать 10-20 символов, а далее станет просто не читаем устройствами считывания)

●  Эффективность (компактность) кодирования. Эффективность обычно выражается в том, сколько информации можно закодировать в единице размера (для 1D в единице длины, для 2D – в единице площади) без снижения качества распознавания. Некоторые стандарты имеют специальные методы для снижения объема кодированного сообщения. Например, стандарт Code 128 позволяет переключаться в режим «только цифры» для кодирования больших последовательностей цифр, каждая цифра при этом кодируется меньшим количеством штрихов, нежели в обычном режиме.

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

Варить, жарить, … нет, лучше завялить

После того, как мы определились с типом используемого нами штрих-кода, стоит разобраться, как мы будем его наносить на документы. Основной принцип здесь «нанести нужно так, чтобы потом не возникло проблем с чтением». Какие же факторы оказывают влияние на возможность чтения штрих-кода? Пожалуй, основные, это:

●  Разрешение печатающего и считывающего устройства. Здесь нужно небольшое пояснение…

●  Дело в том, что в большинстве современных штрих-кодов ширина штриха не является величиной постоянной, точнее так: для каждого конкретного нанесенного кода выбирается некоторая единица толщины, а все штрихи и промежутки должны быть ей кратны. Собственно так и осуществляется кодирование отдельных символов: «штрих толщины 3, промежуток толщины 1, штрих толщины 1», … .

●  Так вот, если разрешающая способность печатающего или сканирующего устройства много больше единицы толщины (или толщина кратна размеру точки устройства), то считывание проходит без проблем. Если же это правило не соблюдается, то при считывании вместо «штрих толщиной 3», появится, например, «штрих, толщиной 3.7», и как его будет интерпретировать сканер – не известно.

●  Поэтому, чем больше разрешение принтера и сканера – тем лучше.

●  С проблемой плохого разрешения можно бороться пропорционально «растягивая» изображение штрих-кода, однако у этого метода есть и обратная сторона: «длинные» штрих-коды читаются далеко не всеми устройствами и занимают слишком много места.

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

●  Устойчивость к помаркам. Аналогично предыдущему, только штрихи не теряются, а «сливаются».

Рис 2

Итак, определившись с тем, на что нужно обратить внимание, давайте разберемся какие же способы нанесения штрих-кодов мы можем использовать и как эти способы соотносятся с перечисленными факторами качества.

Все ситуации нанесения штрих-кода на документ следует разбить на две большие группы:

●  Вставка кода в исходный электронный документ. Наиболее очевидный способ для документов или отчетов, формируемых в одной из ваших внутренних систем;

●  Наклейка или надпечатка на уже существующем документе. Единственный возможный вариант для документов приходящих извне.

Рис 3

Для вставки штрих-кодов в электронные документы и отчеты можно использовать либо встроенные средства редакторов и построителей отчетов, либо сторонние библиотеки, которые позволяют получать изображения как правило в форматах растровых изображений, emf/wmf-файлов (вектором) или даже могут интегрироваться непосредственно в офисные приложения – подобных приложений самой разной ценовой категории на рынке море. Для печати, таких документов, как правило, используются струйные или лазерные принтеры, разрешающей способности которых достаточно для воспроизведения любых штрих-кодов.

Несколько сложнее обстоит дело с документами приходящими извне. Для нанесения на них штрих-кодов обычно используют:

●  Принтер штрих-кодовНадпечатку на обычном принтере или специальном принтере для надпечаток, который ставится как дополнительное расширение на некоторые потоковые сканеры. К сожалению, ни первый, ни второй способ нельзя назвать абсолютно удобными: первый, потому что требует большого количества манипуляций от оператора и не позволяет выбирать место, куда именно впечатывать штрих-код; второй, потому что разрешение принтеров надпечатки, как правило, не очень высокое, а кроме того, многие из них умеют печатать только символы.

●  Печать на специальную клеящую ленту.

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

●  Для образов лучше использовать клеящую ленту на обычной бумаге и соответствующий принтер.

С чем изволите откушать…

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

По большому счету этих способов 3:

●  сканер штрих-кодов

●  простой поточный или планшетный сканер и программная библиотека распознавания штрих-кодов

●  ввод вручную (при условии наличия письменной расшифровки к штрих-коду).

Самый распространенный и, пожалуй, самый надежный способ, это использовать сканер штрих-кодов. Обычно его целесообразно применять в местах массовой ручной обработки документов, там где важна скорость поиска. Про сканеры штрих-кодов нужно знать следующее:

●  Количество рабочих плоскостей (лучей) считывания. Однолучевые несколько дешевле и (на мой взгляд) выглядят несколько эстетичнее, однако, при работе с таким сканером нужно внимательно следить, чтобы считывающий луч точно пересек все штрихи кода, что добавляет дополнительные движения (а значит и время) на правильное позиционирование метки под лучом.

●  Поддерживаемые типы (1D, 2D) и стандарты штрих-кодов.

●  Тип подключения к компьютеру (от этого зависит то, с каким ПО можно будет использовать сканер). Обычно используется подключение:

-   в разрыв клавиатуры (сканер посылает символы штрих-кода как набранные с клавиатуры);

-   в COM-порт;

-   в USB-разъем (в этом случае либо эмулируется один из двух предыдущих способов, либо со сканером поставляется своя библиотека);

Второй способ, основанный на программном распознавании, больше подходит для использования в цехах сканирования, при множественной обработке документов. Здесь штрих-код может использоваться для привязывания карточки ранее зарегистрированного документа к телу, а также для разделения пачки листов на отдельные документы при потоковом сканировании.

Основную сложность в данном способе представляет выбор библиотек или ПО для извлечения штрих-кодов. К сожалению, опыт авторов показывает, что, несмотря на кажущуюся наполненность рынка предложениями, действительно качественные решения, имеющие хорошие показатели качества распознавания (которое определяется способностью обнаруживать и читать штрих-коды на заполненном текстом или изображениями листе, а также читать блеклые, нечеткие, искаженные изображения штрих-кодов) и скорости работы. Даже высокая цена и большой срок работы на рынке, или то, что поставляется вместе со сканерами (чаще всего в качестве драйверов сканеров), не являются гарантами качества! А потому, выбирая подобное ПО, прежде всего, сделайте подборку тестовых изображений с характерными погрешностями сканирования (низкая яркость и контрастность, отклонение направления штрих-кодов от строго вертикального или строго горизонтального, …), и тестируйте, тестируйте, тестируйте!!!

Немного специй нам не повредит

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

●  По возможности, старайтесь добиться того, чтобы ваши штрих-коды были как можно компактнее по размерам. Это упростит вставку/вклейку их в документы, снизит вероятность повреждения и упростит считывание штрих-сканерами. Добиться этого можно, например, с помощью следующих методов:

- Уменьшение длины кодируемого идентификатора

- Упрощение идентификатора за счет уменьшения возможного алфавита для кодов (например, оставить только цифры). В этом случае можно подобрать оптимальный для данного алфавита тип штрих-кодов или режим кодирования штрих-кода (например, как переключение на «только цифры» у Code128).

- Переход на 2D штрих-коды. Как это не покажется странным, но вполне может оказаться, что маленький квадрат кода DataMatrix, окажется удобнее при вставке и читабельнее длинного прямоугольника 1D-кода.

●  Снабжайте свои коды уникальными префиксами (суффиксами). Этот совет противоречит предыдущему, но здесь уже никуда не деться – придется соблюдать баланс. Необходимость такого префикса объясняется просто: на документах, с которыми вы будете работать уже могут быть нанесены штрих-коды, и у оператора или, тем более, системы автоматической обработки документов, не будет возможности определить какой из штрих-кодов его.

●  Откажитесь от использования для нанесения наклеек со штрих-кодами от принтеров на термобумаге. Вообще, по возможности используйте обычные лазерные или струйные принтеры, если это возможно, и принтеры на клеящуюся бумажную ленту.

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

●  Наносите на документ несколько штрих-кодов, в разных частях листа. Это может показаться невозможным, ведь лист и так заполнен «под завязку», однако и тут можно найти некоторые ходы:

- Не обязательно делать все штрих-коды одинакового размера – «запасные» могут быть и потоньше

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

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

Чтобы прочитать эту статью до конца,
или зарегистрируйтесь

Комментарии 0

Чтобы прокомментировать, или зарегистрируйтесь