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

Мы работаем над ним лет 8 и теперь в нем около 3 миллионов штрихкодов в стандартах EAN (EAN-13, EAN-8) и UPC (UPC-A, UPC-E).

Что там?


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

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

Оригинальная он-лайновая версия справочника хранится на сервере Universe-HTT.
Открытая версия размещена на github'е. Обратите внимание на то, что в исходниках хранится фрагментированная база данных. Полный файл находится в релизе.

Зачем он нужен?


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

  • Прежде всего, это список товаров с «твердыми» идентификаторами. То есть, вы берете произвольный товар, например, лежащий у вас на тумбочке, и по штрихкоду, напечатанному на упаковке, можете сопоставить его с аналогичным товаром, находящимся где-нибудь на складе в Рио-Де-Жанейро.
  • Следствием из предыдущего пункта будет возможность облегчить электронный документооборот между предприятиями, ибо проблема синхронизации большей части (но не всех, конечно) товаров отпадает.
  • Вы можете быстро открыть новый магазин, не вбивая поступившие товары в учетную систему, а получая их из такого справочника поиском штрихкода (сильно идеализированный пример, ну да ладно).

Приведенные варианты и их возможные вариации довольно банальны. Есть и куда более интересные применения этого справочника:

  • Анализ словаря товарных наименований
  • Обучение нейронных сетей для классификации товаров и нормализации их наименований
  • Разработка «интеллектуальных» систем для сравнения ценовых предложений из разных источников
  • Сравнительный анализ продаж и иных операций на не связанных предприятиях
  • … Список продолжает ваша фантазия

Формат представления


База данных представлена текстовым файлом в кодировке UTF-8 с полями, разделенными символом табуляции.

Структура записи следующая:

  • ID: Внутренний идентификатор товара
  • UPCEAN: Штрихкод
  • Name: Наименование товара
  • CategoryID: Внутренний идентификатор категории
  • CategoryName: Наименование категории. Так как справочник категорий иерархический, то это наименование составное — от самого верхнего уровня до терминального уровня, которому принадлежит товар. Разделители уровней — слэш ('/')
  • BrandID: Внутренний идентификатор бренда
  • BrandName: Наименование бренда

Внутренние идентификаторы едва ли кому интересны — мы их выгружаем только для собственных целей (если вдруг понадобится точно идентифицировать ссылку на запись при возникновении каких либо вопросов со стороны).

Записи в свободно распространяемом формате отсортированы по наименованию товара в алфавитном порядке.

Особенности


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

Пара слов о том, как мы это делаем.

Прежде всего, справочник (администрируемый в системе OpenPapyrus) подвергается автоматическому процессингу с помощью технологии, которую я как-то описывал на Хабре.

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

Многие наименования приходится «дешифровывать» — в первоисточнике они могут содержать немыслимые сокращения и полностью пренебрегают нашей системой именования товаров :)

Все штрихкоды, опубликованные в открытом доступе, гарантированно прошли проверку на соответствие одному из 4-х стандартов: EAN-13, EAN-8, UPC-A, UPC-E и включают контрольную цифру. Возможные дефекты и проблемы опишу ниже.

Полнота и актуальность


На типичный вопрос «все ли штрихкоды есть в справочнике?» ответ стереотипен: нет и быть не может.

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

Географический охват (по странам, в которых товары продаются) значителен: Россия, Украина, Беларусь, США, Великобритания, Европейский Союз, ЮАР, Бразилия, Малайзия и многие иные.

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

Мы обновляем справочник на сервере Universe-HTT с периодичностью в несколько месяцев (когда накапливаем в предварительном буфере достаточный объем данных). Последний раз заливали данные в июне этого года. Совсем новые позиции там скорее всего отсутствуют. Однако, хотя это и покажется удивительным, новые штрихкоды появляются не так уж часто. Многие товары с одними и теми же кодами продаются в ритейле годами.

Открытую версию справочника так же планируем время от времени обновлять.

Источники


Из каких источников все эти данные мы берем? В основном, из интернета. Собираем различные прайс-листы, открытые отчеты, в том числе государственных органов (например, некоторые штаты в США публикуют данные о закупках).

Косяки


Справочник содержит ряд дефектов. Их не много, но сообщить о них необходимо.

Дефективные коды


В первую очередь, попадаются штрихкоды, которые по ошибке трактуются как UPC-A в то время как на самом деле это — EAN-13 без контрольной цифры. Причина в том, что первоначальный источник (мы уже не знаем какой) содержал код EAN-13 без контрольной цифры, но последняя цифра удовлетворяла правилу расчета контрольной цифры для UPC-A и наш скромный алгоритм посчитал этот код за относящийся к UPC-A. Это можно было бы поправить, но заметили слишком поздно и руки не дошли до массовой корректировки.
Проблем такого рода исчезающе мало, но, как говорится, увы.

Грубое несоответствие


Далее, есть путаница в товарах. То есть, в некоторых (крайне редких случаях) штрихкоду соответствует наименование, совсем к нему не относящееся.

Приватные коды


Некоторые штрихкоды могут быть приватными. Те EAN-13, которые начинаются на 2 мы отбрасываем на старте, но иногда что-то идет не так и попадаются приватные коды, либо начинающиеся на '2', либо те, что начинаются с какой-то иной цифры, являясь тем не менее частными, не зарегистрированными ни в какой из организаций, занимающихся этим (GS1, например).

Классификация


Как мы не старались наладить хорошую классификацию справочника — удалось не много. Треть позиций принадлежит группе default — то есть абсолютно не классифицирована. Остальные вполне могут иметь ошибочную принадлежность категориям.

Далеко не все товары ассоциированы с брендами, хотя мы и очень трудились над этим вопросом.

Как помочь?


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

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

Корысть


Если вам понравился справочник, то отметьте его на github'е звездочкой. Если он вам очень понравился — отметьте звездочкой еще и проект OpenPapyrus, ибо все администрирование и управление справочником осуществляется с его помощью.

Условия использования


Нет никаких. Как хотите, так и используйте. Если дадите ссылку на нас — спасибо, нет — переживем.

Горькие сожаления


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

Спасибо за внимание.

Комментарии (44)


  1. pewpew
    20.08.2018 20:47
    +2

    Лет 15 назад на полном серьёзе заинтересовался штрих-кодами. Но будучи совершенно юн, так и не понял, что можно сделать с базой, которую таке начал собирать. И конечно забросил.
    Забавно, что эта странная идея пришла кому-то ещё в голову, и зашла намного дальше.
    Впрочем, теперь монетизировать можно без проблем, написав мобильное приложение. Правда выхлоп будет копеечный.


    1. bopoh13
      21.08.2018 06:51

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


      1. pewpew
        21.08.2018 06:54

        Единственное, что приходит в голову — проверить, не является ли штрих-код явной подделкой. Скажем, покупаешь наушники, а гугл отвечает, что штрих-код принадлежит туалетному мылу.


        1. x67
          21.08.2018 14:32

          Мне кажется настолько косячных подделок мало. Скорее база может пригодиться интернет магазинам для автоматизации некоторых процесслв и приведения артикулов в


  1. ftp27
    20.08.2018 20:47
    -3

    В README.md гугл перевод?

    As gratitude, you can mark this repository with an asterisk


    1. Radionuclide
      21.08.2018 15:36

      А как правильно?


      1. ftp27
        21.08.2018 16:34

        As gratitude, you can star this repository

        Не то что бы там что то сильно не правильно. Просто бросается в глаза дословность.


        1. antonsobolev Автор
          21.08.2018 16:51

          Весьма забавно. Дело в том, что текст действительно переведен с помощью google translate. Но вот, наряду с другими мелочами, «as gratitude» было вручную вставлено вместо предложенного google'ом «as a thank you».


  1. dmitry_dvm
    20.08.2018 22:24
    +7

    Мне эта база никаким боком не может понадобиться, но я почему-то все равно рад, что вы ее собрали и опубликовали. Спасибо.


  1. armspecial
    20.08.2018 22:34

    Я отправлю инфо про китайский бренд.Черз 3 или 4 дня.


    1. antonsobolev Автор
      21.08.2018 10:39

      Спасибо. Мы постараемся включить их в базу как можно скорее и опубликовать в общем списке.


  1. NeoCode
    20.08.2018 23:12

    Интересно… получается что каждому товару выделяется некий шрихкод, и это соответствие достаточно однозначно? Получается, что есть некий центр выделения штрихкодов (или их диапазонов?), по типу организаций, занимающихся распределением IP адресов? Значит, все эти данные где-то хранятся официально?
    И могут ли свободные штрихкоды закончиться?


    1. VJean
      20.08.2018 23:38

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


      1. Thibo
        21.08.2018 14:35

        Вот там автор вроде собирался ISBN получать. Было бы интересно почитать его новый пост на эту тему чего-там-как.


  1. vchslv13
    21.08.2018 02:41

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

    Почему так, если не секрет? Вот (https://www.barcodelookup.com/api) у людей, вроде как, вполне неплохие расценки за запросы к API стоят. Но, судя по беглому сравнению, у вас в базе намного меньше продуктов и меньше информации по каждому из них — правильно ли я понимаю, что это основная причина ваших проблем с монетизацией, или есть ещё какие-то?


    1. solariserj
      21.08.2018 09:58

      так barcodelookup.com когда-то 3 года назад с 3 млн начинался(правда с постоянным пополнением) и доступ к api был бесплатный


    1. antonsobolev Автор
      21.08.2018 10:37

      У нас тоже есть api (http://www.uhtt.ru/dispatcher/ws/iface?wsdl) и тоже платный (1 копейка за одну товарную позицию). И им даже пользуются, однако это не приносит каких-либо значительных денег. Даже если бы мы увеличили расценки кратно — все равно. Возможно, мы не достаточно хорошо работали над вопросом.


  1. vchslv13
    21.08.2018 02:54

    >Собираем различные прайс-листы, открытые отчеты, в том числе государственных органов
    И ещё, прошу прощения за глупый вопрос, а скрейпинг данных крупных интернет-магазинов в качества источника информации вы не пробовали использовать? Учитывая, что у вас нет серьёзных ограничений по времени работы краулера и вам не нужны актуальные данные о ценах (в отличие от моих задач на нынешней работе), думаю, можно было бы наскрести приличное количество данных с относительно небольшими трудозатратами (если не учитывать постобработку, конечно).


    1. antonsobolev Автор
      21.08.2018 10:30

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


      1. vchslv13
        21.08.2018 16:57

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


  1. BigDflz
    21.08.2018 06:56

    не удаётся импортировать в mysql.
    1 Invalid utf8 character string: '(z80-76-841/2) бумага albeo engineer paper, инженер' SQL1.sql 1 1
    убираю остатки этой строки, появляется
    1 Invalid utf8 character string: '3963351/5 противень универсальный 350x 370' SQL1.sql 1 1


    1. antonsobolev Автор
      21.08.2018 10:26

      Спасибо за замечание — мы поправим это.


      1. BigDflz
        21.08.2018 12:30

        для полноты данных было бы не плохо дать максимальную длину текстовых полей


        1. antonsobolev Автор
          21.08.2018 12:36

          Упс! Опять спасибо — 127 символов.


          1. BigDflz
            21.08.2018 12:38

            не, кажется есть больше.


            1. antonsobolev Автор
              21.08.2018 12:43

              Это почти невозможно. Вероятно, есть проблема с теми наименованиями, в которых встречаются упомянутые вами проблемы с utf-8. Мы в функцию формирования данных добавим валидацию и корректировку таких символов.


              1. BigDflz
                21.08.2018 12:44

                жду!


  1. rawman
    21.08.2018 10:53

    производителя не даете?


    1. antonsobolev Автор
      21.08.2018 10:54

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


  1. frkbvfnjh
    21.08.2018 10:55

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


  1. denisromanenko
    21.08.2018 12:40

    Зачем эта неполная база, часть кодов которой может быть невалидна и недостоверна, если есть сервисы от самой GS1, где всё можно пробить за 10 секунд?

    А ещё зачинается GS1 Cloud, где всё это будет с API?


    1. antonsobolev Автор
      21.08.2018 12:56

      GS1 — только EAN.
      И ean'ы не все (4041485044338 например — вполне популярный товар).
      Весь список вы скорее всего не получите, соответственно, к примеру, сложный анализ большой выборки наименований провести будет не просто (или невозможно).
      Можно продолжить.
      Но самое главное, мы просто дарим справочник тем, кому он нужен. Кому — нет, тот ничего не теряет.


      1. denisromanenko
        21.08.2018 13:03

        Так, хорошо. Согласен.
        Тогда просто вопрос по теме — получается, если по шк 4041485044338 товар не бьётся через GS1 — значит, он там не был зарегистрирован, а просто «придумался» у производителя? или когда то был зарегистрирован, а потом потерял свою подписку?

        И получается, что по сути, можно хоть 100 таких незарегистрированных товаров по одним шк вывести на рынок — от посудомойки до филе минтая — но это же официально ничего не значит, никакой реальной коллизии по сути не будет?


        1. antonsobolev Автор
          21.08.2018 13:14

          Этот код принадлежит очень приличному производителю. Поищите его в google — он более чем актуален (по крайней мере де-факто).
          Тема регистрации штрихкодов у разных организаций относительно недавно обсуждалась на хабре. Мне к этому нечего добавить. В этой идентификации важен не столько официальный регистратор, сколько фактическое принятие операторами рынка.


          1. denisromanenko
            21.08.2018 13:25

            UPD: другой ответ, шк отлично бьётся, все хорошо


          1. denisromanenko
            21.08.2018 13:28

            Всё хорошо бьётся


            1. antonsobolev Автор
              21.08.2018 14:15

              Так это вы сами себе ответили. Производитель зарегистрирован, а данных о товаре нет. То есть накладки не будет, а вот информацию о том, что это за товар вы не получите. Я не к тому, что gs1 плохой, а к тому, что 1000 цветов лучше, чем 1.


  1. alexsibtone
    21.08.2018 13:14

    Владелец ресурса olegon.ru (https://olegon.ru/showthread.php?t=26132) все недобрый словом поминал тех, кто его базу штрихкодов через пул IP прокси серверов парсит до полного изнеможения.


  1. Akcent
    21.08.2018 13:48

    Эту базу можно было бы монетизировать, разработав продукт для 1с, прости господи. Так же есть приложение Rate&Goods. У них 12.5 миллионов штрихкодов, карточек товаров с картинками и разработанным готовым решением для автозаполнения по штрихкоду. СНГ и РФ сегмент. Так что в добавок к выше приведенным примерам, конкуренция не маленькая.


    1. HappyUser
      21.08.2018 15:50

      Согласен — в конфигурациях связанных с розницей (Розница, Управление торговлей и т.д.) можно было бы добавить обработку по заполнению справочников номенклатуры при приемке или инвентаризации товара. Это очень востребовано в небольших розничных сетях


  1. Komrus
    21.08.2018 16:25

    По заполнению справочников номенклатуры в 1С «из облака» по артикулу — с удовольствием бы оформил подписку. Только нужно:
    а) Префикс — русское наименование товара.
    б) Наличие артикулов товаров в базе (они для нас гораздо более критичны, нежели штрих-коды. Особенности проектного бизнеса)
    в) Возможность мэпить имеющиеся товарные труппы на свои.
    г) Хорошая структурированность по части «ИТ товаров»

    Ну и адекватная цена :)

    PS. А то надоело читать бухгалтерии/помощницам менеджеров краткий курс «товароведение ИТ товаров». А заодно искать — что же они в этот раз накреативили в процессе переноса спецификации из проектной документации в 1С :)


  1. prs123
    21.08.2018 21:31

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


  1. new_vit
    22.08.2018 10:07

    Спасибо за базу. Но 3 млн — это действительно не много.
    Вон, например, у Icecat в открытом доступе база 29 млн товаров, из которых у 12 млн есть хоть один EAN.
    Подробности тут: iceclog.com/coverage-analysis-of-your-catalog


    1. antonsobolev Автор
      22.08.2018 10:17

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