Данное web-приложение помогает распознавать фамилию, имя, отчество со сканированных копий паспортов РФ.
Использовалось:
Yii2,PHPMySQLOpenCV,PythonTesseractRabbitMQdocker,docker-compose
-
Загружаем файл скана паспорта. Для примера можно взять файл с википедии, он скопирован в данный репозиторий в
/test-data/imyarek.jpg.

gitdocker(тестировалось на версии 18.09.7)docker-compose(тестировалось на версии 1.17.1)
git clone https://github.com/log95/passport-recognition.gitcd passport-recognitioncp env.sample .env- В скопированном файле
.envзадаём пароли для 4 переменных:WEB_DB_PASSWORDWEB_USER_ADMIN_PASSWORDANALYSIS_DB_PASSWORDQUEUE_SERVER_PASSWORD
- Выполняем сборку
docker-compose build. Скачивание и сборка образов займёт время. - Поднимаем все сервисы
docker-compose up -d. Также нужно время, чтобы установились все зависимости черезcomposer, выполнились миграции бд. - На сервере будет выполнен проброс 80 порта на 80 порт Docker контейнера, 80 порт не должен быть занят. Теперь можно заходить на IP адрес вашего сервера через браузер, должна открыться стартовая страница.
Приложение реализовано в виде распределённой системы на основе Docker контейнеров.
Функционал системы сделан в виде связки основного приложения для пользователя, сервера очередей и 3 сервисов, которые обеспечат распознавание ФИО со скана паспорта.

- Пользовательское приложение (
Yii2,PHP,MySQL,Nginx). Через данное приложение пользователь загружает файлы сканированных паспортов и получает результат в удобном интерфейсе. - Сервер очередей (
RabbitMQ). Сервер очередей является связующим звеном между остальными компонентами. Все компоненты изолированы друг от друга, и знают только об очереди сообщений, из которой брать входные данные, и об очереди сообщений, в которую передавать результат. - Сервис обработки изображения (
OpenCV,Python). Задача: обработать изображение для лучшего распознавания. Данный сервис получает на вход изображение сканированного паспорта, на выходе отдаёт обработанные изображения, содержащие фамилию, имя, отчество. - Сервис распознавания изображения (
Tesseract). Задача: распознать текст на изображении. Данный сервис получает на вход массив изображений, на выходе отдаёт распознанный текст изображений. - Сервис анализа текста (
Python,MySQL). Задача: из массива текстов отобрать действительное имя, фамилию, отчество. Данный сервис получает на вход массив текстов, на выходе отдаёт имя, фамилию, отчество.


