Помогите С Штрихкодированием

Dios1986

Active member
20.04.2010
25
0
#1
помогите с штрихкодированием посредством code128

Собственно нашел такую штуку, думал что-то крутить на этой основе http://www.idautomation.com/barcode-fonts/...8/download.html
В примере у них есть база, которая кодирует фразу, но какие я только шрифты типа 128-го не качал и не подсовывал, при распечатке сканер не распознает ничего!!! (сканер рабочий)

Хелп ми плиз...

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

П.С. в поиск не отправляйте, т.к. уже все излазил, ничего толкового не нашел.
 

Вложения

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#3
Походу, если можно, объясните пожалуйста, зачем нужно штрихкодирование? Поясню вопрос, - некоторые конторы всерьёз занимаются "защитой документов штрихкодированием" на стыке бумажный-электронный документооборот...
 

savl

Lotus team
28.10.2011
2 136
105
#6
Или как средство контроля выдачи бумажной версии, в совокупности с электронным пропуском дает еще когда и кому была выдана.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#7
нуяб сделал хэш от текста дока и заштрихкодлировал...
далее снимаем скан-копию и распознаем текст, если хэш не совпал - текст дока изменили
 

Dios1986

Active member
20.04.2010
25
0
#8
Походу, если можно, объясните пожалуйста, зачем нужно штрихкодирование? Поясню вопрос, - некоторые конторы всерьёз занимаются "защитой документов штрихкодированием" на стыке бумажный-электронный документооборот...
у каждого документа есть внутренний номер, этот номер нужно кодировать в штрихкод и вместе с документом выводить на печать. Когда этот документ попадает в другой отдел или возвращается обратно, то достаточно поднести штрихкод к сканеру и он наберет код в представлении поиска. Полностью кодировать документ не надо :(


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

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#9
Или как средство контроля выдачи бумажной версии, в совокупности с электронным пропуском дает еще когда и кому была выдана.
Любой нормальный сканер + принтер нафигачит вам немеряное количество нужных штрихкодов на левых документах.
нуяб сделал хэш от текста дока и заштрихкодлировал...
далее снимаем скан-копию и распознаем текст, если хэш не совпал - текст дока изменили
Думал об этом, но штука очень ненадёжная, - нет гарантии, что распознание везде сработает одинаково, даже в пределах одной проги. А есть ещё версии... Также у разных подразделений, являющихся разными юрлицами, могут быть разные проги.

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

Добавлено:
у каждого документа есть внутренний номер, этот номер нужно кодировать в штрихкод и вместе с документом выводить на печать. Когда этот документ попадает в другой отдел или возвращается обратно, то достаточно поднести штрихкод к сканеру и он наберет код в представлении поиска.
Возможность подмены документа (высококачественный принтер) остаётся.

Если бы аппарат наносил штрихкод с присутствием металлической микро-крошки, тогда ещё имело бы смысл.
 

Dios1986

Active member
20.04.2010
25
0
#10
VladSh

нужна всего-лиш идентификация, так глубоко я даже боюсь заглядывать
 

Anatoly

Lotus team
30.03.2007
222
0
#11
Вот вы накрутили...
Зачем через штрих-код пытаться решить вопросы, для решения которых его применение неоправдано?
Как можно с его помощью отслеживать "не вносились ли поправки в текст документа"? Думаете это надежнее цифровой подписи?
Штрих-код может нести какую-то смысловую информацию о документе (дата, номер, корреспондент, отдел, номенклатура и т.п.) и должен позволять быстро получить доступ к электронной карточке. И этого, в принципе, достаточно.
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#12
Anatoly
Я об этом же.
Просто когда-то в 2007-м был на презентации софтлайновского документооборота, где такое и услышал. Тогда же и высказал свои возражения. Вопрос задал потому, может может я чего-то недопонимаю..
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#13
Как можно с его помощью отслеживать "не вносились ли поправки в текст документа"? Думаете это надежнее цифровой подписи?
закодировать хэш, можно и безумные цифры писать на листах... :)
цифровая подпись к бумаге никак не относится ;)
важен хэш а не способ визуализации, по шрих-коду - оператор просто найдет док с оригиналом и хэшом (вернее программа) или , если поделали код - не найдет
по сути и получится подпись (вернее - проверка по хэшу), но с нек. ручным вмешательством :)
 

Anatoly

Lotus team
30.03.2007
222
0
#14
закодировать хэш, можно и безумные цифры писать на листах... :)
цифровая подпись к бумаге никак не относится ;)
важен хэш а не способ визуализации, по шрих-коду - оператор просто найдет док с оригиналом и хэшом (вернее программа) или , если поделали код - не найдет
по сути и получится подпись (вернее - проверка по хэшу), но с нек. ручным вмешательством :)
Смысла подделывать сам штриф-код не вижу. Внести изменения в текст на бумаге?
Как вы визуально определите соответствие текста нанесенному штрих-коду?
Делать хеш, распознавая скан бумажного документа, - все нюансы не учтешь.
 

Dios1986

Active member
20.04.2010
25
0
#15
Дело оказалось именно в самом кодировании, методом воспевания и курения трубки, а после танцев с бубном было выяснено что все шрифты отлично распознаются, только программа кодирует неверно.

Теперь вопрос к бывалым.... Что лучше, генерация кода и подставление шрифта под него или генерация явой картинки ????

Подскажите по кодированию...
Про стоп, старт и контрольные символы вроде понятно, но какие именно должны быть старт и стоп символы не могу въехать, да и сами символы кода???
Везде прекрасно описано как высчитать контрольную сумму, но как представить в текстовом виде весь код нигде не могу найти, онлайн кодировщики выдаю иероглифы, откуда они берутся понять не могу..... :(
 
02.04.2005
170
1
#16
Дело оказалось именно в самом кодировании, методом воспевания и курения трубки, а после танцев с бубном было выяснено что все шрифты отлично распознаются, только программа кодирует неверно.

Теперь вопрос к бывалым.... Что лучше, генерация кода и подставление шрифта под него или генерация явой картинки ????

Подскажите по кодированию...
Про стоп, старт и контрольные символы вроде понятно, но какие именно должны быть старт и стоп символы не могу въехать, да и сами символы кода???
Везде прекрасно описано как высчитать контрольную сумму, но как представить в текстовом виде весь код нигде не могу найти, онлайн кодировщики выдаю иероглифы, откуда они берутся понять не могу..... :KillMe:
Когда-то очень давно делал штрих-код вот так:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>public static String barcode(String instring, int ver) {
/** Функция формирования строки символов для штрихкода Code128 С
* In: instring - строка цифр любой длины; ver - версия лотуса
* 256 - Notes 7.0
* Out: строка в виде кодов для отображения штрихкода в HTML
* Алгоритм описан на: http://idautomation.com/code128faq.html
*/
final int constC = 105; // константа, признак того что используется тип С баркода Code128
String outstring = ""; // строка на выходе
String csum = ""; // символ контрольной суммы
int i;
int k;
int z = 1;
long sum = 0;

// System.out.println("Версия Notes: " + ver);

// определяем строку
for (i = 0; i < instring.length(); i=i+2 ) {
k = Integer.parseInt(instring.substring(i, i+2));
if (k <= 90) {
if (k == 0)
k = 174;
else
k = k + 32;
outstring = outstring + "&#" + k;
}
else {
if (ver < 256) { // версия нотес меньше 7.0 используем замену символов
switch (k) {
case 91: {k = 1038; break;}
case 92: {k = 1118; break;}
case 93: {k = 1032; break;}
case 95: {k = 1168; break;}
case 98: {k = 1025; break;}
default: k = k + 70;
}
}
else {
k = k + 70;
}
outstring = outstring + "&#" + k;
}
}

// определяем контрольную сумму
for (i = 0; i < instring.length()-1; i=i+2) {
k = Integer.parseInt(instring.substring(i, i+2));
// System.out.println("Порядок: " + z + " Число: " + k + " Умножение: " + k*z);
sum = sum + k*z;
z++;
}
sum = sum + constC;
// System.out.println("Контрольная сумма: " + sum % 103);

Long xx = null;
xx = new Long(sum % 103);
k = xx.intValue();
if (k <= 90){
if (k == 0)
k = 174;
else
k = k + 32;
csum = "&#" + k;
}
else {
if (ver < 256) { // версия нотес меньше 7.0 используем замену символов
switch (k) {
case 91: {k = 1038; break;}
case 92: {k = 1118; break;}
case 93: {k = 1032; break;}
case 95: {k = 1168; break;}
case 98: {k = 1025; break;}
default: k = k + 70;
}
}
else {
k = k + 70;
}
csum = "&#" + k;
}

// "}" - стартовый символ для Code128 С
// "~" - стоповый символ для Code128 С
outstring = "}" + outstring + csum + "~";
return outstring;
}[/CODE]
Но, не советовал бы работать со шрифтами. Лучше генерировать картинки.
Я использую ZXing (\"Zebra Crossing\") http://code.google.com/p/zxing/.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#18
Смысла подделывать сам штриф-код не вижу. Внести изменения в текст на бумаге?
Как вы визуально определите соответствие текста нанесенному штрих-коду?
Делать хеш, распознавая скан бумажного документа, - все нюансы не учтешь.
речь идет именно об автоматизации поиска оригинала по шрихкоду (т.е. прямому назначению), с пом. считывателя, в БД
и сравнения распознаного скана с хэшом