Исследование штрих-кода EAN-13 на предмет наличия в нем числа 666

ИССЛЕДОВАНИЕ ШТРИХ-КОДА EAN-13 НА ПРЕДМЕТ НАЛИЧИЯ В НЁМ ЧИСЛА 666

 

ИСХОДНЫЕ МАТЕРИАЛЫ: 


1) Иеромонах Лука, монах Продром, насельники афонского монастыря Григориат. "Штриховой код и число 666". Исследование третье (23.6.1997). Обитель преподобного Григория. 23 июня 1997 года. Использованы приведенные в работе описания штрих-кода EAN-13 и описания способов его обработки сканерами.


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

 

ТЕРМИНОЛОГИЯ:


Код - штрих-код EAN-13. 


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


Ограждающие штрихи - (Guard Bars, Guard Patterns) - выступающие штриховые символы в начале, середине и конце этикеток кода.


LGP - Left Guard Pattern - левый ограждающий штрих.


CGP - Center Guard Pattern - центральный ограждающий штрих.


RGP - Right Guard Pattern - правый ограждающий штрих.


Сканер - устройство для считывания штрих-кода с этикеток и передачи его в компьютер (кассовый аппарат или банкомат).

 

РЕЗУЛЬТАТЫ ИССЛЕДОВАНИЙ:


Основная предпосылка к соображению о наличии закодированного числа 666 в штрих-коде EAN-13 (далее: код) - наличие визуального сходства изображения числа 6 и изображений ограждающих штрихов этого кода. Для проверки этого сходства было произведено теоретическое сравнение графического и внутреннего представления, а также способов обработки сканером числа 6 и ограждающих штрихов кода.

 

1. Графическое представление в штрих-коде EAN-13.

1.1 Размеры изображений числа 6 и ограждающих штрихов.

 

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


    для LGP и RGP - полоски из 3 модулей,
    для CGP - полоска из 5 модулей.

 

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


Рис.1 Этикетка кода с указанием количества модулей на один знак.


1.2 Изображение числа 6 и ограждающих штрихов.

 

Для представления любого числа в коде используется 3 множества штрих-символов: Set A, Set B, Set C, т.е. каждое число на этикетке кода представляется одним из 3-х возможых вариантов. Для изображения числа в Правой части этикетки всегда используется Set C. В Левой части используется Set A или Set B в соответствие с Таблицей 1 в зависимости от первого числа штрих-кода N, находящегося на этикетке слева от LGP.


Рис.2 Этикетка кода с пояснениями по используемым множествам штрихов.

 

Таблица 1. Множества, используемые в Левой части этикетки и процентное соотношение чисел кода, представляемых множествами Set A и Set B.

 

Левая часть этикетки кода

И Т О Г О

Значение 
числа N

1-я цифра

2-я цифра

3-я цифра

4-я цифра

5-я цифра

6-я цифра

Кол-во 
Set A

Кол-во 
Set B

0

A

A

A

A

A

A

6

0

1

A

A

B

A

B

B

3

3

2

A

A

B

B

A

B

3

3

3

A

A

B

B

B

A

3

3

4

A

B

A

A

B

B

3

3

5

A

B

B

A

A

B

3

3

6

A

B

B

B

A

A

3

3

7

A

B

A

B

A

B

3

3

8

A

B

A

B

B

A

3

3

9

A

B

B

A

B

A

3

3

И Т О Г О

33

27

Процентное соотношение (50% занимает Set C)

27,5

22,5

 

Число N для каждой цифры из Левой части этикетки определяет символом какого множества (Set A или Set B) будет представлена эта цифра. Например, если в крайней левой позиции этикетки (т.е. слева от LGP) стоит 2 (N=2), то 1-я и 2-я цифры представлены штрих-символами Set A, 3-я и 4-я - Set B, 5-я - Set A, 6-я - Set B.

 

Таким образом, после подсчёта всех вариантов представления любой цифры, в т.ч. и 6, из таблицы становится понятно: если взять все возможные сочетания цифр на этикетке кода (т.е. все возможные варианты этикеток), то 27,5% всех "шестёрок" будут представлены штрих-символами из множества Set A, 22,5% - Set B и 50% - Set C.

Число 6 во множествах Set A,B и C и ограждающие штрихи изображаются следующими способами:


Рис 3. Графическое представление числа 6 в Set A, Set B, Set C 
и ограждающих штрихов кода EAN-13.

 

Из рисунка ясно видно, что изображения ограждающих штрихов совпадают визуально с изображениями числа 6 только в Set B и Set C, что составляет 50%+22,5%=72,5 %, в остальных 27,5% (Set A) эти изображения визуально не совпадают.

 

2. Внутреннее представление в сканере.


Любой штрих-символ этикетки кода преобразуется сканером в двоичную последовательность нулей и единиц (0 и 1), в которой каждому чёрному модулю соответстует 1, белому - 0. В соответствие с рис.3 двоичные представления изображений следующие:

 

6(Set A) - 0101111;
6(Set B) - 0000101;
6(Set C) - 1010000;
LGP, RGP - 101;
CGP - 01010;.

 

Эти последовательности нельзя рассматривать как двоичные числа, а лишь как двоичные изображения (картинки из 0-ей и 1-ц). B процессоре и памяти сканера эти изображения представляются в 8-разрядном двоичном виде путём дополнения слева нулями до 8 разрядов. Таким образом, получаем:

 

6(Set A) - 00101111;

6(Set B) - 00000101;

6(Set C) - 01010000;

LGP, RGP - 00000101;

CGP -      00001010;.

 

Ясно, что совпадают только внутренние представления изображения LGP/RGP с внутренним представлением изображения числа 6(Set B), что составляет 22,5% от всех возможных шестёрок в коде (см. п.1.2). Внутренние представления LGP/RGP не совпадают с внутренним представлением CGP, а внутреннее представление CGP не совпадает с какими-либо 6-ми.

 

К сожалению, в ИСХОДНЫХ МАТЕРИАЛАХ(1) нет явного описания 8-разрядного представления числа 6(Set C) - 010100002, это представление выведено на основе общих правил представления информации в процессоре и памяти. Поэтому оно может оказаться неверным, если именно для числа 6(Set C) в конструкции сканера сделано какое-либо исключение, что представляется практически невероятным. Во всяком случае, это представление легко проверить по каким-либо другим источникам.

 

3. Алгоритм обработки и распознавания символа сканером.


В ИСХОДНЫХ МАТЕРИАЛАХ(1) подробно описан алгоритм Техника "расстояния ширины" (width distance), который выдает одинаковое для числа 6(Set B,C) и для LGP/RGP соотношение 3:2:1. Теоретическое применение данного алгоритма для распознавания CGP позволяет сдалать вывод:


для CGP возможно получение соотношения 4:3:2:1, которое отличается от 3:2:1 для LGP/RGP и даёт при расшифровке согласно описанию этого алгоритма (в двоичном виде):

 

 00001111
-00000111
+00000011
-00000001
---------
 000010102 - это как раз внутреннее представление CGP, что и подтверждает правильность соотношения 4:3:2:1. 

4. Момент идентификации штрихового символа именно как числа 6.


Сканер передаёт результаты своей работы компьютеру, к которому подключается по клавиатурному входу вместе с клавиатурой (см. рис.4) в точке (*). Такое подключение делается для обеспечения возможности вводить код с этикетки вручную, просто набирая цифры кода на клавиатуре. Клавиатура передаёт в компьютер порядковые номера нажатых клавиш. Поскольку сканер и клавиатура подключены к компьютеру в общей точке (*), сканер "вынужден" также передавать в компьютер порядковые номера клавиш, которые надо было бы нажать на клавиатуре, чтобы получить на экране последовательность чисел с этикетки штрих-кода.


Рис 4. Путь информации от штрих-символа цифры 6 (Set A) до двоичного представления 6 в компьютере.

 

Движение информации происходит следующим образом (на рис.4 оно показано на примере штрих-символа цифры 6(Set A)). Любой штрих-символ этикетки кода преобразуется сканером в двоичную последовательность нулей и единиц (0 и 1), в которой каждому чёрному модулю соответстует 1, белому - 0 (см. п.2). Затем для всех двоичных последовательностей, соответсвующих цифрам кода, определяются порядковые номера клавиш, которые необходимо было бы нажать для получения этих цифр (для цифры 6 - клавиша № 77), и передаются в компьютер. Таким образом, ограждающие штрихи в компьютер не передаются, они там не нужны по двум причинам:

 

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

 

2) При ручном вводе штрих-кода на клавиатуре набираются только цифры кода, и, соответственно, передаются в компьютер порядковые номера нажатых цифровых (0-9) клавиш без всяких ограждающих штрихов. Поскольку сканер подключен к клавиатурному входу, он "вынужден" передавать также порядковые номера только цифровых клавиш.

 

И только внутри компьютера происходит преобразование № клавиши в цифру.


В нашем примере по № клавиши 77 компьютер определяет, что введена была цифра 6.

 

Таким образом, в сканере отсутствует числовое представление числа 6 (двоичное число 00000110), а присутствует только представление изображения числа 6 (см. п.2 настоящей Справки). Числовое представление числа 6 появляется только в компьютере, где ограждающие штрихи в каком-либо виде вообще отсутствуют.


5. О сходстве штрихового изображения числа 6 и ограждающих штрихов.


Данный пункт является вследствие недостатка информации предположением, основанным скорее даже не на логике, а на здравом смысле.

 

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

 

В работе греческих авторов сказано: "этот штрих технически наиболее пригоден в качестве контрольного штриха в этом типе кодирования".

 

Эта пригодность выражается в том, что для настройки сканера на считывание удобно получить следующую единичную серию импульсов от изображения:


- единичный чёрный импульс;
- единичный белый импульс;
- единичный чёрный импульс,

которая будет использоваться как эталон длительности импульсов при последующем считывании.

 

5.2 Использование 2-х штрихов единичной ширины с единичным белым промежутком для изображения числа 6(Set B,C).

 

Изображения числа 6(Set B,C) получаются путём инвертирования (каждый чёрный модуль переходит в белый и наоборот) и последующего зеркального отображения исходного изображения числа 6(Set A). Вероятно, сначала было разработано изображения числа 6(Set A), а уже из него автоматически получились изображения числа 6(Set B) и 6(Set C), которые и соответствуют двум тонким полосам. К сожалению, пока не удалось найти информацию о том, насколько необходимо было изначальное изображение числа 6(Set A) именно в таком виде.


ВЫВОДЫ:


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

  1. Все три ограждающих штриха должны совпадать между собой.
  2. Изображения ограждающих штрихов должны совпадать с изображением цифры 6.

Из исследования ясно видно, что:

  1. При наличии визуального сходства, имеет место только непрямое совпадение ограждающих штрихов между собой, т.к. на уровне внутреннего представления и на уровне результатов применения алгоритма распознавания ограждающие штрихи LGP/RGP не совпадают с центральным штрихом CGP.
  2. Имеет место также непрямое совпадение изображений ограждающих штрихов и цифры 6, т.к. при наличии 3-х вариантов изображения цифры 6, различных в Set A, Set B и Set C, в представлении Set A цифра 6 вообще не совпадает с ограждающими штрихами, в Set C не совпадает на уровне внутреннего представления в сканере, и только в Set B (22,5% от всех возможных вариантов изображения цифры 6) присутствует полное совпадение изображений ограждающих штрихов и цифры 6.

При проведении данного исследования применялся односторонний подход к анализу информации - чисто математический. Однако известно, что число 666 как имя зверя - число символическое, не имеющее уже математического смысла. Следовательно, и рассматривать его надо символически, как состоящее из символов 6. Шестерки, таким образом, теряют свой математический смысл и также становятся символами. Что же остается от 3-х вариантов представления цифры 6? - Ничего, т.к. можно символ инвертировать - обратить (преобразование по вертикали), можно зеркально отобразить (по горизонтали) - он останется тем же символом - 6.

Такая же ситуация и с различием левого/правого ограждающих штрихов LGP/RGP и центрального штриха CGP. Добавление белых полосок слева (или даже справа) не меняет значения символа. Таким образом, изображения ограждающих штрихов и шестерок совпадают символически, и, следовательно, штрих-код EAN-13 содержит число 666.

 

 

Составил Игорь Соловьёв

С.-Петербург, 25.04.2000.

 

22 января 2013 Просмотров: 8 345