Может ли оптическое распознавание текста (OCR) работать так же быстро, как сканирование штрих-кода, и что для этого надо сделать? UPD 11.12.19 вошло в релиз https://infostart.ru/public/1166378/

33 Comments

  1. protexprotex

    Вот по Вашей теме — https://infostart.ru/public/266244/

    Хотелось бы узнать Ваше мнение и в чем отличие. Спасибо.

    Reply
  2. informa1555

    (1) Она неактивна или находится на модерации

    Reply
  3. protexprotex

    (2)

    Название случайно поменял и на модерацию отправил. Я там года четыре назад разработал компоненту. И там на лету также производится поиск артикулов и пр. и в 1С передается.

    Reply
  4. protexprotex

    (2)

    (2) вот видео — https://infostart.ru/video/w267692/

    Reply
  5. informa1555

    (4) Да это весьма познавательно, я тоже плотно занимаюсь ML и всем этим, но тут суть поста в другом — тестирование системы которую можно отдать кладовщикам в промышленную эксплуатацию. Которая быстро и 100% точно будет считывать. Это вроде бы похоже но кардинально отличается))

    Reply
  6. informa1555

    (3) я надеюсь потом когда модерации пройдет прочитаю Ваш пост, но как мне кажется там подход как раз такой какой мне не нравится — «компонента отдает артикул 1с» я как раз за другой подход.

    Reply
  7. protexprotex

    (5) Вы какой метод применяете в своей разработке? — (моя продемонстрированная разработка очень старая — сейчас уже мой движок «ушел» на много дальше — сейчас там применяю AdaBoost, нейронные сети и быструю корреляцию. Контурный анализ тоже есть, но он очень чуствителен к шумам — и в итоге выделение контура без разрывов получается только на относительно качественных кадрах. Склеить контур тоже можно, но тут бывает проблема с близким расположением объектов интереса)

    Reply
  8. protexprotex

    (6) Ну Вы же можете на стороне 1С проанализировать этот артикул. Я к примеру, это очень интенсивно использую в этой разработке — https://infostart.ru/video/w630732/

    там моя программа анализирует каждый кадр и посылает приемнику (1С, например) распознанные данные. И программа — приемник находит наиболее достоверный результат из всех посланных методов наиболшего кол-ва распознанных версий. Т.е. пришло от моей программы результаты — O345BM52 O345BM52 O346BM52 O845BM52 O345BM52 — мы видим, что в данных O345BM52 встретилось 3 раза (еще можно учесть коэффициент распознавания и учесть средневзвешанный ответ) — и выносим вердикт, что это O345BM52

    Reply
  9. informa1555

    (8) я с этого начинал, скорость не та — 1с лагает

    Reply
  10. informa1555

    (7) без понятия)) Гугл какой то использует. Мне даже не интересно. Интересуют только эксплуатационные характеристики

    Reply
  11. protexprotex

    (9)

    Ну тогда сама компонента может находить наиболее вероятный, а уже в 1С возвращать результат. Это быстро. Я так и делаю. Все очень быстро.

    Reply
  12. informa1555

    (11) с наиболее вероятным результатом наиболее вероятно влететь на неустойку в первый же день. Это не устраивает. Я про это и пишу чем такой подход плох. Он может что то о найти а может нет. Я довольно плотно сижу на теме wms и не наблюдаю что распознавание работает повсеместно. Хотя есть потребности, маркировка стоит денег да и не всегда возможна в принципе, чё бы не распознавать казалось бы. То что у Вас есть компонента это прекрасно, но если бы я ее использовал в Simple UI то в том режиме как я использую google vision

    Reply
  13. protexprotex

    (12) Не согласен. Приведу пример из давней уже разработке. В Питерском заводе по сканированию артикулов водных счетчиков — все прекрасно работает вот уже два года. Ошибка распознавания артикула — за два года не обнаружилась ни разу. Могу скинуть видео/фото проекта. Правда, там используется не контурный алгоритм, а быстрая корреляция. Но это суть дела не меняет. Если у Вас есть достаточное количество измерений, то среднее значение (матожидание) будет очень близко к истинному. На этом строиться вся теория бустинга, например. Также и беккинг. А математичесая база в них железобетонная.

    Reply
  14. informa1555

    (13) Ну я же не спорю. Почему нельзя использовать несколько измерений? Распознал алгоритм 30 блоков, по 10 нашлись артикулы(сразу SQLем), из них один повторился 7 раз допустим, т.е. его частота 7/10, а у остальных меньше — значит берем его. Не?

    Reply
  15. protexprotex

    (14) Если коэффициент распознавания более 0.75 (например), то да. Тот же коэффициент корреляции Пирсона — если коэффициент более 0.75, и таких версий хотя бы две — то тут более 90 процентов вероятность что это правильно распознанных объект. Ну а если более версий — то можно сказать, что все 100. И никто не мешает применить беккинг. Взять три независимых алгоритма распознавания и по трем алгоритмам построить гипотезы. Проверял на бустинге. Строил 80 независимых алгоритмов и делал усреднение по ответам. Точность получалась 99%. И никто не мешает построить не 80, а 200. Там вообще почти все 100 будет.

    Reply
  16. kiv1c

    Вот я тоже писал статью про использование Goggle Cloud Vision https://infostart.ru/public/586313/

    Reply
  17. protexprotex

    (16) Интересно

    Reply
  18. memb3r

    У вас на картинке с шиной 0 не распознался?

    Reply
  19. memb3r

    (12) Так и Google vision не дает 100% результат и может выдать «похожий» артикул. Значит это решение тоже не подходит для бизнеса?

    Reply
  20. informa1555

    (18) сначала нет потом — да. Он делает несколько распознаваний в секунду и с нулем и без нуля, по всякому. По каждому распознаванию программа ищет. Как найдет, поиск прерывается. Скрин сделан в момент когда без нуля было, а долей секунды позже произошло распознавание.

    Reply
  21. informa1555

    (16) А это не тот сервис)) У меня Firebase ML Kit. У того чисто облачное распознавание как я понял.

    Reply
  22. informa1555

    (19) Так там проверка идет по базе сразу же. В этом смысл.

    Reply
  23. memb3r

    (22) если, допустим, в базе есть артикул 12345 и 2345, то есть высокая вероятность того, что вместо 12345 ваша система подберет 2345, верно? Здесь нужно вводить контрольный знак и сверять контрольную сумму.

    Reply
  24. memb3r

    (21) Firebase — это облачные решения. У вас, как я понимаю, отрабатывает библиотека от Google vision и не используются возможности Firebase.

    Reply
  25. protexprotex

    (22) По поводу проверки — опять же это как с номером машины — если в нашей базе есть номер O354BC52, а реально заехала машина O854BC52, но система выдала именно O354BC52, то при проверке по Вашему алгоритму приметься O354BC52 — т.к. этот номер есть в базе. Косяк будет… Как Вы решаете эту проблему? (с артикулом та же история может быть)

    Reply
  26. informa1555

    (24) не только. Там модель 1 раз скачивается и все работает полностью оффлайн. Такой вот firebase для андроид. Я не знаю почему оно так называется. Насколько я понимаю у Гугл дублируются решения. Т.е. при выключенном вайфай, прочей связи и т.д. Проверено на пактике 100%. В видосе это работает на телефоне у которого нет симки и вайфай выключен.

    Reply
  27. informa1555

    (23) Так оно не найдет в базе 2345 и продолжит поиск. В этом весь смысл и есть. Вы когда шкод сканируете оно тоже не останавливается пока не отсканирует

    Reply
  28. informa1555

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

    Reply
  29. protexprotex

    (28) Спасибо. Интересно узнать о результатах. Но я бы все же лучше привязался не просто к частоте появления, а (если выборка — ответов большая) вычислил -p*log(p) информационную энтропию о оперировал бы ей. Это было бы намного стабильней. Т.к. информационная энтропия учитывает вероятность появления (в контексте Вашей задачи) символа в распознанном артикуле.

    Reply
  30. informa1555

    (29) p-это вероятность же? какая там выборка должна быть как Вы считаете? Допустим у меня всего 2000 артикулов, из них для 1000 есть похожие варианты 3-4 наверное (для каждого из этих 100) — это очень приблизительно. FPS у меня допусти 5 в секунду. Сколько надо набрать измерений чтобы статистические методы работали?

    Reply
  31. protexprotex

    (30) Да. p — это вероятность. Но тут это ни к чему. На одном ответе нужно посчитать информационную энтропию. Выборка ответов — это не то что Ваша распознающая программа выдала, а это выборка ответов по Вашей базе артикулов (т.е. возможные артикулы). т.е.:

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

    Reply
  32. memb3r

    (27) найдёт, в базе 2345 есть артикул.

    Reply
  33. protexprotex

    (31) Там еще частоту появления в данной позиции артикула символа можно скоррелировать с частотой появления соседних с ним символов. Но это уже нужно применительно к конкретному формату артикула привязывать.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *