Прошло около трех месяцев с момента создания нашего первого рабочего образца паспортного сканера. Получив хорошие результаты по качеству и скорости распознавания, мы, подняв на флаг практически Олимпийский девиз “Быстрее! Качественнее! Компактнее!”, приступили к созданию следующей модели ПАК. Если вам интересно, что у нас получилось в результате, добро пожаловать под кат.




Развитие в части камеры


Оптическая система является сердцем нашего ПАК. Поработав в первых версиях с web-камерой от Microsoft, нам удалось сформулировать ряд требований к камере для будущих моделей:
  1. Ручное управление фокусным расстоянием.
  2. Высокое разрешение получаемых кадров. Как оказалось, возвращаемые Microsoft-камерой 2 MPix является минимально допустимыми.
  3. Компактный размер.
  4. Наличие драйвера для различных платформ и операционных систем.
  5. Невысокая стоимость.

В результате мы остановились на бескорпусной малоформатной USB-камере MI5100 от известного китайского производителя систем видеонаблюдения и USB-камер ELP.



Дешевая, компактная, предоставляющая ручную фокусировку, возвращающая изображения до 5 MPix, функционирующая под различными операционными системами, эта “идеальная” на первый взгляд камера обладает несколькими недостатками:
  1. Видеопоток кодируется с помощью MJPEG с довольно низким качеством. В результате, получаемые кадры содержат характерные для JPEG артефакты, которые особенно сильно проявляются на контрастных границах. Но так как распознающее ядро затачивалось под изображения низкого качества, серьезных проблем эта особенность камеры не привнесла.
  2. Качество сборки находится на достаточно посредственном уровне. Например, чтобы плотнее посадить объектив пришлось прибегнуть к ленте ФУМ и изоленте ПВХ.

Развитие в части корпуса


Как и в первой модели, в качестве материала для корпуса мы выбрали мебельные листы ДСП. У такого решения есть несколько преимуществ:
  1. Легко собирать: напилить детали нужного размера можно прямо в крупных строительных магазинах, там же купить конфирматы для скручивания коробочки.
  2. Приятно осознавать, что промышленный образец гарантированно получится более компактным хотя бы за счет утончения стенок устройства.

Использование широкоугольной малогабаритной камеры позволило нам существенно уменьшить высоту устройства: 146 мм против 276 мм у предыдущего образца. ПАК предназначен для распознавания документов размера не более А5, что непосредственно определяет длину и ширину сканера.



Развитие в части автоматизации


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

Итак, в качестве основного вычислительного устройства выбран одноплатный 8-ядерный мини-компьютер Odroid-XU4, выполненный на архитектуре ARM. Одноплатный компьютер содержит четыре ядра Cortex-A15 с тактовой частотой 2,0 ГГц и четыре ядра Cortex-A7 с тактовой частотой 1,4 ГГц, 2 ГБ оперативной памяти, сетевой контроллер Gigabit Ethernet, два порта USB 3.0, один порт USB 2.0, а также HDMI для подключения монитора. В качестве операционной системы выбрали Lubuntu.



Собрав ядро распознавания на микро-компьютере (благо, трудностей тут не возникло, мы регулярно собираем SDK под мобильные платформы Android и iOS), убедившись, что документы распознаются мы встали перед вопросом — как будем возвращать результат распознавания клиенту наружу.

Первый очевидный подход — поднять на Odroid web-сервер и обращаться к нему за результатами распознавания. Легко в реализации, но не то, что мы хотели (а хотели мы именно автономное устройство, позволяющее сократить процедуру интеграции фактически до нуля).

Альтернативное решение пришло как всегда неожиданно. А что если научить наш ПАК притворяться USB-клавиатурой? Примерно как сканер штрих-кодов. В таком виде интеграция нашего ПАК в готовые информационные системы по сути заключается в присоединении устройства к пустому разъему USB и настройке (на устройстве) правильной последовательности нажатия “виртуальных” клавиш.

Вдохновившись идеей, докупили Odroid Shifter Shield, Arduino Micro, комплект проводов, пару кнопок и светодиод. Запрограммировали Arduino (благо, вместе с Arduino поставляется очень подробное руководство), “повесили” на кнопку запуск процедуры распознавания, на светодиод — обратную связь о качестве распознавания.

Будучи приверженцем поговорки “лучше один раз увидеть чем семь раз услышать”, делимся с вами видео работы полностью автономного сканера.



Заключение


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

Комментарии (28)


  1. den1s1
    18.04.2016 14:52
    -3

    Очередное «Программирование микроконтроллеров»?


    1. SmartEngines
      18.04.2016 15:55
      +2

      В нашем устройстве все вычисления выполняются на встроенном миникомпьютре Odroid XU4, а запрограммированный микроконтролллер Arduino micro используется в качестве эмуляции клавиатуры.


      1. Immortal_Buka
        18.04.2016 16:16

        тогда чему не С2 с OTG?


        1. SmartEngines
          18.04.2016 16:25

          Работа с XU4 у нас отработана, мы решили использовать знакомую модель, C2 с OTG рассматривали и рассматриваем на будушее, уже для промышленого применения, пока остаются вопросы с производительностью.


  1. GAlexander
    18.04.2016 16:21

    На мой взгляд кнопка далековато от стекла, что заставляет совершать лишние телодвижения.

    И вообще, если бы оно автоматически, при полном распознавании данных отправляло бы сразу информацию, было бы быстрее. А кнопку сделать как повтор операции распознавания/передачи.


    1. SmartEngines
      18.04.2016 16:27

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


      1. bormotov
        18.04.2016 17:37
        +1

        постарайтесь сделать так, что бы «отдельной кнопки» вообще не было.

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

        В эту сторону могут быть еще варианты, но суть одна — уже есть движение «паспорт прикладывается к стеклу», и это движение логично завершается сканированием.


        1. SmartEngines
          18.04.2016 18:04

          Мы двигаемся в сторону избавления ПАК от лишних кнопок. Чтобы избавиться от кнопки начала распознавания, мы планируем добавить в программу модуль, отслеживающий наличие нового документа на рабочей области.


        1. Alexufo
          18.04.2016 22:36

          В коммерческих сканерах нет никакого нажима. Все это забивается салом и грязью. Там либо ик датчик либо анализ видеопотока по обнаружению документа.


  1. serafims
    18.04.2016 16:48

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


    1. SmartEngines
      18.04.2016 17:40
      +2

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


  1. maxp
    18.04.2016 17:07

    По каким критериям выбрали Одроид? Интересуют аргументы за/против Orange Pi или других подобных.


    1. SmartEngines
      18.04.2016 18:46

      Задача распознавания паспорта вычислительно сложная, поэтому требуется достаточно мощный процессор. Выбирали мы с «запасом». Поэтому мы выбрали достаточно доступное и производительное решение — Odroid-XU4. Это не означает, что в будущем мы не перейдем на другие модели мини-компьютеров.


  1. VitonZizu
    18.04.2016 17:34

    Чем ваш вариант выигрывает у варианта сканер + допустим passport sdk?


    1. SmartEngines
      18.04.2016 17:59

      Если мы правильно поняли, то в Вашем комментарии маскируется два вопроса:

      1. Зачем изобретать велосипед, когда давно продаются планшетные сканеры

      Время сканирования документа А5 на самых быстрых планшетных сканерах составляет порядка 3 секунд. После получения изображения, процедура обработки полученного изображения и распознавания занимает порядка от 1 до 10 секунд (в зависимости от производительности ПК). Наше решение за счет мгновенного получения кадров позволяет распознать все паспортные данные за 1-2 секунды.

      2. Зачем встраивать компьютер в сканер, какое преимущество это дает.

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


  1. ABATAPA
    18.04.2016 17:34
    +2

    Напомнило geektimes.ru/post/274448


    1. SmartEngines
      18.04.2016 19:25
      +3

      Приведенная Вами ссылка вызывает у любого понимающего человека неподдельное негодование. Но не потому, что в планшете плохо припаяны провода или отсутствуют шурупы, а потому, медицинским работникам продали макет под видом серийного прибора. В процессе же разработки «кустарщина» — это нормально, поскольку позволяет ускорить разработку. Обратите внимание, что даже известные дизайнеры использую модели из пенопласта в процессе разработки (http://www.artlebedev.ru/everything/barrier/pitcher/process/). Качественным и красивым должен быть серийный прибор, поставляемый заказчику.


  1. vtulin
    18.04.2016 19:25

    Прошёл по ссылкам на камеру, но не нашёл цен: «дёшево» — это сколько? И почему вы акцентируете внимание на артефактах видео потока, разве вы разбираете не фотоснимки?


    1. SmartEngines
      18.04.2016 19:43

      На сайте AliExpress цены на данную модель камеры начинаются от 3 400 рублей.

      Наш движок распознавания паспортов позволяет существенно поднять качество распознавания документа в целом при работе с видеопоследовательностью за счет объединения распознанной информации с разных кадров.


      1. vtulin
        19.04.2016 15:52

        Не слишком то дёшево, по-моему.

        Офтоп: Логотип ваш понравился :)


        1. SmartEngines
          19.04.2016 16:55

          Раньше мы использовали Microsoft LifeCam Studio — 5 300 руб по яндексу. В процессе создания промышленного образца мы планируем улучшать все характеристики устройства, в том числе и снижать конечную цену.


  1. SmartEngines
    18.04.2016 19:39

    _


  1. Mugik
    18.04.2016 20:23
    -1

    Думаю ещё через 2-3 публикации он будет сканировать ещё быстрее. Вы даже ещё не включили его в розетку, а на экране уже распознанный паспорт.

    Нужна ещё более качественная камера, и он станет ещё более дешевый, чтобы эту коробку вместо сдачи давали в магазине.

    Ещё вот прямо бросается в глаза пустое место в коробке, можно туда вставить радио, пусть поёт песни, пока в очереди на распознавание стоят люди.


  1. esinev
    19.04.2016 00:48

    Перегревается ли Odroid XU4?
    По нашему опыту, под большими нагрузками наблюдаются внезапные зависания. Причем проявляется это примерно через наделю. Решили установкой дополнительного охлаждения.

    У XU4 четыры ядра медленных A7, и четыре быстрых A15.
    Вы выбираете ядра, где будет работать потоки программы распознавания?
    И насколько быстрее работает на A15, чем на A7?

    Какое ядро используете?
    От hardkernel 3.10 или с kernel.org?


    1. SmartEngines
      19.04.2016 13:20

      У нас проблем с перегревом не возникало, Odroid находится под большими нагрузками всего несколько секунд (непосредственно распознавание документа).

      Что касается быстрых и медленных ядер, то для наших задач ядра А7 оказываются более, чем в 10 раз медленнее А15. Поэтому при распараллеливании кода мы ограничиваем количество потоков до 4, чтобы помочь операционной системе задействовать именно быстрые ядра.


  1. sens_boston
    19.04.2016 09:59

    1-2 секунды на распознавание — это, конечно, хорошо. А как у вас обстоят дела с проверкой на аутентичность документа? Скажем, сумеете отличить наклеенную сверху копию странички чужого паспорта, распечатанную на струйнике, от настоящей? А переклеенную фотографию?

    P.S. Как мне кажется, подобная скорость (1-2 секунды) никому особо не нужна; человек соображает гораздо медленнее.


    1. SmartEngines
      19.04.2016 10:41

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


  1. oDhWUtZZ
    20.04.2016 17:14

    1-2 секунды на распознавание это очень много. Переходите на х86, есть много оптимизированных библиотек. На via c3 десятилетней давности весь процесс проверки укладывался с запасом, с IR, UV и даже RFID.