[personal profile] ammo1
Сегодня я совершенно случайно обнаружил, что подавляющее большинство описаний подсчёта контрольной суммы самого обычного штрихкода EAN-13, которые можно найти в интернете, ошибочны.




В базе lamptest.ru есть штрихкоды ламп, которые я ввожу в экселевскую таблицу вручную. Конечно же при ручном вводе возможны ошибки, поэтому я попросил Матвея Иванова, сделавшего подсчёта итоговой оценки ламп в Excel, создать функцию, которая будет проверять правильность штрихкодов по их контрольной сумме.

Как известно, первые 12 цифр штрихкода кодируют информацию о товаре, а тринадцатая цифра - контрольная сумма.

Если набрать в поисковике "контрольная сумма штрихкода" в паре десятков первых ссылок будет одинаковый алгоритм:

1. Сложить цифры, стоящие на четных местах и полученную сумму умножить на три;
2. Сложить цифры, стоящие на нечетных местах (кроме самой контрольной цифры);
3. Сложить полученные числа;
4. Отбросить десятки;
5. Из числа 10 вычесть полученное число.

Оказалось, что этот алгоритм подходит не для всех штрихкодов. Если взять штрихкод 4607044243460, который я привёл на заглавной картинке, получается какая-то ерунда:

1. 6+7+4+2+3+6=28 x3 = 84
2. 4+0+0+4+4+4 = 16
3. 84+16 = 100
4. Как отбрасывать десятки у числа 100? Ну ладно, отбросим десять десятков, будет 0.
5. 10-0=10. Получилось 10, а должна быть одна цифра.

Удивительно, но этот неправильный алгоритм повторяется на тысячах сайтов, включая вполне официальные, вроде сайта о техническом регламенте продукции http://www.tehreg.ru/scode_kontr.htm.

Более корректный алгоритм было найти не так-то просто, но я его всё же нашёл: http://life-prog.ru/2_77338_raschet-kontrolnogo-chisla-koda-EAN--.html.

Первые три строки правильного алгоритма совпадают с неправильным:

1. Сложить цифры, стоящие на четных местах и полученную сумму умножить на три;
2. Сложить цифры, стоящие на нечетных местах (кроме самой контрольной цифры);
3. Сложить полученные числа;
4. Контрольным числом будет то, которое необходимо добавить к получившейся сумме, чтобы получить число, делящееся без остатка на 10.

В случае штрихкода, который я разбирал выше, сумма равна 100, значит контрольное число 0 (100 делится на 10 без остатка).


Заодно обнаружилось, что у IKEA штрихкоды 13-значные, но они не соответствуют EAN-13 и как у них считать контрольную сумму неизвестно. Вот, например штрихкод 3030597621633. Если бы это был EAN-13, на конце должна была бы быть семёрка, а там тройка.



Нигде в интернете алгоритм подсчёта икеевской контрольной суммы найти не удалось. Может быть вы знаете, как её считать?

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


© 2017, Алексей Надёжин




Основная тема моего блога - техника в жизни человека. Я пишу обзоры, делюсь опытом, рассказываю о всяких интересных штуках. А ещё я делаю репортажи из интересных мест и рассказываю об интересных событиях.
Добавьте меня в друзья здесь. Запомните короткие адреса моего блога: Блог1.рф и Blog1rf.ru.

Второй мой проект - lamptest.ru. Я тестирую светодиодные лампы и помогаю разобраться, какие из них хорошие, а какие не очень.
Page 1 of 2 << [1] [2] >>

Date: 28 January 2017 16:20 (UTC)
From: [identity profile] tenebris-jacere.livejournal.com
Ikea использует стандарт GS1, а не EAN.

Date: 28 January 2017 16:34 (UTC)
From: [identity profile] olegart.livejournal.com
GS1 — это не стандарт, а организация, выдающая уникальные коды, в том числе и EAN-13, и до 2005 года называвшаяся EAN International.

http://www.gs1.org/barcodes

А Икея может чего угодно использовать, их глобальная уникальность кода не волнует абсолютно.

(no subject)

From: [identity profile] tenebris-jacere.livejournal.com - Date: 28 January 2017 16:43 (UTC) - Expand

(no subject)

From: [identity profile] olegart.livejournal.com - Date: 28 January 2017 17:01 (UTC) - Expand

(no subject)

From: [identity profile] olegart.livejournal.com - Date: 28 January 2017 17:13 (UTC) - Expand

(no subject)

From: [identity profile] tenebris-jacere.livejournal.com - Date: 28 January 2017 18:45 (UTC) - Expand

Date: 28 January 2017 16:24 (UTC)
From: [identity profile] kvasin.livejournal.com
хм.а заказанный сканер и приложения для смарфонов"штрихкод" по-разному определяют штрихкоды?

Date: 28 January 2017 16:29 (UTC)
From: [identity profile] xnyleht.livejournal.com
Естественно, в сканере используется лазер, а смартфон просто фотографирует, а потом распознаёт изображение. Из-за этого, например, крайне маловероятно считать смартфоном блестящий штрихкод на алюминиевой банке пива.

(no subject)

From: [identity profile] kvasin.livejournal.com - Date: 28 January 2017 16:32 (UTC) - Expand

(no subject)

From: [identity profile] xnyleht.livejournal.com - Date: 28 January 2017 16:36 (UTC) - Expand

(no subject)

From: [identity profile] kvasin.livejournal.com - Date: 28 January 2017 16:42 (UTC) - Expand

(no subject)

From: [identity profile] xnyleht.livejournal.com - Date: 28 January 2017 16:46 (UTC) - Expand

(no subject)

From: [identity profile] kvasin.livejournal.com - Date: 28 January 2017 16:57 (UTC) - Expand

(no subject)

From: [identity profile] o-bl.livejournal.com - Date: 28 January 2017 18:15 (UTC) - Expand

Date: 28 January 2017 16:27 (UTC)
From: [identity profile] crazy-gray.livejournal.com
я еще году в 2006 работал в сети продовольственных супермаркетов. сканер штрих-кода включался очень тупо - разьем сканера в порт клавы, клава - в удлиннитель на сканере. тогда это было ps/2. принцип действия очевиден из схемы подключения....

Date: 28 January 2017 16:31 (UTC)
From: [identity profile] levtsn.livejournal.com

То что интерфейс равен клаве это почетно.

From: [identity profile] arperamop.livejournal.com
Херово ты работал :)

Сканеры могут подключаться так как ты описал через PS/2 или USB. Этот интерфейс называется "в разрыв клавиатуры".
На выходе сканер генерит последовательность символов ШК в порт клавы, как будто их просто вводили с клавы.
+ этого интерфейса - дрова не нужны

По другому сканер может подключаться через USB или COM, как самостоятельное устройство и он взаимодействует с ПО посредством драйвера.

Ну собственно в посте ниже об этом же пишут.
Edited Date: 29 January 2017 08:09 (UTC)

Date: 28 January 2017 16:33 (UTC)
From: [identity profile] xnyleht.livejournal.com
Сканеры штрихкодов для USB имеют обычно два режима, переключить которые можно отсканировав специальный служебный штрихкод от производителя (как правило вместе с инструкцией прилагается бумажка с такими кодами настройки):
1. Прикидываются клавиатурой, видны в Windows как "Стандартное HID-устройство ввода" и не требуют драйверов.
2. Прикидываются COM-портом, требуют драйверов от чипа-моста USB-To-Serial.

(no subject)

From: [identity profile] xnyleht.livejournal.com - Date: 28 January 2017 16:55 (UTC) - Expand

(no subject)

From: [identity profile] drei-domow.livejournal.com - Date: 28 January 2017 18:29 (UTC) - Expand

Date: 28 January 2017 16:38 (UTC)
From: [identity profile] ftor9999.livejournal.com
прикольно:)
а что это новость какая то:)
а госты почитать не судьба.....

Date: 28 January 2017 16:47 (UTC)
From: [identity profile] olegart.livejournal.com
> Правильный алгоритм было найти не так-то просто

Гммммм.

http://www.gs1.org/how-calculate-check-digit-manually

Date: 28 January 2017 16:49 (UTC)
From: [identity profile] olegart.livejournal.com
Хотя ладно, у меня чит — я работал с GS1 Russia и знаю, кто это и откуда коды берутся.

Date: 28 January 2017 17:09 (UTC)
From: [identity profile] alaft.livejournal.com
А какие преимущества у специального сканера шртихкодов перед аналогичным приложением для смартфонов?

Date: 28 January 2017 17:18 (UTC)
From: [identity profile] xnyleht.livejournal.com
Я там выше привёл пример с блестящей банкой пива.

(no subject)

From: [identity profile] ammo1.livejournal.com - Date: 28 January 2017 17:56 (UTC) - Expand

(no subject)

From: [identity profile] dmitriykrilov.livejournal.com - Date: 28 January 2017 20:14 (UTC) - Expand

(no subject)

From: [identity profile] ammo1.livejournal.com - Date: 29 January 2017 08:28 (UTC) - Expand

Date: 28 January 2017 17:16 (UTC)
From: [identity profile] mazday909.livejournal.com
Конечно знаем! Отсканировать икеевским сканером

Date: 28 January 2017 17:16 (UTC)
From: [identity profile] igor pavlov (from livejournal.com)
3=10-7 :) если выполняется и для других кодов, вот и ответ :)

Date: 28 January 2017 17:27 (UTC)
From: [identity profile] livejournal.livejournal.com
Здравствуйте!
Ваша запись попала в топ-25 популярных записей LiveJournal. Подробнее о рейтинге читайте в Справке.

Date: 28 January 2017 17:27 (UTC)
From: [identity profile] livejournal.livejournal.com
Здравствуйте! Ваша запись попала в топ-25 популярных записей LiveJournal России! Подробнее о рейтинге читайте в Справке.

Date: 28 January 2017 17:40 (UTC)
From: [identity profile] buddy-z.livejournal.com
Ну а если отбросить именно десятки (т.е. среднюю цифру у 100) и оставить сотни, то 10-10=0
Edited Date: 28 January 2017 17:41 (UTC)

Date: 28 January 2017 17:57 (UTC)
From: [identity profile] ammo1.livejournal.com
О как. Ну, кстати, да, но ооооочень криво.

(no subject)

From: [identity profile] buddy-z.livejournal.com - Date: 28 January 2017 18:15 (UTC) - Expand

Date: 28 January 2017 17:51 (UTC)
From: [identity profile] hlody.livejournal.com
Да ладно, штрих коды, говорят, вышел фильм Петра Ловыгина "Питербуржская дынька", где вас играет артист Гальцев!

Date: 28 January 2017 17:57 (UTC)
From: [identity profile] ammo1.livejournal.com
Ну начинааааается.

(no subject)

From: [identity profile] hlody.livejournal.com - Date: 28 January 2017 18:58 (UTC) - Expand

Date: 28 January 2017 17:55 (UTC)
From: [identity profile] mindfactor.livejournal.com
>А ещё я с удивлением для себя узнал, что большинство сканеров штрихкодов, использующихся в магазинах, просто эмулируют клавиатуру и при считывании кода передают последовательность нажатия цифровых клавиш, так что для сканера не нужны драйверы и специальные программы - просто тыкаешь в экселевскую ячейку, нажимаешь кнопку на сканере и получаешь в ячейке штрихкод.

С нетерпением жду, когда автор с удивлением обнаружит, что творог добывают не из ватрушек.

Date: 28 January 2017 17:59 (UTC)
From: [identity profile] ammo1.livejournal.com
Всего знать невозможно. Я никогда раньше с торговым оборудованием не сталкивался и предполагал, что сканер подключается как-то хитро и работает только со специальными программами, а оказалось всё так просто.

(no subject)

From: [identity profile] mindfactor.livejournal.com - Date: 28 January 2017 18:19 (UTC) - Expand

(no subject)

From: [identity profile] ammo1.livejournal.com - Date: 28 January 2017 18:29 (UTC) - Expand

(no subject)

From: [identity profile] mindfactor.livejournal.com - Date: 28 January 2017 18:42 (UTC) - Expand

Date: 28 January 2017 18:17 (UTC)
From: [identity profile] o-bl.livejournal.com
Неужели, в ЖЖ столько людей, способных понять эту статью? :) Я поражен. )

Date: 28 January 2017 19:11 (UTC)
From: [identity profile] hlody.livejournal.com
Что бы обсудить что то умное, совсем не обязательно в этом разбираться. Тут все так делают. Читаешь название поста, заходишь и сразу кидаешь козырь - в штрихкоде 8-46 совсем не 35 из Сингапура. Дело сделано, все осознают что имеют дело с понимающим человеком.

(no subject)

From: [identity profile] o-bl.livejournal.com - Date: 29 January 2017 01:07 (UTC) - Expand

Date: 28 January 2017 19:12 (UTC)
From: [identity profile] vladimir1911.livejournal.com
Эта штука называется "интерфейс". Сканеры выпускают с разными интерфейсами. Для бытовых целей удобнее всего PS/2, который так же называют "в разъем клавиатуры". И еще - для ноутбука и стационарного компьютера - два разных подвида интерфейсов PS/2 . Это что бы при включении компьютер не пытался со сканера операционную систему загрузить.

Date: 28 January 2017 20:03 (UTC)
From: [identity profile] paveltr.livejournal.com
Не "в разъем клавиатуры", а "в разрыв клавиатуры" (по схеме подключения к ps/2)

(no subject)

From: [identity profile] vladimir1911.livejournal.com - Date: 28 January 2017 20:08 (UTC) - Expand

Date: 28 January 2017 19:31 (UTC)
From: [identity profile] r0l.livejournal.com
>>что большинство сканеров штрихкодов, использующихся в магазинах, просто эмулируют клавиатуру

Ну да. А как еще? Точнее, зачем как-то по другому, тем более, что все давно привыкли так?

Date: 29 January 2017 08:30 (UTC)
From: [identity profile] ammo1.livejournal.com
Я не знал, что всё так просто.

КП

Date: 28 January 2017 19:44 (UTC)
From: [identity profile] abasco77.livejournal.com
Здравствуйте! А что случилось со столбиком КП? Теперь у всех ламп все ОК?

Re: КП

Date: 28 January 2017 20:01 (UTC)
From: [identity profile] ammo1.livejournal.com
Ошибка. Исправим. Пока в полном режиме можно посмотреть.

Re: КП

From: [identity profile] ammo1.livejournal.com - Date: 29 January 2017 08:30 (UTC) - Expand

Date: 28 January 2017 19:55 (UTC)
From: [identity profile] agalakhov.livejournal.com
Короче, под "отбросить десятки" надо понимать "взять остаток от деления на 10". То, что результат совпадает с результатом от вычеркивания цифры десятков, связано с кое-какими свойствами колец вычетов.

Контрольная сумма = (10 - (3 * (сумма четных цифр) + сумма нечетных цифр) mod 10) mod 10. Второй раз остаток от деления надо брать, чтобы получался 0 при числе, нацело делящемся на 10, иначе будет получаться 10.

Date: 28 January 2017 20:08 (UTC)
From: [identity profile] Дмитрий Филимончук (from livejournal.com)
А кто вам сказал, что IKEA использует EAN13? Вообще-то на фото код 30305976216330 в кодировке 2-of-5

Date: 28 January 2017 21:49 (UTC)
From: [identity profile] ammo1.livejournal.com
А где у него контрольная сумма и как она считается?

(no subject)

From: [identity profile] Дмитрий Филимончук - Date: 29 January 2017 09:59 (UTC) - Expand

(no subject)

From: [identity profile] ammo1.livejournal.com - Date: 29 January 2017 10:09 (UTC) - Expand

(no subject)

From: [identity profile] Дмитрий Филимончук - Date: 29 January 2017 10:53 (UTC) - Expand

Date: 28 January 2017 20:38 (UTC)
From: [identity profile] igor p (from livejournal.com)
А чтобы напечатать штрихкод, например в Excel или в Word, достаточно скачать из интернетов любой шрифт, который отображает цифры в виде полосочек штрих кода (а не в виде арабских цифр).

Date: 28 January 2017 21:05 (UTC)
From: [identity profile] dark-barker.livejournal.com
Херню пишете.

1)
> 4. Отбросить десятки;
> 5. Из числа 10 вычесть полученное число.
2)
> То есть из 83 получаем 3, а из 105 получаем 15!

И? Какая контрольная цифра получится если из числа 10 вычесть 15?
Алгоритм рабочий и 100500 лет используется в железках по сложности и вычислительным возможностям начиная с берёзового полена, и только ammo1 нашёл там изъян в 2017м году.
Edited Date: 28 January 2017 21:06 (UTC)

Date: 28 January 2017 21:36 (UTC)
From: [identity profile] ammo1.livejournal.com
Действительно не получается. Тогда совсем какая-то хрень с отбрасыванием десяток.

(no subject)

From: [identity profile] gr bear - Date: 28 January 2017 22:30 (UTC) - Expand

Date: 28 January 2017 22:26 (UTC)
From: [identity profile] molbob.livejournal.com
Кстати да, когда в Магните работал, некоторые штрих-коды сканер не мог прочитать по разным причинам, к примеру плохо пропечатался или перетерся штрихкод или слишком мелкий для сканера, тогда кассир ручками вбивал набор цифр в специальном окошке, и на экране появлялся этот товар.

У меня есть один вопрос не по теме. У меня есть старенький ноутбук на одноядерном intel Core Solo с дискретной видеокартой. Если запустить Хд или фулхд видео в плеере с аппаратной поддержкой видеокарты - ролик совершенно не тормозит. Если запустить на софтверном декодировани - видео тормозит. Можно ли сделать так, чтобы по просмотре ютюба в браузере, видеокарта помогала процессору, использовалось аппаратное декодирование, и я мог бы смотреть видео в хд и фулхд качестве?

Date: 29 January 2017 08:09 (UTC)
From: [identity profile] xnyleht.livejournal.com
Браузер с поддержкой HTML5, хром например, последней версии + обновить дрова на видеокарту до самых последних.

(no subject)

From: [identity profile] molbob.livejournal.com - Date: 29 January 2017 09:09 (UTC) - Expand

(no subject)

From: [identity profile] xnyleht.livejournal.com - Date: 29 January 2017 10:54 (UTC) - Expand

(no subject)

From: [identity profile] molbob.livejournal.com - Date: 29 January 2017 18:43 (UTC) - Expand

(no subject)

From: [identity profile] xnyleht.livejournal.com - Date: 29 January 2017 18:50 (UTC) - Expand

Date: 29 January 2017 01:18 (UTC)
From: [identity profile] erelen.livejournal.com
1) "неправильный алгоритм повторяется на тысячах сайтов, включая вполне официальные, вроде сайта о техническом регламенте продукции http://www.tehreg.ru/scode_kontr.htm."
http://www.tehreg.ru/ - невообразимой левости жуткий сайт. Ничего "официального" в их предложениях разместить у себя баннер за 500р. и просьбах пожертвовать Яндекс.Денег нет. Удивляться некорректному описанию на таком сайте не стоит.

2) "Более корректный алгоритм было найти не так-то просто"
https://www.google.com/search?q=ean%2013%20barcode%20checksum
https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit
Да и по запросам на русском тоже регулярно встречается. Да и просто посмотрев несколько примеров догадаться, что если по "неправильному алгоритму" получилось 10 - то контрольная сумма 0.
Но, возможно, это сложнее, если сайты класса tehreg.ru считать официальными.

3) Шрихкод IKEA - это ITF-14. Т.е. 14 цифр, записанные штрихами Interleaved 2 of 5 (Interleaved Two of Five - ITF). Из этих 14 цифр, первые 8 - это тот самый артикул, что на упакове IKEA пишут на чёрном фоне обычно в формате XXX.XXX.XX. Потом ещё 5 цифр - то что на фото под штрихкодом справа, что это - не знаю (предположу, номер партии). Ну и последняя цифра - контрольная. Считается по MOD10 aka Luhn algorithm:
https://en.wikipedia.org/wiki/Luhn_algorithm
(вот тут прямо по ссылке алгоритм подсчёта полностью описан, найти будет просто)

Печальная мораль: одного IKEA`вского артикула "303.059.76" не достаточно, в нём тупо нет контрольной суммы. Её даже в добавочных написанных рядом цифрах нет. Она только в штрихкоде.

Решение: обзавестись штрих-ридером (Ali в помощь, 900р. будет достаточно) и вводить штрихкоды (и EAN13, и IKEA) им. Это будет просто: практически все штрихридеры поддерживают эмуляцию ввода с клавиатуры. А через OTG можно подключить к телефону и результат (работающий!) выглядит смешно :) (да, я знаю про BT-штрихридеры, но они дороже)

Бонус: это даёт темы для ещё кучи постов, с которых публика будет в восторге: "как я выбирал штрихридер", "как я его подключал и настраивал и какие трудности пришлось приодолеть", "как у меня теперь всё технично" (в последнем особенно велик простор для фото) :)
Edited Date: 29 January 2017 01:25 (UTC)

Ikea код

Date: 29 January 2017 06:34 (UTC)
From: [identity profile] mike l (from livejournal.com)
5 цифр после PN - это номер завода, на котором лампа произведена
В свое время вычислял контрактных производителей у IKEA
http://forum.ixbt.com/topic.cgi?id=47:12172:1443#1443
Page 1 of 2 << [1] [2] >>

Profile

ammo1: (Default)
ammo1

February 2017

M T W T F S S
   1 2 3 4 5
6 7 8 9 10 11 12
13141516171819
20212223242526
2728     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 21 July 2017 20:31
Powered by Dreamwidth Studios