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

28.11.2024

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

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

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

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

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

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

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

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

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

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

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

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

  • интегрировал быстро, буквально ночью за чашкой кофе, оплатили с карты;
  • документация просто и понятно составлена, есть swagger;
  • минимум общения с поставщиком.

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

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

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

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

Личный кабинет — раздел Распознавание

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

Результат распознавания паспорта в формате JSON

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

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

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

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

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

Раздел Проекты в личном кабинете

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

Ключи доступа к API — token, machine_uid, project_id

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

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

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

Схема взаимодействия с 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. Получить результат.

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

Пример ответа API с распознанными данными паспорта

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

Примеры запросов к API в разделе Распознавание

Выводы

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

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

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

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

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

Часто задаваемые вопросы

Что нужно для подключения к API «Биорг.Паспорт»?

Для подключения понадобятся: Python 3, библиотеки base64 и requests, а также ключи доступа из личного кабинета — token, machine_uid и project_id. Документация с описанием всех эндпоинтов и примерами запросов доступна по адресу kyc.beorg.ru/reference_public/dev.

Можно ли бесплатно протестировать API распознавания документов?

Да. При регистрации в личном кабинете начисляется баланс на 25 бесплатных распознаваний. По запросу можно получить ещё 50 тестовых распознаваний. Оплата за реальные распознавания возможна с карты физического лица.

Какие документы умеет распознавать API Биорг?

API поддерживает распознавание паспортов РФ (первый разворот и страница с регистрацией), водительских удостоверений, ПТС и других документов, удостоверяющих личность. Тип документа задаётся параметром type в запросе, например PASSPORT_REG для паспорта с пропиской.

В каком формате API возвращает данные из документа?

API возвращает данные в формате JSON. В ответе содержатся все распознанные поля документа, включая сложные ключи — например, машиночитаемые записи (MRZ). Полный список ключей с расшифровкой доступен в документации по адресу kyc.beorg.ru/reference_public/dev.

Как работает схема взаимодействия с API?

Схема состоит из двух запросов: сначала отправляется изображение документа (POST на /api/bescan/add_document), в ответ приходит document_id для отслеживания. Затем по этому идентификатору выполняется GET-запрос на /api/document/result/{document_id} до получения результата со статусом 200.

Можно ли интегрировать API распознавания документов в CRM или другую систему?

Да. API легко интегрируется в любую систему, которая поддерживает HTTP-запросы. В статье описан пример интеграции в CRM стоматологической клиники на Python. Готовый скрипт доступен на GitHub. Для коммерческих систем достаточно подставить свои ключи доступа из личного кабинета.

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

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

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

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

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

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

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

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

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