От паспортного сканера к автономному распознающему устройству

в 11:39, , рубрики: arduino, ocr, odroid, smartengines, Блог компании Smart Engines Ltd., обработка изображений, Программирование, программирование микроконтроллеров, Разработка под Linux, распознавание образов, метки:

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

От паспортного сканера к автономному распознающему устройству - 1

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

Оптическая система является сердцем нашего ПАК. Поработав в первых версиях с web-камерой от Microsoft, нам удалось сформулировать ряд требований к камере для будущих моделей:

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

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

От паспортного сканера к автономному распознающему устройству - 2

Дешевая, компактная, предоставляющая ручную фокусировку, возвращающая изображения до 5 MPix, функционирующая под различными операционными системами, эта “идеальная” на первый взгляд камера обладает несколькими недостатками:

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

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

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

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

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

От паспортного сканера к автономному распознающему устройству - 3

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

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

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

От паспортного сканера к автономному распознающему устройству - 4

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

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

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

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

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

Заключение

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

Автор: Smart Engines Ltd.

Источник


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


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