Как извлечь машиночитаемые зоны из паспортного изображения с помощью Python, используя библиотеку PassportEye

Машиночитаемый паспорт (MRP) — это машиночитаемый проездной документ (MRTD) с данными на идентификационной странице, закодированными в формате оптического распознавания символов. Большинство проездных паспортов по всему миру являются MRP. Он может иметь 2 или 3 строки машиночитаемых данных. Этот метод позволяет обрабатывать МСЗ, написанные в соответствии с Документом ИКАО 9303 (одобренным Международной организацией по стандартизации и Международной электротехнической комиссией как ISO / IEC 7501-1)). Некоторым приложениям нужно будет каким-то образом сканировать такие данные, поэтому один из самых простых способов — это распознать их из файла изображения.

В этой статье мы покажем вам, как получить информацию MRZ из изображения паспорта, используя библиотеку PassportEye из Python.

Требования

Вам понадобится Ose Engine Tesseract, установленный в вашей системе и доступны из PATH. Вы можете легко установить этот инструмент в любой системе (Unix или Windows), поэтому проверьте официальный репозиторий на Github здесь.

Вы также можете проверить доступность tesseract из cli с помощью следующей команды:

tesseract --help

1. Установите PassportEye

PassportEye — это библиотека Python для обработки изображений документов, удостоверяющих личность, которые используют машиночитаемый формат путешествия. Этот пакет предоставляет набор инструментов для распознавания машиночитаемых зон (MRZ) по отсканированным идентификационным документам. Документы могут быть расположены довольно произвольно на странице — код пытается найти что-то похожее на MRZ и проанализировать его оттуда. Процедура распознавания может быть довольно медленной — около 10 или более секунд для некоторых документов. Его точность не идеальна, но все же выглядит прилично с точки зрения тестовых документов, доступных разработчику — примерно в 80% случаев, когда на странице четко видна МСЗ, система распознает ее и извлекает текст для лучшие из возможностей базового механизма OCR (Google Tesseract).

Вы можете установить эту библиотеку, используя следующую команду:

pip install PassportEye

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

2. Использование PassportEye из CLI

Библиотека PassportEye будет глобально отображать команду mrz, этот инструмент будет обрабатывать заданное имя файла, извлекать найденную информацию MRZ и распечатывать ее в табличной форме. Бег mrz --json выведет ту же информацию в формате JSON. Бег mrz --save-roi Кроме того, извлечет обнаруженную MRZ («область интереса») в отдельный файл png для дальнейшего исследования. Обратите внимание, что инструмент обеспечивает ограниченную поддержку файлов PDF — он пытается извлечь первое изображение в формате DCT из PDF и применяет распознавание к нему. Кажется, что это нормально работает с большинством одностраничных PDF-файлов, созданных сканерами, но не было тщательно протестировано.

Основное использование команды заключается в следующем:

mrz image.jpg

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

mrz image.jpg --json

Это выведет со следующим изображением, например:

Пример PassportEye

Следующие данные:

{
"mrz_type": "TD3",
"valid_score": 62,
"type": "P<",
"country": "PRT",
"number": "1700044<<",
"date_of_birth": "740407",
"expiration_date": "220616",
"nationality": "PRT",
"sex": "F",
"names": "INES",
"surname": "GARCAO DE MAGALHAES",
"personal_number": "99999999<<<<<<",
"check_number": "9",
"check_date_of_birth": "6",
"check_expiration_date": "1",
"check_composite": "0",
"check_personal_number": "8",
"valid_number": false,
"valid_date_of_birth": true,
"valid_expiration_date": true,
"valid_composite": false,
"valid_personal_number": true,
"method": "direct",
"walltime": 2.2025797367095947,
"filename": "image.jpg"
}

3. Использование Python API

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

# Import PassportEye
from passporteye import read_mrz
# Process image
mrz = read_mrz("passport_image.jpg")
# Obtain image
mrz_data = mrz.to_dict()
print(mrz_data['country'])
print(mrz_data['names'])
print(mrz_data['surname'])
print(mrz_data['type'])
# And so on with the rest of shown properties in the previous JSON string
Ссылка на основную публикацию
Adblock
detector