Обработка паспортных данных в среде Matlab | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Автор:

Рубрика: Технические науки

Опубликовано в Молодой учёный №2 (188) январь 2018 г.

Дата публикации: 15.01.2018

Статья просмотрена: 441 раз

Библиографическое описание:

Роженко, Д. Н. Обработка паспортных данных в среде Matlab / Д. Н. Роженко. — Текст : непосредственный // Молодой ученый. — 2018. — № 2 (188). — С. 39-44. — URL: https://moluch.ru/archive/188/47748/ (дата обращения: 18.12.2024).



Компания N занимается организацией и проведением онлайн — игр. Одним из обязательных условий для участия в игре для пользователя является регистрация аккаунта, в котором для подтверждения личности необходимо заполнить паспортные данные и загрузить электронную копию паспорта, удовлетворяющую требованиям:

– Формат изображения: JPG.

– Минимальный размер в пикселях: 500х500.

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

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

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

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

Таким образом, каждый пользователь может зарегистрировать более одного аккаунта, имея всего лишь одну цифровую копию документа. Для предотвращения подобных действий, было найдено решение:

Перед каждым турниром производится выгрузка пользователей, которая содержит текстовый файл с паспортными данными и цифровую копию документа.

На локальных машинах программно проверяется соответствие введенных данных и данных на цифровой копии паспорта.

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

Данный файл передается модератору, который и принимает решение о допуске учетной записи и игрока к турниру.

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

Оптимизация задачи

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

\\FILE-SERVER\incoming\Rozhenko_DN.204\обработка изображений\Pasport_RF.jpg

Рис. 1. Страница паспорта — исходные данные

Область, содержащая серию и номер паспорта, выделена пунктиром. Как видно из рисунка, на цифровой копии документа поля серии и номера встречаются дважды. Это означает, что для поиска можно взять лишь половину исходного изображения и данные все равно гарантированно будут находиться в рассматриваемой области. С целью уменьшения количества вычислений, следует преобразовать цветное изображение в черно — белое. Пусть исходное цветное изображение имеет разрешение 500х1000 пикселей. Тогда для работы с таким изображением потребуется 3 двумерных массива (r,g,b — составляющие, формирующие цвет) с размерностью 500х1000. Если заменить исходное изображение на черно –белое, содержащее лишь верхнюю половину документа, то потребуется всего 1 двумерный массив с размерностью 500х500 пикселей. Очевидно, что подобного рода решение заметно ускорит работу программы. На рисунке 2 представлена рассматриваемая область после замены изображения.

\\FILE-SERVER\incoming\Rozhenko_DN.204\обработка изображений\Pasport_new.jpg

Рис. 2. Оптимизированная область поиска

Необходимо из данной области выделить подобласть, содержащую серию и номер (выделена штрихами). Самый просто и безошибочный способ — определить координаты прямоугольника. Для этого разобьем исходную область на одинаковые прямоугольники. В данном случае оптимальное число — 50 прямоугольников: 10 по горизонтали и 5 по вертикали. Один такой прямоугольник составляет 2 % от оптимизированной области. Серия и номер паспорта занимают 6 % или 3 прямоугольника от оптимизированной области.

\\FILE-SERVER\incoming\Rozhenko_DN.204\обработка изображений\Pasport_new.jpg

Рис. 3. Разбиение на подобласти

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

Разработка программы

Для работы данной программы необходим пакет Image Processing Toolbox. Данный фрагмент реализует оптимизацию области поиска.

Следующим шагом необходимо реализовать поиск подобласти, содержащей серию и номер паспорта с последующим распознаванием.

На этапе написания программы, был обнаружен случай, при котором корректная работа не гарантируется. Предположим, что изображение, которое загрузил пользователь, перевернуто. Тогда область, которую обрабатывает программа, не будет содержать серию и номер. Данный случай проиллюстрирован на рисунке 4.

\\FILE-SERVER\incoming\Rozhenko_DN.204\обработка изображений\valid.jpg

Рис. 4. Ошибка алгоритма

Решение данной проблемы реализовано в следующих строчках кода:

Следующий шаг, выделение области, в которой был найдет текст и его преобразование в цировой вид из символов:

В качестве промежуточного теста, представим, что у нас уже есть в таблице переменная input, содержащая значение данных с поля. Сравним её со строкой, которая была получена в результате работы с графическим файлом и сделаем вывод на экран:

Анализ работы программы

Рассмотрим пошагово выполнение алгоритма.

  1. Получение данных с поля: input = '11 04 000000';
  2. Открытие фала и его первичная оптимизация c выделением области для распознавания:

  1. Распознавание текста из области, выделение опознанных фрагментов:

  1. Проверка опознанных данных с данными, что были введены в поле:

  1. *Изменим входные данные, сделав их отличными от тех, что на паспорте и повторим процедуру проверки: input = '11 04 000001';

Во втором случае программа обнаружила несоответствие и сообщила об этом пользователю.

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

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

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

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

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

Основные термины (генерируются автоматически): данные, номер паспорта, исходное изображение, JPG, выделение области, исходная область, написание программы, страница паспорта, цель уменьшения, цифровая копия документа.


Задать вопрос