Далее авторы для знака цифры «6» и для вспомогательных знаков при m=1 (не объяснив, как они получили это значение) выполнили все действия, предусмотренные Алгоритмом, начиная с п.З, и получили для всех знаков: e1=2; e2=2; Е1=2; Е2=2. По табл. 4.10 определили значение знака данных: «6» - одно и то же и для всех знаков, и сделали вывод: алгоритм декодирования ГОСТа единственным образом распознает вспомогательные знаки как цифру «6». Этот результат они и ожидали получить в соответствии со своим общим (и ошибочным) выводом: «все пробелы, лежащие за пределами трех элементов знака Ш П Ш игнорируются алгоритмом декодирования». В чем же ошибка приведенных выше рассуждений? Авторы упоминают только e1 и е2, но ведь для декодирования необходимо знать их относительные значения: e1/m и е2/m. А для их определения необходимо знать значение ширины модуля m. Но как его узнать? Это же не универсальная константа вроде постоянной Планка. Ширина модуля разная не только для разных этикеток со штрих-кодом - она меняется даже в пределах одного и того же символа за счет искажений, возникающих при считывании его сканером (например, если этикетка находится на цилиндрической поверхности), и даже в пределах одного и того же знака символа. Но в этом последнем случае считают, что на протяжении знака она меняется незначительно, и полагают m=S/7, где S - ширина информационного знака символа, состоящего из 7 модулей. И такое определение m в реальных считывающих устройствах проводится для каждого знака символа[951]. Оно предусмотрено и алгоритмом декодирования ГОСТа (при вычислении базовых пороговых значений). Таким образом, для декодирования информационного знака символа существенно необходимо знать общую ширину знака, которая определяется всеми штрихами и пробелами, образующими знак. Приведем пример. Пусть нам встретился знак из трех элементов «штрих-пробел-штрих», в котором все элементы -равной ширины, а ширина поля пробелов справа или слева от этого трехэлементного знака неизвестна. Как он будет декодирован? Для декодирования нужно определить, сколько модулей укладывается в расстояниях e1 и е2, а для этого необходимо знать ширину одного модуля. Но ее можно определить только тогда, когда виден весь знак в целом, со всеми принадлежащими ему пробелами. Если рядом будет пробел с шириной в четыре раза большей, чем ширина каждого из упомянутых элементов, то ширина модуля будет равна ширине каждого элемента; при этом e1/m=e2/m=2, и знак будет декодирован как «6». Если же рядом будет пробел шириной в половину ширины элемента, то модуль будет вдвое уже каждого элемента; при этом e1/m=e2/m=4, и знак будет декодирован как «1». — 359 —
|