Pull to refresh

Comments 78

Мало считать паспортные данные, нужно еще убедиться, что предъявленный документ настоящий.
Проверка наличия элементов защиты от подделки документа реализована? Было бы интересно почитать.
Как вы себе это представляете? Хорошую подделку может человек не отличить то…
например подцепить сервис ФМС по отозванным паспортам.
Можно, но будет ли это достаточно для проверки на подлинность или это все же проверка на действительность?
Сделать такую проверку достаточно просто, вероятно, наши будущие клиенты реализуют у себя эту функцию у себя в приложениях. Предлагать пользователю демонстрационное приложение которое передает его персональные данные в интернет или «весит» десятки мегабайт, по нашему мнению безответственно.
Речь не о хороших подделках или плохих, а определении наличия элементов защиты, которые способна увидеть камера.
Можно и ксерокопии распознавать, но важно, чтобы программа сообщала о наличии/отсутствии элементов защиты у предъявленного документа.
Если тема интересна мы подготовим статью по этой тематике. Если кратко то: камера среднего телефона устойчиво регистрирует не так уж и много деталей защиты (например, тонкие линии гильотиной защиты зачастую смазаны); ламинария пленкой — есть как минимум 3 типа пленки: очень старая, старая и новая, последние две содержат голографических элементы, но их наличие на кадре зависит от освещения и угла съемки; специальные элементы дизайна — узор на фотографии, блямба РФ и мы их активно используем. Но надо заметить, что многие элементы защиты являются помехами для распознавания (пленка создает блики) и система вынуждена их учитывать при работе.
гильотиной == гильоширная и ламинария == ламинация — чудеса автоподстановки
Некоторые элементы (например, периодичность голографических структур или правильное расположение статических полей) можно проверить даже с помощью мобильного телефона. Если это интересно, то мы подготовим пост по этой теме. Однако, такое определение подлинности позволит отсечь только сделанные на коленке подделки. Что касается профессиональных образцов — без специального оборудования уже не обойтись.
На новых голографическое фото, такое не подделаешь легко.
1682 год рождения распознал как 1982. Баг однако.
Это не баг, а фича :) Дело в том, что у нас, как и в любой серьезной программе распознавания существует набор алгоритмов, который способен скорректировать результат посимвольного распознавания на свое усмотрение исходя из эмпирического смысла. Здесь как раз такая ситуация.

И какая максимальная продолжительность жизни заложена в программу?

Баг, только если не пометил поле, как сомнительное. Если видишь в паспорте 1682 — разумно распознавать 1982 с флагом сомнительности. И абсолютно неразумно ответить 1682 без сомнительности, поскольку таких паспартов не бывает. Здесь нет задачи распознавания текста, здесь задача распознавания документа.
Я, конечно, несерьёзно написал о баге, но раз уж вы так подошли к вопросу, то стоит уточнить, что такой паспорт является недействительным документом, так как несёт ошибочные сведения и подлежит немедленной замене.

А вообще, «додумывать» сведения в документах — порочная практика. Да, можно выдать предупреждение, что, мол, тут что-то не так, но менять данные, тем более втихую, нельзя. Особенно, если речь касается «совершения любого сколь угодно серьезного дела».
Порочная практика — оптимизировать не то, что требуется в задаче. Группа теорем об отсутствии бесплатных завтраков как бы намекает нам, что единственное, что мы можем делать — это перегонять ошибки из одной части генеральной совокупности в другую. При том же среднем качестве распознавания одного символа в реальной эксплуатации выиграет та программа, которая ошибается на невероятных документах, но не ошибается на вероятных.
Говоря по-русски, вы пытаетесь подстраховаться на случай, если алгоритм распознает с ошибкой — тогда он попробует автоматически её исправить. Подход разумный, хотя мне было бы интересно посмотреть количество ошибок распознавания с исправлениями и без.
Да, вы правы, именно так. А всякую интересную статистику мы планируем привести в публикации про сам движок распознавания.
Точно. А то были МФУ от, кажется, Epson, который хранили сканы в формате, который предполагал частичное распознование для лучшего сжатия при хранении документов. Если в оригинале были мелкие цифры, то в отсканированном изображении (!) вместо 2 могла стоять 5.

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

Хорошо. Вы распознали документ локально. Что дальше?
Например, вы можете авторизоваться в любой системе, желающей дополнительных доказательств идентичности. Сейчас это платежные системы. Впоследствии и социальные сети могут ввести подобный способ авторизации. При этом в базе данных системы, как и в случае с паролями, будет храниться только хэш. Клиентское приложение сможет «доказать», что паспорт — тот же, если пришлет совпадающий хэш. При этом персональные данные даже при перехвате сообщения восстановить будет невозможно.

Но даже если просто пересылать результат распознавания (вместо картинки), это в двух аспектах более безопасно: 1) меньший объем данных легче защитить, меньшая избыточность данных также повышает криптостойкость; 2) ваши персональные данные путешествуют по одному каналу к одному агенту, именно к тому, к которому вы хотели. В случае распознавания картинки «в облаке», персональные данные попадают к третьей стороне, причем, как правило, даже неизвестной для вас.
UFO just landed and posted this here
А дальше, как и с QR-кодом, ничего. Распознавание паспорта прекрасно для случаев, когда требуется массово вводить однотипную информацию, например, в бюро пропусков какого-нибудь параноидального предприятия, где много посетителей и отставной полковник милиции во главе охраны. Там действительно такая система может помочь. Но мобильный телефон с аппой (а точнее, вот эта аппа) никуда данные не отдает, а потому низачем не нужна.
А всякие богатые конторки типа сбербанка давно поставили себе сканеры паспортов и не кашляют.
1. «Эта аппа» — демо-приложение. Аналогичная «аппа» Word Lens вклеивает в кадр слова, которые находит, «задом наперед». Абсолютно бесполезная программа. Которая принесла создателю миллионы. Потому что «боевая» версия делает неможко больше. И представителям бизнеса такой демки вполне достаточно.
2. Богатые конторки чрезвычайно озабочены уменьшением времени обслуживания клиента.
3. По опыту продаж нашего ядрышка распознавания МЧЗ (MRZ) на западном рынке, основной юзкейс — это встраивание в приложение, которое человек добровольно устанавливает на свой мобильник для получения услуги, требующей юридически значимой аутентификации. Представьте себе, например, аппликацию для покупки авиа-билетов, не требующую нудного вбивания паспортных данных.
Представьте себе, например, аппликацию для покупки авиа-билетов, не требующую нудного вбивания паспортных данных.

Представил.
Вы описываете удивительный юскейс. Предположим, что я летаю настолько регулярно, что мне и вправду мобильное приложение для покупки авиабилетов было бы в помощь.
Но помимо номера паспорта (который, к слову, я тупо помню), мне по любому придется ввести номер кредитки с cvv2 кодом и дату валидности (которые я, увы, не помню), и, что более печально, мне придется связать свою судьбу с той авиакомпанией/авиакассой, которая предложит мне приложение с возможностью сканирования моего паспорта (вопрос знатокам: что способно помешать разработчикам этого приложения попросить меня один раз ввести номер моего паспорта и запомнить его навсегда, не заморачиваясь с оцр?).
Кстати, когда я много летал и много снимал отелей в разных частях планеты, мне очень сильно помогало приложение 1password — оно хранит в себе не только пароли ко всей куче сайтов, но еще и как раз мои имя-фамилию. адреса, номера документов и кредиток, и способно заполнять формы по одному щелчку мыши.
Как Вы понимаете, я все равно эту информацию буду вводить только со своего компьютера/мобильного устройства (ни разу в жизни не вводил номер кредитки/паспорта на чужом телефоне и не собираюсь впредь), а раз так — то мне без разницы, буду я это сканировать или введу один раз руками и запомню навсегда.
Повторюсь, у вас получилась хорошая распознавалка, но я не вижу для нее юскейса применительно к мобильному устройству. Возможно, я и ошибаюсь, но вот не вижу.
Вы описываете удивительный юскейс.

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

Вы, разумеется, и ФИО помните. И дату рождения. Но мобильники пока еще не оснащены телепатическим интерфейсом, и ввод этой информации занимает некоторое время и очень раздражает среднего пользователя. Это pain. Тот, кто унимает боль клиента — получает его деньги.
по любому придется ввести номер кредитки с cvv2 кодом и дату валидности (которые я, увы, не помню)

Нет. Yandex и PayPal используют продукт card.io, Facebook — Jumio (и к этому продукту мы имеем некоторое отношение, степень которого мы не имеем права раскрывать). Эти продукты как раз предлагают НЕ вводить PAN, expiry и имя держателя карточки, а распознать их на мобильнике.
мне очень сильно помогало приложение 1password

Безо всякой иронии — вы молодец! Очевидно, мне не удастся «впарить» вам нашу технологию :-). Я только что понял, что моя компания потеряла несколько долларов. Но в мире еще несколько потенциальных пользователей, которые либо не настолько продвинуты, либо, наоборот, боятся утечки разом всех персональных данных. Время покажет, правильную ли мы сделали ставку. Вы-то уж точно ничего не теряеете, кроме время просмотра страницы на Хабре, не так ли?
(ни разу в жизни не вводил номер кредитки/паспорта на чужом телефоне и не собираюсь впредь)

Мне кажется, я вам рассказывал про ваш же мобильник. Не чужой.
Не знаю насчет Yandex и PayPal, в мобильном приложении Тинькова card.io только номер карты распознал. Может, правда, дизайн карты чрезмерно усложнил распознавание.
Когда мы последний раз проверяли конкурентов, состояние у них было такое: на мобильнике — номер, через сервер (если есть интернет) — дата, имя вообще никак. А вот Jumio где-то нашли группу специалистов, которые сумели все три поля распознавать на мобильнике в реальном времени. Подозреваю, что эта группа связана NDA и не может признаться в своем участии.
Тонко, особенно вместе с этим:

Спойлер
Jumio (и к этому продукту мы имеем некоторое отношение, степень которого мы не имеем права раскрывать)
Ну не знаю, я бы не разрешил кому-то фоткать свой паспорт с телефона… Полиция еще понятно, а вот в том же банке — первая мысль будет — сотрудник фоткает данные для своих целей.
А себе самому разрешите? Ну вот как вы себе разрешаете ввести цифры кредитки при интернет-оплате?
А если рассмотреть указанный вами юзкейс, то возникают ли у вас те же самые мысли в случаях, когда ваш паспорт кладут на планшетник?
Человек совершенно прав. Планшетник находится не в клиентской зоне банка, а за стойкой операциониста, и банк, если речь о банке, несет ответственность за действия сотрудника.
А в клиентской зоне подойдет некто с мобилой — потом выяснится, что форму и бэджик можно «в любом военторге купить» (с).
Погодите. Я не понял. А откуда в бизнес-процессах банка появился какой-то товарищ с телефоном, но в клиенской зоне? Так можно и человека со сканером под мышкой нафантазировать.
А если не в клиентской зоне, то сканер паспорта, болтами прикрученный к столу и проводами к компьютеру не имеет конкурентов. Он быстрый, понятный, его нельзя использовать неправильно и у него не садится батарейка.
У мобильника, подключенного к ПК, тоже ничего не садится. Стоит он вместе с пластиковой стойкой — 200-300 USD, против 1000 для паспортных сканеров со сравнимой скоростью работы. При этом ваши аргументы верны! Абсолютно очевидно, что провальная идея — добавить в мобильник фото-камеру. Зеркалки несравнимо лучше.
Я очень люблю, когда со мной беседуют, держа под рукой справочник демагога.
Использованный вами прием с фотоаппаратом — номер 42.
Использованный мною прием называется аналогией. Еще более авторитетный источник, чем ваш (а именно, Википедия), утверждает, что Стефан Банах, в частности, говорил: «Математик — это тот, кто умеет находить аналогии между утверждениями, лучший математик — тот, кто устанавливает аналогии доказательств, более сильный математик — тот, кто замечает аналогии теорий; но можно представить себе и такого, кто между аналогиями видит аналогии».
Я не приписывал вам суждения о зеркалках. Более того, ваши аргуметны действительно верны, здесь не было сарказма. И в случае зеркалок аргументы верны. Но они не соотносятся с ключевым вопросом. А ключевой вопрос — будет ли востребован продукт. На примере зеркалок я хотел показать, что совершенно неважно, есть ли более «правильный» аппарат, или нет.
Я имею ввиду — дал паспорт операционисту — он откидывается назад, достает свою мобилку, вытягивает паспорт на вытянутой руке и щелкает паспорт и дальше работает. Какие у вас мысли пойдут в голову? Примерно те же самые, если к вам на улице подойдет незнакомый человек и начнет фотать — вроде можно, но жутко неприятно.

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

Поймите, идея неплохая, но нужно, чтобы сменилось еще одно поколение, чтобы люди привыкли, что камеры в телефонах не только для выкладывания фоток в интернет, а что это рабочий инструмент.
Для банков мы не рассматриваем такой сценарий — он действительно может напугать. Мобильник может быть превращен в стационарный сканер с помощью копеечного пластикового крепления. Выигрыш при этом — в стоимости за счет серийности. Распознавание «с руки» предполагается в основном с мобильника самого клиента. Кроме того, страховые компании уже сейчас присылают своих сотрудников с фотоаппаратами для съемки в том числе документов, и люди мирятся с тем, что из кармана достается фотоаппарат. Думаю, для уже существующих процессов переход на мобильники будет вполне гладким.
Сама приблуда прикольная у вас получилась. А распознавалка (текста) у вас чья? Аббии? Тессеракт? ОупенОСиАр?
Движок (ядро, распознавалка) распознавания у нас полностью свой, разработанный специально для распознавания видео на мобильных устройствах.
Неинтересно — верю. Но медленно? Мобильное ядро у Аббии вполне шустрое. А бывшее когнитивное еще быстрее. Там, правда, качество другое.
В задаче распознавания паспорта для вышеперечисленных продуктов надо готовить изображение, а для этого надо понимать, как ядро устроено. Кроме того, имеются два соображения — зависимость и модифицируемость. С первым все просто: мы создаем продукт который, по идее, будет конкурировать с Abbyy; второе — если нас что-то не устраивает (скорость, качество), мы ничего не можем сделать. OpenOCR — большой, сложный, как-то отлаженный кусок кода. Переделывать его — задача глубоко нетривиальная и нам не нужная.
Ну уж аби не такое и шустрое, хотя качественное. Пошустрее у паспортвижн но у них в бете беда с качеством была. Как сейчас не знаю. Но в любом случае вы предлагаете вычисление на сервере, а товарищь пишет про клиента.
Вот это бы на почте внедрить. Дико раздражает по нескольку раз вводить свои паспортные данные при получении/отправке.

Вообще, ручной ввод своих данных, как я думаю, основная причина очередей на почте.
Есть способ еще проще: не требовать паспортные данные для получения и отправки почтовых отправлений. Во Франции на почте у меня просили айди только для того, чтобы удостовериться, что имя в квитке на получение совпадает с тем, которое указано в карте резидента.
При этом ничего никуда не вписывалось. Сотрудник почты удостоверился — ок.
Мы — скромная айти компания. Никто из наших сотрудников не баллотируется в президенты. Мы пытаемся улучшить то, что в нашей компетенции.
При курьерской доставке EMS они тоже паспорт просто для галочки спрашивают, нигде ничего писать и расписываться не надо.
Причина очередей на почте в том, что никто на почте не заинтересован обслуживать быстро :)
Я при получении паспорта сделал себе карманный штампик с паспортными данными.
Делов на 10 минут и 100р + оснастка(300).
Вот так выглядит



Уже лет десять все об этом ноют и никто ничего не сделал даже в рамках себя любимого.
Идея интересная, главное его не потерять.
Кстати там специально допущено несколько различий почти в каждом реквизите, никто пока особо не сверял и не заметил
2019 — ввели эл. подпись, получение по смс
А еще данные паспорта можно проверять через сайт ФМС — Проверка по списку недействительных российских паспортов (http://services.fms.gov.ru/info-service.htm?sid=2000), правда там капча, но её можно обойти.
Мы специально сделали Демо программу не взаимодействующей с внешним миром, мы не хотим передавать персональные данные, тех кто скачал и пробует нашу программу, куда либо или хранить их. Используя же наш SDK, этот запрос можно реализовать как online (соблюдая меры безопасности), так и offline с помощью списка недействительных паспортов, хотя при обмене по сетям общего доступа такой информацией лучше использовать хеш.
Капча не проблема, ФМС отдаёт список всех недействительных паспортов в заархивированном текстовом файле.
Файл однако достаточно большой: в CSV формате — ~1Гб, в bz2-архиве — ~320 Мб. При этом ежедневно обновляется, если верить сайту. Хранить на мобильнике вряд ли получится, можно конечно на каком-нибудь своем сервере его хранить… но тогда приложению доступ в сеть понадобится для проверки. Кроме того, проверять получится только серию и номер (только они в базе хранятся). Что делать если номер распознается с ошибкой в одной цифре, и результат окажется в базе?..
Размер дистрибутива тоже является важным параметром оптимизации, о котором уже подзабыли разработчики для десктопов. На мобильных устройствах размер пакета, зачастую, имеет критическое значение, иногда каждая сотня килобайт на счету.
Спасибо за уточнение. Этого я не учёл.
Но всегда можно сделать сервис для внутреннего пользования и заложить в его «API» какую0угодно сложную логику.
Такой сервис, в случае обеспечения безопасности и хорошего уровня QoS, был бы весьма полезен. Логично, чтобы он был услугой предоставляемой государством.
эта проверка работает через жопу. Поверьте, не надо её использовать.
Надо вообше все номера выложить в инете и мучатся не надо.

— Номера паспортов 164 членов Совета Федерации опубликованы на официальном портале государственных закупок. Персональные данные сенаторов (за исключением представителей Севастополя, Магаданской, Челябинской областей, Приморского края и Республики Татарстан) разместил в открытом доступе аппарат верхней палаты в составе документов контракта на оказание услуг по страхованию сенаторов от несчастных случаев и болезней.

По данным контракта паспортные данные сенаторов находятся в открытом доступе еще с сентября прошлого года.

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

top.rbc.ru/politics/17/03/2015/55085b0f9a79479d844ad14d
Ничего хорошего тут нет, каждый должен сам решать: публиковать персональные данные или нет. А за несанкционированную публикацию надо наказывать, в соотвествии с законом.
Очень классный проект. Любопытно почитать про ядро очень, если сами писали. Особенно как вы смогли по быстродействию его упихать в мобильник.Наверное какие-нибудь контурные/скелетные методы+SVM+много-много-много эмпирических априорных оценок? Вообще сталкивались с разработками CV на мобильниках не раз, но как-то неприятно CV методы под них разрабатывать. Всё медленно, коряво, неудобно, в 10 раз медленнее разрабатывать, чем на компе. Так что респект и уважуха:)
Большую часть времени в подобных задачах тратится на обработку изображений, а не на методы статистического распознавания. Над своей библиотекой обработки изображений мы работаем уже 5 лет. Функции там достаточно низкоуровневые, зато полностью «отжатые» на двух SIMD платформах: Intel SSE2, ARM NEON. Все «расшито» интринсиками. Есть как минимум три полезных алгоритма с предельной асимптотикой, которых нет в OpenCV: быстрое преобразование Хафа, морфологические фильтры по ван Херку — Гилу — Верману и быстрые Гауссовские свертки алгоритмом Дерише. Кроме того, мы всю обработку удерживаем в 8-битных целых, изредка расширяясь до 16-битных для хранения кумулятивных сумм. На всех этапах растр масштабируется до минимального размера, на котором задача еще разрешима. Заодно шум давится. Нет глубоких переборных схем. Бинаризации нет вообще, поэтому не возникает комбинаторный взрыв на разваленных символах. Нейронные сетки обучаются с раздутием (augmentation) обучающей выборки, в том числе сдвигами растра, поэтому неточности сегментации парируются сетками. Сами сетки — глубокие сверточные, вычисляются через Eigen, который очень хорошо разогнан под NEON. Сетки, к несчастью. пока в 32-битных флоатах считаются. Сейчас в другом продукте мы уже начали использовать целочисленные сетки (16 бит), так что скоро Паспорт РФ еще ускорится.
Подскажите, а под какие устройства Андроид-приложение? У меня на Dell Venue пишет «не поддерживается» (
В данный момент опубликована сборка под ARM, требования: наличие автофокуса. С Dell Venue будем разбираться, если не сложно уточните модель и версию операционной системы.
Dell Venue 7 3730, 4.4.2
Протестировал, первое что выглядит странным, это скан по времени. Почему не сканировать до тех пор, пока не распознает все поля?
И кнопка старт совсем плохо расположена.

Ну это так, мелочи, на будущее.
Отличный вопрос, более того, один из фундаментальных: как системе определить, что расползалось верно, если правильного ответа система не знает? Соответственно из этого вопроса вытекает – а когда остановиться? В нашем ядре реализовано сразу несколько подсистем которые работают над этим вопросом: система определения надежности результатов распознавания и система интеграции. Первая оценивает результат работы методов на каждом кадре для каждого объекта (зоны, поля, символа), вторая работает с потоком кадров и их результатов распознавания и выносит свой вердикт. В рамках планируемой статьи описывающей устройство ядра распознавания мы покажем место и функции этих систем, и если будет дальнейший интерес подготовим пост по этой тематике.
Над кнопкой поработаем.
В целом здорово! Однако, придётся адаптировать под паспорта других Государств (СНГ), как минимум + их заграничные версии! Но учитывая, что в скорости появится УЭК, и с ним надо тоже чего-то думать. Конечно, имея хороший движок, я думаю, что можно это добро всё адаптировать. Однако, всё равно возникает ряд нюансов… — Читать какие-нибудь паспорта Таджикистана с их шрифтами и т.п. Я думаю, что конечная цена приложения — будет весьма дорогой. Плюс ко всему, накладывается фрагментация мобильных платформ…
УЭК будем распознавать. Насчет паспортов и ID карт других стран — ведем работы, самое сложное это найти массивы для обучения, настройки и отладки — персональные данные. Нюансов, конечно, множество, но это и интересно. Фрагментация по процессорам и камерам требует внимания и если его прикладывать, то в конечном итоге, качество только растет.
Sign up to leave a comment.