От р.Б.Евгений Коблов
К Павел
Дата 20.10.2004 11:05:02
Рубрики 1941; Холмово;

Биометрия, ИНН и штрих-коды

Братья и сестры,
Изучая форум я натолкнулся на тему "О биометрических паспортах", которая потянула за собой ИНН, а как позже оказалось и штрих-коды. Что касается биометрической идентификации самой по себе, а также самого по себе ИНН, то проблемы заметно вроде не было, если бы не одно НО.

Последние пять лет я живу в Беларуси и поэтому в глаза тех бланков, которые надо заполнять при получении ИНН и на которых нужно ставить свою подпись не видел. Из статьи Василия Ахрамеева ( http://www.zaistinu.ru/econtrol/chips/ahromeev.shtml) проблема приобрела для меня новый смысл. Цитирую: "Но что делать православному человеку, если ему предложат подписать заявление с добровольной просьбой о присвоении ему ИНН, на странице которого он должен будет поставить свою подпись рядом со штрих-кодом, в котором нагло торчат “лукавые рожки” из трех шестерок?". Т.е., насколько я могу понять на бланках заявлений обязательно присутствует штрих код формата EAN-13/UPC. Тогда вопрос уже встал не в самом собственно ИНН, в котором шестёрок действительно нет и который сам по себе был бы просто следствием процесса автоматизации сбора информации о налогах и сборах, а в том, как это число будет кодироваться далее. ИНН для физических лиц имеет 12 десятичных разрядов должен быть в машиносчитываемой форме. Одной из наиболее распростанённой формой для 12-ти значных номеров является стандарт EAN-13/UPC.

Если именно этот стандарт будет использоваться для кодирования ИНН при считовании, а этой информацией я не обладаю, то это сообщение можно читать дальше и делать выводы по поводу ИНН. Если нет, то всё нижесказанное будет иметь отношение только непосредственно к штрих-кодам стандарта EAN-13/UPC, а с ИНН связано не будет.


Итак, попробуем разобраться, есть ли на штрих-коде число зверя. Есть две позиции на этот счёт.

1-я позиция: числа зверя в штрих-коде стандарта EAN-13/UPS нет
Изложена в статье диакона Андрея Кураева ( http://www.kuraev.ru/inn1.html)

2-я позиция: число зверя в штрих-коде стандарта EAN-13/UPS есть
Изложена в статье Василия Ахрамеева ( http://www.zaistinu.ru/econtrol/chips/ahromeev.shtml)


Перед тем, как согласиться с одной из них, рассмотрим стандарт EAN-13/UPS. EAN-13 - европейский стандарт, UPS - полностью совместимый с ним американский. Его Российский эквивалент это ГОСТ Р 51002-96. Сначала рассмотрим сам принцип штрихового кодирования:

Стандарт предназначен для кодирования 12-ти разрядных десятичных чисел с вычислением 13-го контрольного разряда. Как утверждают его разработчики, в целях удобства считывания кода, каждое число кодируется определённой последовательностью штрихов или пробелов.

Одна позиция в штрих-коде, на месте которой может находиться либо пробел, либо штрих называется МОДУЛЕМ. Согласно стандарту, каждая цифра кодируется при помощи семи модулей. Вообще, это само по себе не очень понятно, поскольку для кодирования любой цифры достаточно четыре бита, а никак не семь.

Далее, нулями обозначаются пробелы, единицами штрихи

Системы исчисления
Десятичная Двоичная

0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

Однако авторы стандарта использовали семь разрядов. Кроме того, вместо обыкновенных двоичных кодов они используют другие, свои кодировки. Всего существует четыре типа кодов (A,B,C,D).


Таблица 1

Число Кодировка А Кодировка B Кодировка C Кодировка D
0 0001101 0100111 1110010 1011000
1 0011001 0110011 1100110 1001100
2 0010011 0011011 1101100 1100100
3 0111101 0100001 1000010 1011110
4 0100011 0011101 1011100 1100010
5 0110001 0111001 1001110 1000110
6 0101111 0000101 1010000 1111010
7 0111011 0010001 1000100 1101110
8 0110111 0001001 1001000 1110110
9 0001011 0010111 1110100 1101000

В данной системе кодирования:

код С - это инвертированный код A
код B - это код инвертированный код A, записанный в обратном порядке
код D - это инвертированный код B

В настоящее время код D не используется. Для кодирования чисел на штрих-кодах используются
только варианты кодировок A, B и С

Теперь перейдём к разделителям на штрих кодах стандарта EAN13/UPS. Это те три двойные линии, которые всегда есть в начале, в середине и в конце каждого кода. Из-за них-то проблема и возникает.


Таблица 2

"Вспомогательный знак" "К-во модулей(позиций)" "Код"

Типовой знак ограничитель
(в начале и в конце кода) 3 101

Центаральный знак
ограничитель 5 01010


Диакон Андрей Кураев говорит:

"Так вот, цифра шесть кодируется следующим чередованием знаков: 1010000 (штрих-пробел-штрих-пробел-пробел-пробел-пробел). Другие варианты, предусмотренные ГОСТом: 0000101 или 0101111 (в последнем случае на этикетке над цифрой 6 мы видим толстую сплошную черную полосу). В любом случае для штрихового начертания цифры 6 требуется нанести 7 знаков (две черты, плюс пять пробелов, разделяющих эти черты между собою и отделяющие их от соседних цифр). Это значит, что для прочтения числа 6 компьютер должен получить серию импульсов от 7 знаков (модулей). А ограничительные линии, в которых обычно и видят тайные шестерки, состоят всего лишь из трех знаков: штрих-пробел-штрих (101)), то есть менее чем наполовину соответствуют той комбинации, которая обозначает 6. Кроме того, комбинация 101 входит и в написание таких цифр, как 3 и 5 (которые отличаются друг от друга комбинацией пробелов вокруг этих линий). А потому говорить, что ограничительные линии "похожи на шестерку" - все равно, что говорить, будто начертание цифры 5 похоже на шестерку, и потому число 555 тоже является сатанинским. Буква б тоже похоже на цифру 6. Но это не значит, что если в строчке трижды встречается буква б, то эту строчку стоит вымарывать как "сатанинскую"… "


Увы, но, к сожалению, при декодировании числа 6, согласно ГОСТу используется только
только ширина обоих штрихов знака и пробела между ними. Все пробелы, находящиеся за пределами этих двух штрихов, составляющих знак, просто игнорируются алгоритмом распознавания. Следуя ГОСТу (раздел 4.6, стр. 11; рис. 4.7, стр. 10), подсчитывается параметр е1, равный расстоянию от передней кромки первого штриха до передней кромки второго штриха знака; параметр е2, равный расстоянию от задней кромки первого штриха до задней кромки второго штриха знака; иногда еще требуется сумма ширин первого и второго штрихов (b1+b2). По этим трем параметрам (чаще всего достаточно двух первых) и по табл. 4.10 (стр.12), называющейся в ГОСТе “Таблица декодирования “ЕАН/ЮПиСи””, однозначно восстанавливаем цифру. При подсчете следует учесть, что знаки нумеруются справа налево, а первый штрих знака – это правый для сетов А и В, и левый – для сета С, - если придерживаться табл. 4.1, стр. 3 ГОСТа.

см также. http://www.pravoslavie.ru/shengen/ean_reply2.htm

Обратим ваше внимание на то, что Греция, обращавшаяся к международным структурам с просьбой об изменении формы штрих-кода, получила решительный отказ…

И простите меня, грешного за такое нудное и длинное сообщение.

Ваш во Христе,
р.Б. Евгений