Чем распознавать на мобильных платформах?

в 19:32, , рубрики: android, face detection, face recognition, ocr, recognition, разработка мобильных приложений, Разработка под android

image
image

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

Как распознавать?

На самом деле способов распознавать на мобильных устройствах не так то и много.

Существует три варианта:

  1. Юзать уже готовую библиотеку, и просто скармливать ей изображения
  2. Использовать какое-то апи или сделать распознавание на сервере
  3. Написать свою библиотеку для распознавания текста

1. Взять библиотеку и скармливать ей картинки

Ничего космического в том нету, ведь есть масса библиотек для этих целей, но одни подходят лучше, а другие хуже. Для себя я отметил эти:

• Tesseract

image

Эта библиотека здесь вовсе не потому что она крутая. Мой совет: обходите её стороной. Наисана она на С++. В интернете куча статей восхваляющих эту библиотеку, да синтаксис прост и удобен, но на личном опыте проверено что она ужасна. Почему так объясняю: Для мобильных устройств есть ограничения по нагрузке на процессор, и если скормить картинку в хорошем разрешении телефон просто подвиснет, и здесь уже даже многопоточность не поможет, она просто не приспособлена для мобильных, при этом точность распознавания — просто днище, если половину поймет — уже хорошо. Если кто-то не верит — можете сами проверить это займет не более часа.

Точность: 4/10
Скорость: 4/10
Простота: 8/10
Нагрузка: 2/10

Общее впечатление: ужас, обходите десятой дорогой

• OpenCV

image

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

Точность: 8/10
Скорость: 6/10
Простота: 8/10
Нагрузка: 6/10

Фича: Просто хорошая библиотека ни больше ни меньше
Общее впечатление: в целом неплохо

• Mobile vision

image

Мой фаворит среди библиотек. Распознает текст, детектит лица, эмоции, считывает QR коды. Одним словом функционал хороший. Самое главное — это низкие требования к железу. Писалась специально для мобильных устройств. Мне очень понравилось то что можно прикреплять к ней камеру и не просто делать фотографию и выводить результаты, а сразу, на лету сканировать поток данных с камеры, распознавать, и поверх камеры рисовать всякие штуки на основе результатов, и при этом проседаний фпс не наблюдается. Но еще один важный критерий — точность, здесь она где-то 95%. Правда есть и минусы. В прошлом месяце гугл выпустил баганую версию play services и распознавание текста на многих устройствах не работало — был просто креш, но сейчас все вроде ок.

Ссылка на сайт: https://developers.google.com/vision/

Точность: 10/10
Скорость: 10/10
Простота: 7/10
Нагрузка: 9/10

Фича: прикрепление к камере за счет быстрой обработки данных без потери качества
Общее впечатление: прекрасно

2. Запросы в сеть

Суть проста: мы передаем фотографию в сеть и получаем ответ в виде json. Фотки можно передавать по-разному: ссылка, base64 string, Post запрос. Из недостатков: постоянный доступ в интернет, нельзя обрабатывать поток с камеры.

•Запустить свой сервер с распознавалкой

В принципе это отдельная тема, но этот вариант стоит рассматривать, ведь вы независимы от какого-то апи, у вас нету постоянных смен расценок.

Точность: зависит от библиотеки
Скорость: зависит от библиотеки + время на запрос
Простота: 1/10(делать свой сервер с распознаванием — дело не 5 минут)
Нагрузка: 10/10(минимальна, только запрос в сеть)

Фича: Не зависите ни от кого, и подстраиваете под себя
Общее впечатление: геморно, но вполне реально

• Cloud Platform Vision

image
Мне понравилось юзать эту штуку. Имеет самый большой спектр функций: ocr, logo recognition, face detection, Label detection и т.д. Отдельно хочу выделить распознавание достопримечательностей — аналогов просто нет, а точность высокая, может распознать дряхлую церквушку в каком-нибудь Мухосранске, но бывают и казусы. Скармливать можно ссылки и base64 string.

Библиотека для создания запросов к cloud vision она конечно не очень, но как пример для написания клиента норм: https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/vision

Точность: 10/10
Скорость: время на запрос
Простота: 7/10
Нагрузка: 10/10(минимальна, только запрос в сеть)

Фича: Можете распознавать все подряд, Landmark detection
Общее впечатление: вполне круто, но расценки...

• Kairos

Мало кто знает про это прекрасное api для распознавания лиц (features). Оно дает точные результаты, и его легко использовать. Вообще у них есть еще sdk для запросов, но оно платное, хотя на гитхабе его можно отрыть(я находил). Цены сравнительно демократичны, так что юзать можно.

Точность: 10/10
Скорость: время на запрос
Простота: 9/10 с sdk, если без то 6/10
Нагрузка: 10/10(минимальна, только запрос в сеть)

Фича: Большой спектр функций в распознавании лиц
Общее впечатление: вполне круто если вам нужно распознавать только лица

3. Написать свою библиотеку для распознавания
Пафосно и круто, но вам прийдется убить кучу времени.

Точность: зависит от вас
Скорость: зависит от вас
Простота: -1/10
Нагрузка: зависит от вас

Фича: что хочу то ворочу

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

Автор: vlad2711

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js