Гайд: как настроить API-распознавание документов за 30 минут

28.11.2024

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

Меня зовут Егор, я Python-разработчик, и часто взаимодействую с компаниями среднего и малого бизнеса в качестве внешнего подрядчика. Например, модернизирую CRM в стоматологических клиниках.

Один из последних запросов — прикрутить к CRM автоматическое распознавание паспорта РФ.

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

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

Для тех, кто сталкивается с похожими задачами по оптимизации процессов, я написал этот гайд.

Начало: как выбирали распознавание

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

С чем сравнивали: с другим облачным сервисом и SDK-решением для распознавания паспортов. Тестировал сам на открытых демо-стендах и смотрел сравнения в других источниках. Например, здесь.

Что хотел от сервиса заказчик:

  • соотношение цена/качество
  • функционал без излишеств (нормальные скорость и качество распознавания)
  • простая тарификация для небольших объёмов, минимум общения с поставщиком

Что в итоге понравилось мне:

  • интегрировал быстро, буквально ночью за чашкой кофе, оплатили вообще с карты

Начало работы

Чтобы начать работу с API, надо зарегистрироваться в личном кабинете сервиса.

При регистрации начисляют небольшой баланс для бесплатного тестирования – на 25 распознаваний. По запросу дали ещё 50 распознаваний.

В личном кабинете нас интересует раздел «Распознавание». Выбираем интересующий тип документа (в нашем случае – паспорт РФ, первый разворот и регистрация), прикрепляем PDF c двумя разворотами паспорта и начинаем распознавание.

Получаем заветные паспортные данные в формате JSON. Результаты вы можете наблюдать ниже:

Распознались все поля, включая сложные ключи, такие как машиночитаемые записи.

За расшифровкой всех ключей в ответе можно обратиться к документации: kyc.beorg.ru/reference_public/dev

25 бесплатных распознаваний

Подключение к API

Для подключения к API нам понадобится:

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

Нам необходимо взять с этой страницы:

  1. token: токен, по которому API может нас авторизовать
  2. machine_uid: номер машины, с которой планируется посылать запрос для разделения отслеживания документов со стороны клиента

project_id: идентификатор проекта

Общение по API должно происходить в соответствии со схемой:

Пишем скрипт:

***

import requests
import base64
from time import sleep

PATH_TO_IMAGE = «/home/usr/Downloads/41f28357a0b2464287415c383c7d1b7a.pdf»

PROJECT_ID = «U_RATE_2»
TOKEN = «<ваш токен>»
MACHINE_UID = «<ваш идентификатор машины>»

# вид документа
TYPE = «PASSPORT_REG»

# кодируем изображение в base64
with open(PATH_TO_IMAGE, «rb») as image_file:
image = base64.b64encode(image_file.read()).decode()
image_file.close()

# отправляем изображение документа в beorg
document = requests.post(
«https://api.beorg.ru/api/bescan/add_document»,
headers={«Content-Type»: «application/json», «Accept-Language»: «ru»},
json={
«project_id»: PROJECT_ID,
«token»: TOKEN,
«machine_uid»: MACHINE_UID,
«images»: [image],
«process_info»: [
{
«type»: TYPE
}
],
},

)

# достаем из ответа номер для отслеживания
document_id = document.json().get(«document_id»)

print(f»Номер для отслеживания: {document_id}»)

if document_id is not None:
# опрашиваем API пока не получим результат
result_req = requests.get(f»https://api.beorg.ru/api/document/result/{document_id}?token={TOKEN}»)

while result_req.status_code != 200:
print(«Документ обрабатывается»)
sleep(1)
result_req = requests.get(f»https://api.beorg.ru/api/document/result/{document_id}?token={TOKEN}»)

# достаем данные из ответа API
result = result_req.json()

print(«/////////////////////»)
print(«Результат:»)
print(result)

***

Тут все просто. Все обрабатывается на стороне Beorg. Также вы можете взять скрипт из репозитория на GitHub.

Вам нужно всего лишь посылать на API два вида запросов:

  1. Отправить документ
  2. Получить результат

В результате получаем подобный ответ:

Посмотреть виды запросов можно в документации или в разделе «Распознавание».

25 бесплатных распознаваний

Выводы

Вот так просто мы написали небольшой скрипт, который позволяет получить данные из паспорта (и не только паспорта…) за несколько минут.

Разумеется существуют и другие платные и бесплатные сервисы распознавания документов (например от Google), но, увы, он практически ушел с российского рынка, а мы оперируем в этом вопросе персональными данными.

Резюме по избранному сервису распознавания:

  1. Просто
  2. Быстро (за кофе)
  3. Без головной боли для меня, как разраба
  4. Хорошее качество за свои деньги

Оригинальный материал опубликован на ресурсе Tproger.

Работаем только с юридическими лицами

Работаем только с юридическими лицами.

    На указанный вами email мы автоматически пришлем презентацию.

    Работаем только с юридическими лицами.

    Вся информация по трудоустройству на странице "Вакансии"

    Ошибка: Контактная форма не найдена.

    Ошибка: Контактная форма не найдена.