Спасибо за ценное замечание! Действительно, если число периодов не целое, но хотя бы один период присутствует, то можно продолжить картинку до целого числа периодов и свести задачу к описанной.
С другой стороны, появляется риск получить периодические элементы там, где их изначально не было, а также возможны небольшие проблемы со «стыковкой» периодических элементов шаблона.
В данный момент для нас основным приоритетом является система распознавания паспортов РФ, поэтому первоначальное тестирование проводилось именно на паспортах. Метод должен работать и для других типов документов с периодическими шаблонами.
Методы обработки изображений, которые использовали наши стажеры, уже были реализованы в нашей бибилиотеке обработки изображений, которая оптимизирована под ARM архитектуру. Использовать огромный и не очень быстрый на мобильниках Tesseract, когда у нас есть свои наработки, которые отлично решают задачи распознавания, видится лишенным смысла.
УЭК будем распознавать. Насчет паспортов и ID карт других стран — ведем работы, самое сложное это найти массивы для обучения, настройки и отладки — персональные данные. Нюансов, конечно, множество, но это и интересно. Фрагментация по процессорам и камерам требует внимания и если его прикладывать, то в конечном итоге, качество только растет.
Такой сервис, в случае обеспечения безопасности и хорошего уровня QoS, был бы весьма полезен. Логично, чтобы он был услугой предоставляемой государством.
В данный момент опубликована сборка под ARM, требования: наличие автофокуса. С Dell Venue будем разбираться, если не сложно уточните модель и версию операционной системы.
Если тема интересна мы подготовим статью по этой тематике. Если кратко то: камера среднего телефона устойчиво регистрирует не так уж и много деталей защиты (например, тонкие линии гильотиной защиты зачастую смазаны); ламинария пленкой — есть как минимум 3 типа пленки: очень старая, старая и новая, последние две содержат голографических элементы, но их наличие на кадре зависит от освещения и угла съемки; специальные элементы дизайна — узор на фотографии, блямба РФ и мы их активно используем. Но надо заметить, что многие элементы защиты являются помехами для распознавания (пленка создает блики) и система вынуждена их учитывать при работе.
Отличный вопрос, более того, один из фундаментальных: как системе определить, что расползалось верно, если правильного ответа система не знает? Соответственно из этого вопроса вытекает – а когда остановиться? В нашем ядре реализовано сразу несколько подсистем которые работают над этим вопросом: система определения надежности результатов распознавания и система интеграции. Первая оценивает результат работы методов на каждом кадре для каждого объекта (зоны, поля, символа), вторая работает с потоком кадров и их результатов распознавания и выносит свой вердикт. В рамках планируемой статьи описывающей устройство ядра распознавания мы покажем место и функции этих систем, и если будет дальнейший интерес подготовим пост по этой тематике.
Над кнопкой поработаем.
Можно, но будет ли это достаточно для проверки на подлинность или это все же проверка на действительность?
Сделать такую проверку достаточно просто, вероятно, наши будущие клиенты реализуют у себя эту функцию у себя в приложениях. Предлагать пользователю демонстрационное приложение которое передает его персональные данные в интернет или «весит» десятки мегабайт, по нашему мнению безответственно.
Большую часть времени в подобных задачах тратится на обработку изображений, а не на методы статистического распознавания. Над своей библиотекой обработки изображений мы работаем уже 5 лет. Функции там достаточно низкоуровневые, зато полностью «отжатые» на двух SIMD платформах: Intel SSE2, ARM NEON. Все «расшито» интринсиками. Есть как минимум три полезных алгоритма с предельной асимптотикой, которых нет в OpenCV: быстрое преобразование Хафа, морфологические фильтры по ван Херку — Гилу — Верману и быстрые Гауссовские свертки алгоритмом Дерише. Кроме того, мы всю обработку удерживаем в 8-битных целых, изредка расширяясь до 16-битных для хранения кумулятивных сумм. На всех этапах растр масштабируется до минимального размера, на котором задача еще разрешима. Заодно шум давится. Нет глубоких переборных схем. Бинаризации нет вообще, поэтому не возникает комбинаторный взрыв на разваленных символах. Нейронные сетки обучаются с раздутием (augmentation) обучающей выборки, в том числе сдвигами растра, поэтому неточности сегментации парируются сетками. Сами сетки — глубокие сверточные, вычисляются через Eigen, который очень хорошо разогнан под NEON. Сетки, к несчастью. пока в 32-битных флоатах считаются. Сейчас в другом продукте мы уже начали использовать целочисленные сетки (16 бит), так что скоро Паспорт РФ еще ускорится.
Размер дистрибутива тоже является важным параметром оптимизации, о котором уже подзабыли разработчики для десктопов. На мобильных устройствах размер пакета, зачастую, имеет критическое значение, иногда каждая сотня килобайт на счету.
Ничего хорошего тут нет, каждый должен сам решать: публиковать персональные данные или нет. А за несанкционированную публикацию надо наказывать, в соотвествии с законом.
Мы специально сделали Демо программу не взаимодействующей с внешним миром, мы не хотим передавать персональные данные, тех кто скачал и пробует нашу программу, куда либо или хранить их. Используя же наш SDK, этот запрос можно реализовать как online (соблюдая меры безопасности), так и offline с помощью списка недействительных паспортов, хотя при обмене по сетям общего доступа такой информацией лучше использовать хеш.
Для банков мы не рассматриваем такой сценарий — он действительно может напугать. Мобильник может быть превращен в стационарный сканер с помощью копеечного пластикового крепления. Выигрыш при этом — в стоимости за счет серийности. Распознавание «с руки» предполагается в основном с мобильника самого клиента. Кроме того, страховые компании уже сейчас присылают своих сотрудников с фотоаппаратами для съемки в том числе документов, и люди мирятся с тем, что из кармана достается фотоаппарат. Думаю, для уже существующих процессов переход на мобильники будет вполне гладким.
С другой стороны, появляется риск получить периодические элементы там, где их изначально не было, а также возможны небольшие проблемы со «стыковкой» периодических элементов шаблона.
Над кнопкой поработаем.
Сделать такую проверку достаточно просто, вероятно, наши будущие клиенты реализуют у себя эту функцию у себя в приложениях. Предлагать пользователю демонстрационное приложение которое передает его персональные данные в интернет или «весит» десятки мегабайт, по нашему мнению безответственно.