ИСХОДНЫЕ МАТЕРИАЛЫ:
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-х условий:
- Все три ограждающих штриха должны совпадать между собой.
- Изображения ограждающих штрихов должны совпадать с изображением цифры 6.
Из исследования ясно видно, что:
- При наличии визуального сходства, имеет место только непрямое совпадение ограждающих штрихов между собой, т.к. на уровне внутреннего представления и на уровне результатов применения алгоритма распознавания ограждающие штрихи LGP/RGP не совпадают с центральным штрихом CGP.
- Имеет место также непрямое совпадение изображений ограждающих штрихов и цифры 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.
|