Надежно ли сканирование штрих-кода Code39?
В моем приложении для iOS я использую стороннюю библиотеку для сканирования штрих-кодов Code39. Это программное обеспечение иногда неправильно сканирует (например, значение "13415566" возвращается как "U *"). Иногда один и тот же штрих-код работает нормально, затем снова отсканируйте тот же код, и это неправильно.
Сторонний поставщик программного обеспечения сообщает, что Code39 не является "надежным" форматом и "у него нет защиты от ошибок, и часто можно получить ложное чтение".
Это кажется смешным для меня. Коды, о которых идет речь, не имеют контрольной цифры, но, тем не менее, это просто ошибка в программном обеспечении для сканирования? Code39 известен такими вещами? Как это может быть принятый формат, если он иногда "ошибается"!
Благодарю.
2 ответа
Там не должно быть никаких серьезных проблем с читаемостью кода 39. При использовании в приложениях, где важно надежное сканирование, Code 39 обычно развертывается с защитой от неправильного чтения в форме контрольной цифры по модулю 43, которую сканер настроен для проверки перед передачей кода в систему. Любой полуприличный генератор штрих-кода или считыватель штрих-кода будет поддерживать контрольные цифры Code 39.
Поскольку я не видел качества печати штрих-кодов Code 39, которые вы сканируете, невозможно быть уверенным, однако я бы определенно предположил, что вы используете программу для чтения, которая имеет очень низкое качество сканирования Code 39.
Ваша библиотека штрих-кодов, вероятно, сбита с толку по следующей причине, но без полной отладки устройства это сделать невозможно...
Ниже я выровнял два изображения Code 39, которые были созданы с помощью онлайн-генератора штрих-кода на основе Barcode Writer в Pure PostScript. Сверху - горизонтально перевернутое изображение, содержащее "U", а внизу - изображение, содержащее "13415566".
Читая верхнее изображение справа налево, вы можете увидеть, что существует некоторая степень сходства с некоторой частью нижнего изображения.
Сканер может быть прощен за неправильное прочтение этого незащищенного кода 39, за исключением того, что он имеет следующие против него:
- Следует ожидать спокойной зоны (пробела) перед последовательностью начальных баров.
- Следует ожидать спокойной зоны после последовательности трейлинг-стопов.
- Шаблон бара для буквы "U" не совсем корректен.
- Предполагаемая последовательность стоп-баров не совсем верна.
Многие сканеры штрих-кода считывают черно-белые разделы в одну строку. Они не имеют ни малейшего представления о том, является ли линия горизонтальной, вертикальной или диагональной, и не имеют встроенных средств, чтобы узнать, пересекает ли линия штрих-код с одной стороны и выходит с другой, или если она проходит через верх, пересекается штрих-код по диагонали, и выходит через дно.
Некоторые форматы штрих-кодов, такие как Interleaved 2 of 5, начинаются и заканчиваются шаблонами, которые обычно встречаются в штрих-коде [I2of5 начинается с BwBw и заканчивается BBwB], и для частичного сканирования, которое соскальзывает с верхней или нижней части, может быть неверно истолковано как хотя это было действительное сканирование более короткого кода. Некоторые другие форматы штрих-кодов начинаются и заканчиваются шаблонами, которые выбраны таким образом, что частичное сканирование не может считываться как достоверные данные. Код 39 находится где-то посередине.
Каждый действительный штрих-код с кодом 39 начинается с BwBBwBBwwBw и заканчивается wBwBBwBBwwB. Возможно, чтобы последовательность wBwBB появлялась в конце одного символа, а BBwwBw - в начале следующего, с одним "w" между ними. Если две такие пары символов присутствуют в штрих-коде, между ними появляется ограниченное количество символов, и сканирование выходит из первой пары только в нужном месте и аналогичным образом выходит из второй пары только в нужном месте, возможно, сканер увидел бы законно сформированный штрих-код, содержание которого не имело очевидного сходства с оригиналом. Кто-то, кто сознательно выбрал данные штрих-кода, которые соответствовали необходимым критериям, и попытался отсканировать их под углом, чтобы сгенерировать ложное считывание, без проблем получит ложные показания со многих сканеров, но и данные, и угол сканирования должны быть "правильными". для того, чтобы вызвать проблемы.
Если кто-то обеспокоен возможностью таких неправильных прочтений, можно распечатать штрих-коды таким образом, чтобы гарантировать, что сканирование, которое оставляет код, не будет считаться действительным. Простой способ сделать это - напечатать черным цветом над и под штрих-кодом, чтобы при любом сканировании, которое входит и / или выходит через верх или низ, код воспринимался как начинающийся и / или заканчивающийся исключительно толстой черной полосой. Во многих местах, где видны "сложенные" штрих-коды, они будут разделены шаблоном точек, которые не содержат информацию, но вместо этого предназначены для обеспечения того, чтобы сканирование, пересекающее один ряд с другим, не могло быть воспринято как действительное.