От Виктор А.К.
К All  
Дата 26.12.2000 16:11:25
Рубрики Прочее;

Повесть о том, куда пропали шестерки из штрикода.

Вступление.

 

Хочу сразу предупредить, я обсуждаю здесь только наличие шестерок в штрихкодах, а не мотивы принятия или не принятия ИНН.

 

 

 

Немного истории.

 

У каждой дискуссии есть своя история.

 

Первоначально вопрос о наличии шестерок возник из-за вообщем то явной похожести знаков разделителей на шестерки. Хотя впрочем такая же похожесть возникает между 0 и 8 если они закодированны соотвественными сетами, как на рядом со мной лежащей книге. Но на это никто не обращает внимание, 8 и 0 не так страшны. Как впрочем никто не обращал внимание на то, что и шестерка не всегда пишется под двумя тонкими линиями.

 

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

 

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

 

Мне, как бывшему сектанту, нетрудно понять разочарование людей которые выбросили несколько лет на занятие пустыми вещами. Обернуться трудно, но необходимо.

 

И вот казалось бы после полной ясности появляется статья, где доказывается , что шестерки и знаки разделители — это одно и тоже.

 
 
http://staytrue.i-connect.com/apostasia/chip/ahromeev.html
 
 

Основная мысль авторов такова -

 

" для распознавания используется только ширина обоих штрихов знака и пробела между ними. Все пробелы, подчеркиваем — все, находящиеся за пределами этих двух штрихов, составляющих знак, просто игнорируются алгоритмом распознавания! "

 

 

 

Куда пропали S и RT?

 

Мне трудно сказать, преднамеренно ли авторы обманывают своих читателей( а такие подозрения у меня есть на основании того, что из ГОСТа приведено только то, что доказывает их мнение, то же что опровергает забыто), вполне возможно что просто им что-то затмило глаза, раз они не видят очевидных вещей.

 

Огорошив читателя таблицами и формулами, вполне удачно проводят они свою линию. Хотя некоторые глюки остались и здесь. Так например хорошо заметно, что шестерка в одном из сетов — просто инвертирована, и из этого вроде уже следует, что пробел, который теперь стал штрихом тоже значим. Или тот факт, что если убрать по их мнению незначимые пробелы, крайнии штрихи сольются и код будет вообще нераспозноваем. Но это все мелочи, потому что главное авторы от своего читателя скрыли, это фразу, которая идет в ГОСТе перед формулами непосредственно.

 

"Для каждого знака символа принимают измеренную ширину знака равной S. Значение S используют для определения базовых пороговых (RТ) значений. Индивидуальные измерения от кромки одного штриха до соответствующей кромки следующего штриха (е) сравнивают с базовым пороговым значением (RТ), чтобы определить значение Е. Величину знака определяют на основе значений Е."

 

Попробуйте у авторов статьи найти упоминание об S или об RT хотя бы(CTRL-F в эксплорере). Не найдете, ведь эти велечины рушат их теории как карточный домик.

 

Намеренно ди это они сделали? Тут одно из двух или они не кандидаты наук или намеренно, такие элементарные ошибки непростительны даже простому инженеру.

 

Приведу следующий за этим абзацем текст ГОСТа.

 

"Значение е1 по определению представляет собой расстояние от передней кромки штриха до передней кромки соседнего штриха, а значение е2 — измеренное расстояние от задней кромки штриха до задней кромки соседнего штриха.

 

Базовые пороговые значения RТ1, RТ2, RТЗ, RТ4 и RТ5 представлены следующим образом:

 

RT1= (1,5/7)S;

 

RТ2= (2,5/7)S;

 

RТЗ = (3,5/7)S;

 

RТ4= (4,5/7)S;

 

RТ5 = (5,5/7)S.

 

Внутри каждого знака измеренные значения е1 и е2 сравнивают с базовыми пороговыми. Соответствующие интегральные значения измерений е1 и Е2 считаются равными 2, 3, 4 или 5, как показано ниже:

 

при RТ1 < еi < RТ2, Еi = 2;

 

при RТ2 < еi < RТЗ, Еi = 3;

 

при RТЗ < еi < RТ4, Еi = 4;

 

при RТ4 < еi < RТЗ, Еi = 5.

 

В противном случае знак является ошибочным. Определенные таким образом значения Е1 и Е2 должны соответствовать значениям, установленным в таблице 4.10 для соответствующих знаков."

 

 

 

Как видно определение E и е прямо завист от RT, которая прямо зависит от ширины знака S, которая следуя ГОСТу должна быть измеренна. Что такое ширина знака показано в ГОСТе на рисунке, туда входят и незначимые для авторов пробелы.

 

На этом этапе вполне можно сделать вывод, что авторы просто не понимают как работает алгоритм.

 

Его смысл прост, поскольку штрихкод может быть увеличен или уменьшен пропорционально, то измеряется не ширина штрихов, а их отношение к общей ширине символа. Только эта информация и известна заранее.

 

Вообщем, если все честно посчитать по ГОСТу, то знаки разделители ( с их уменьшенной шириной, которая составляет 3/7 и 5/7 от ширины нормального символа), попадают совсем на другие цифры в таблице нежели шестерки.

 

Любителям считать предлагаю проделать этот опыт самим.

 

В принципе про эту статью можно уже и забыть, но...

 

 

 

И чей-то конец, еще не конец...

 

 

 

Далее речь пойдет уже о тех перепитиях спора на форуме имени о.Андрея, которые начались после того, когда ложь или ошибки авторов той статьи стали всем очевидны.

 

Душа отстаивающих шестерки в штрикодах так просто не успокоится.

 

Первое, что сделали они, заменили 7 в соотвествующих формулах на 3 и 5, и тут же получили то, что им так хочется.

 

Хотя резонно было бы заменить, не только эти 7, но и другие цифры, чтобы все символы раскодировались в шестерки. Вот страху то, весь код это 13 шестерок плюс еще 3.

 

Чертова дюжина шестерок — ужас, который будет нагонять страх на обывателя.

 

И это не страшно, что в ГОСТе этого нет, и что для каждой цифры нужна своя формула, и что поскольку заранее неизвестно какую цифру мы измеряем, но непонятно по каким формулам ее раскодировать, по нормальным или по вновь изобретенным.

 

Но на этом примерно  этапе, о.Виктор, который идею с шестерками защищал, вдруг сам того не заметив выдвинул потрясающий и всем известный аргумент, который разрушил вновь начатый построения борцов за шестерки. Аргумент прост и всем известен, но его мало кто помнит.

 

"Любой код должен быть однозначно обратим."

 

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

 

Тут и становится очевидна нелогичность тех, кто хочет видеть за разделителями шестерки. Ведь только благодаря тому, что эти символы не выглядят как шестерки и нужны особые формулы, которые опять же могут быть применены только при знании того, что перед нами штрихкод несоотвествующий обычной шестерке по ширине. Но в результате они довльствуются шестерками, которые определенны по таблицам для символов с нормальной шириной.

 

Все что известно о символах разделителях это то, что они находятся в определенном месте и имеют отличную ширину от всех остальных символов. Поэтому можно изобрести любые формулы которые могут их декодировать в любые числа туда и обратно, если знать где нужно поставить эти символы и как они выглядят.

 

Поэтому становится очевидным, что то, что заставляет считать символы шестерками это только воля тех, кто этого хочет.

 

После недолгих перебранок на тему, что можно сократить лишние пробелы до 1 бита, хотя очевидно что в этом случае ГОСТовские формулы работать не будут, да и невозможно написать алгоритм распознавания, поскольку ширина всех знаков будет разной, а значит невозможно строить таблицы по отношениям к этой ширине, спор затих.

 

Хотя конечно остается возможность изобретать различные свои собственные коды, и свои алгоритмы, чтобы распознавать все что душе угодно в шестерки, но при этом надо помнить, что ни ГОСТу, ни к тому алгоритму, ни к тому штрихкоду это отношение иметь не будет.

 

Казалось бы все...

 

Тезис — Антитезис — Синтез.

 

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

 

Код вполне возможно раскодировается не по тем принципам, по которым он синтезировался. Люди хорошо знакомые с комбинаторикой и теорией кодирования могли бы повторить этот путь. Но лично мне он не кажется тем, что возможно прояснит ситуацию, поскольку все равно неизвестно как(и главное чем) думали те, кто изобретал этот тип штрихкода, вставляя туда символы так похожии на шестерки.

 

 

 

Виктор.