База данных штрихкодов скачать бесплатно без регистрации (и прочей хурмы)

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

    Мы работаем над ним лет 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, ибо все администрирование и управление справочником осуществляется с его помощью.

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


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

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


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

    Спасибо за внимание.
    Поделиться публикацией

    Комментарии 54

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

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

        –5
        В README.md гугл перевод?
        As gratitude, you can mark this repository with an asterisk

          0
          А как правильно?
            0
            As gratitude, you can star this repository

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

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

            +1
            Я отправлю инфо про китайский бренд.Черз 3 или 4 дня.
              +1
              Спасибо. Мы постараемся включить их в базу как можно скорее и опубликовать в общем списке.
              0
              Интересно… получается что каждому товару выделяется некий шрихкод, и это соответствие достаточно однозначно? Получается, что есть некий центр выделения штрихкодов (или их диапазонов?), по типу организаций, занимающихся распределением IP адресов? Значит, все эти данные где-то хранятся официально?
              И могут ли свободные штрихкоды закончиться?
              0
              Не желая выдавать нужду за добродетель, сообщу, что мы рассчитывали каким-то образом монетизировать обсуждаемый справочник. Однако, заметных успехов на этой ниве за прошедшие годы нам достичь не удалось.

              Почему так, если не секрет? Вот (https://www.barcodelookup.com/api) у людей, вроде как, вполне неплохие расценки за запросы к API стоят. Но, судя по беглому сравнению, у вас в базе намного меньше продуктов и меньше информации по каждому из них — правильно ли я понимаю, что это основная причина ваших проблем с монетизацией, или есть ещё какие-то?
                0
                так barcodelookup.com когда-то 3 года назад с 3 млн начинался(правда с постоянным пополнением) и доступ к api был бесплатный
                  0
                  У нас тоже есть api (http://www.uhtt.ru/dispatcher/ws/iface?wsdl) и тоже платный (1 копейка за одну товарную позицию). И им даже пользуются, однако это не приносит каких-либо значительных денег. Даже если бы мы увеличили расценки кратно — все равно. Возможно, мы не достаточно хорошо работали над вопросом.
                  0
                  >Собираем различные прайс-листы, открытые отчеты, в том числе государственных органов
                  И ещё, прошу прощения за глупый вопрос, а скрейпинг данных крупных интернет-магазинов в качества источника информации вы не пробовали использовать? Учитывая, что у вас нет серьёзных ограничений по времени работы краулера и вам не нужны актуальные данные о ценах (в отличие от моих задач на нынешней работе), думаю, можно было бы наскрести приличное количество данных с относительно небольшими трудозатратами (если не учитывать постобработку, конечно).
                    0
                    Нет не делали. Знаем, что такой подход существует и работает. В действительности, этот справочник лежит несколько в стороне от нашей основной деятельности, а скрейпинг требует дополнительный ресурсов на реализацию — просто руки не дошли.
                      0
                      Понятно. Спасибо большое за ответы и за то, что в открытом доступе наконец-то появился огромный справочник штрихкодов с наименованиями товаров, категориями и брендами. :)
                    0
                    не удаётся импортировать в 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
                      0
                      Спасибо за замечание — мы поправим это.
                        0
                        для полноты данных было бы не плохо дать максимальную длину текстовых полей
                          0
                          Упс! Опять спасибо — 127 символов.
                            0
                            не, кажется есть больше.
                              0
                              Это почти невозможно. Вероятно, есть проблема с теми наименованиями, в которых встречаются упомянутые вами проблемы с utf-8. Мы в функцию формирования данных добавим валидацию и корректировку таких символов.
                                0
                                жду!
                                  0
                                  таких строк огромное количество. и куча строк просто обрезанных в длину 127 «однобайтовых символов».
                                    0
                                    Мы прогнали проверку текста и не нашли инвалидных utf-8 символов. Не могли бы вы скинуть скрипт, которым забираете в MySQL данные? Мы у себя прогоним его и исправим выявленные дефекты. Вам, естественно, сообщим.
                                      0

                                      я сделал несколько проверок — (для быстроты использовал первый файл из "набора")
                                      открыл его в LibreOffice и просто сменил шрифт (к сожалению не обратил внимание на какой) — в результате проявились строки с "кривыми символами", причём и нормальные русские символы присутствовали. Есть подозрение, что есть строки и с UTF8 и с UNICODE. просто нулевые байты не отображаются в некоторых шрифтах. а в других воспринимаются как двухбайтовые.
                                      я из LibreOffice "сохранил как" выбрал фильтр…
                                      после этого с помощью dbForge удалось импортировать...(были танцы с бубном....)
                                      далее проверка


                                      SELECT
                                        uhtt_barcode_ref_0001_1.Name,
                                        BIT_LENGTH(uhtt_barcode_ref_0001_1.Name) / 8 AS expr1,
                                        CHAR_LENGTH(uhtt_barcode_ref_0001_1.Name) AS expr2
                                      FROM uhtt_barcode_ref_0001_1
                                      ORDER BY expr1 DESC

                                          |"28пан мороженое змж ванильно-шоколадное с прослойками джема киви и крыжовника декорированное шоколадной глазурью панда, 12% 500"|"229,0000"|127|
                                      "(л) максидин 0.15 лечение ринитов, конъюнктивитов различной этиологии, при повреждениях глазного яблока у собак и кошек 5мл*100"|"225,0000"|127
                                      "634369/1139 пчелодар шампунь-кондиционер оттеночный для собак и кошек с белой и светлой шерстью различных оттенков концентрат 1"|"225,0000"|127
                                      "<супер рука> [материал: алюминий, пластик, резина, максимальная длина: 81см, длина в сложенном виде: 42см, подъем предметов вес"|"223,0000"|127
                                      "(t) ГЕКСАДОГ (Merial) 1 доза +раствор (шестивалентная вакцина против чумы плотоядных, аденовирусной и парвовирусной инфекции, л"|"223,0000"|127
                                      "(л) дана ультра спрей для собак для профилактики и борьбы с блохами, вшами, власоедами и другими насекомыми 100мл*20 новинка"|"220,0000"|124
                                      "2605 зоомир акваконс против улиток - кондиционер для воды надежное избавление от улиток, пиявок, гидр, плоских червей 50мл*10"|"220,0000"|125

                                      к сожалению нормальной таблицы сделать не удалось.
                                      но тут видно, что длина в байтах не совпадает с длиной в символах

                                        0

                                        импортирую так


                                        LOAD DATA LOCAL INFILE 'C:/Temp/zzz/UhttBarcodeReference-20180818/DATA/uhtt_barcode_ref_0001_1.csv'
                                        INTO TABLE xxx
                                        IGNORE 1 LINES

                                        выдаёт


                                        • Invalid utf8 character string: '(z80-76-841/2) бумага albeo engineer paper, инженер'*
                                          0

                                          удалось импортировать так


                                          LOAD DATA LOCAL INFILE 'C:/Temp/zzz/UhttBarcodeReference-20180818/DATA/uhtt_barcode_ref_0001.csv'
                                          INTO TABLE xxx
                                          CHARACTER SET `binary`
                                          IGNORE 1 LINES

                                          и "проверочный" запрос


                                          
                                          SELECT
                                            BIT_LENGTH(uhtt_barcode_ref_0001_1.Name) / 8 AS expr1,
                                            CHAR_LENGTH(uhtt_barcode_ref_0001_1.Name) AS expr2,
                                            uhtt_barcode_ref_0001_1.Name
                                          FROM uhtt_barcode_ref_0001_1
                                          ORDER BY expr1 DESC</source>
                                          показывает
                                          
                                              |229,0000|229|28пан мороженое змж ванильно-шоколадное с прослойками джема киви и крыжовника декорированное шоколадной глазурью панда, 12% 500|
                                          
                                          хотя если вручную считать -  127 символов
                                            0
                                            А у меня с первого раза в mysql принять получилось. Я, правда, волшебником импорта пользовался (начал раньше, чем ответ от вас получил). Не может быть дело в изначальных параметрах создаваемой таблицы? (я не большой спец в mysql).
                                              0

                                              вот бы интересно как?
                                              я сделал "исследование" — загруженное ранее с CHARACTER SET binary экспортировал в файл csv он у меня получился 384м, в то время как исходный 459м. и по новой импортировал — dbForge показывает 522м против 610м. так что я делаю вывод — у ребят проблема с кодировкой. и к тому же обрезает по 127 символов. это тоже не спроста…
                                              и ещё в их ID дубликаты :)
                                              и еще сделал такой запрос


                                                zzz.Name ,
                                                zzz.ID,
                                                zzz.UPCEAN,
                                                zzz.CategoryID,
                                                zzz.BrandID,
                                                zzz.BrandName
                                              FROM zzz
                                              WHERE zzz.Name LIKE '%аспирин%'</source>
                                              
                                              в "первоначальном" импорте поиск 50 сек, в "повторном" импорте 10сек. что так же говорит о проблемах с кодировкой.
                                                0
                                                может быть дело в изначальных параметрах создаваемой таблицы?

                                                я первым делом это всё перепробовал

                                                  0
                                                  Я, правда, волшебником импорта пользовался

                                                  возможно он игнорирует ошибочные данные?
                                0
                                производителя не даете?
                                  +1
                                  В оригинальной базе данных производитель есть для ряда позиций, но там такая путаница и столько дубликатов, что пока решили не публиковать их в открытом доступе. Из соображения, что отсутствие данных лучше, чем плохие данные.
                                  0
                                  Человеческое спасибо! Попробую сличить эти данные со своими, если будут расхождения, вышлю Вам, или сообщу, что Ваша база полностью покрывает нашу скромную базочку. Но только когда будет время.
                                    0
                                    Зачем эта неполная база, часть кодов которой может быть невалидна и недостоверна, если есть сервисы от самой GS1, где всё можно пробить за 10 секунд?

                                    А ещё зачинается GS1 Cloud, где всё это будет с API?
                                      0
                                      GS1 — только EAN.
                                      И ean'ы не все (4041485044338 например — вполне популярный товар).
                                      Весь список вы скорее всего не получите, соответственно, к примеру, сложный анализ большой выборки наименований провести будет не просто (или невозможно).
                                      Можно продолжить.
                                      Но самое главное, мы просто дарим справочник тем, кому он нужен. Кому — нет, тот ничего не теряет.
                                        0
                                        Так, хорошо. Согласен.
                                        Тогда просто вопрос по теме — получается, если по шк 4041485044338 товар не бьётся через GS1 — значит, он там не был зарегистрирован, а просто «придумался» у производителя? или когда то был зарегистрирован, а потом потерял свою подписку?

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

                                          0
                                          Этот код принадлежит очень приличному производителю. Поищите его в google — он более чем актуален (по крайней мере де-факто).
                                          Тема регистрации штрихкодов у разных организаций относительно недавно обсуждалась на хабре. Мне к этому нечего добавить. В этой идентификации важен не столько официальный регистратор, сколько фактическое принятие операторами рынка.
                                            0
                                            UPD: другой ответ, шк отлично бьётся, все хорошо
                                              0
                                              Всё хорошо бьётся
                                                0
                                                Так это вы сами себе ответили. Производитель зарегистрирован, а данных о товаре нет. То есть накладки не будет, а вот информацию о том, что это за товар вы не получите. Я не к тому, что gs1 плохой, а к тому, что 1000 цветов лучше, чем 1.
                                        0
                                        Владелец ресурса olegon.ru (https://olegon.ru/showthread.php?t=26132) все недобрый словом поминал тех, кто его базу штрихкодов через пул IP прокси серверов парсит до полного изнеможения.
                                          0
                                          Эту базу можно было бы монетизировать, разработав продукт для 1с, прости господи. Так же есть приложение Rate&Goods. У них 12.5 миллионов штрихкодов, карточек товаров с картинками и разработанным готовым решением для автозаполнения по штрихкоду. СНГ и РФ сегмент. Так что в добавок к выше приведенным примерам, конкуренция не маленькая.
                                            0
                                            Согласен — в конфигурациях связанных с розницей (Розница, Управление торговлей и т.д.) можно было бы добавить обработку по заполнению справочников номенклатуры при приемке или инвентаризации товара. Это очень востребовано в небольших розничных сетях
                                            0
                                            По заполнению справочников номенклатуры в 1С «из облака» по артикулу — с удовольствием бы оформил подписку. Только нужно:
                                            а) Префикс — русское наименование товара.
                                            б) Наличие артикулов товаров в базе (они для нас гораздо более критичны, нежели штрих-коды. Особенности проектного бизнеса)
                                            в) Возможность мэпить имеющиеся товарные труппы на свои.
                                            г) Хорошая структурированность по части «ИТ товаров»

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

                                            PS. А то надоело читать бухгалтерии/помощницам менеджеров краткий курс «товароведение ИТ товаров». А заодно искать — что же они в этот раз накреативили в процессе переноса спецификации из проектной документации в 1С :)
                                              0
                                              Вот как раз на выходных начал делать свой маленький проектик для дома и как раз лучше всего дома искать вещи по штрих-кодам. Очень ваша база оказалась кстати, спасибо
                                                0
                                                Спасибо за базу. Но 3 млн — это действительно не много.
                                                Вон, например, у Icecat в открытом доступе база 29 млн товаров, из которых у 12 млн есть хоть один EAN.
                                                Подробности тут: iceclog.com/coverage-analysis-of-your-catalog
                                                  0
                                                  И вам спасибо за ссылку. Если нам удастся взять из той базы полезные данные, мы их выложим там же и в открытом доступе будет больше хороших данных. Ну и благодарим за то, что прижали наше самомнение — мы были уверены, что выложили самый большой объем — ошиблись.
                                                  0
                                                  Я не разбираюсь в штрих-кодах и особенностях их получения товарами, но давно страдаю по онлайн-сервису с базой товаров, где можно получить и внести сведения о разных товарах с указанием магазина, где он был куплен, и цены. Например, через сканирование QR-кода на чеке, или штрих-кода непосредственно на товаре, или вручную. А также чтоб о каждом товаре тут же можно было присобачить отзывы, внести его в избранное, или наоборот, в черный список, чтобы никогда больше не покупать. И в итоге получить собственный список постоянно покупаемых товаров с магазинами, где он есть, сравнением цен и прочими плюшками.
                                                  Может такое есть, но я не нашла. Есть сервисы отзывов, где товары каждый заводит кто во что горазд, есть личные списки покупок, где нет общих отзывов, есть приложения для ведения домашнего баланса… а вот объединить бы все это дело по штрих-коду, такое возможно вообще?

                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                  Самое читаемое