Перейти к содержанию

Document Recognition V2#

Описание#

Document Recognition V2 - это обновленная версия технологии распознавания документов, которая предоставляет расширенные возможности для анализа и проверки документов. Технология включает в себя комплексную проверку качества изображений, распознавание различных типов документов, проверку MRZ ( машиночитаемой зоны), а также оценку подлинности документов на основе различных параметров безопасности.

Основные преимущества V2:

  • Детальная проверка качества изображений (фокус, блики, разрешение, яркость)
  • Расширенные оптические проверки документов
  • Улучшенное распознавание типов документов с оценкой уверенности
  • Поддержка многостраничных документов
  • Подробная информация о результатах проверок

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


Этапы:#

1. Получение API-KEY организации#

Первый этап для использования технологии - получение API-KEY организации. Чтобы получить API-KEY организации, необходимо зайти в Личный Кабинет по данной ссылке. API-KEY находится в поле Backend Api Key

backend_api_key

Пример API-KEY организации:

API-KEY: Efy202XKbVAWRu...

Примечание

Для наглядности используется укороченная длина API KEY. Его фактическая длина составляет 47 и более символов.

2. Отправка запроса для сканирования документа#

В запросах к сервису используются данные в формате multipart/form-data. Ответные данные от сервиса будут представлены в формате JSON.

URL запроса:

https://kyc.biometric.kz/api/v2/backend/document/process/

Формат запроса Метод запроса
multipart/form-data POST

API KEY необходимо передать в теле запроса:

Наименование поля Тип Обязательно Описание
api_key String Да API KEY организации в личном кабинете
file File[] Да Файлы документов для обработки

Важно

В отличие от первой версии API, V2 позволяет загружать несколько изображений документа одновременно в массиве file.

Пример запроса#

curl -X 'POST' \
'https://kyc.biometric.kz/api/v2/backend/document/process/' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'api_key=<YOUR_API_KEY>' \
-F 'file=@kz-id-front.jpg;type=image/jpeg' \
-F 'file=@kz-id-back.jpg;type=image/jpeg'
import requests

url = 'https://kyc.biometric.kz/api/v2/backend/document/process/'

files = [
    ('file', ('document-front.jpg', open('kz-id-front.jpg', 'rb'), 'image/jpeg')),
    ('file', ('document-back.jpg', open('kz-id-back.jpg', 'rb'), 'image/jpeg'))
]

data = {
    'api_key': '<YOUR_API_KEY>'
}

response = requests.post(url, files=files, data=data)
print(response.json())
const formData = new FormData();
formData.append('api_key', '<YOUR_API_KEY>');
formData.append('file', document.querySelector('#frontside').files[0]);
formData.append('file', document.querySelector('#backside').files[0]);

fetch('https://kyc.biometric.kz/api/v2/backend/document/process/', {
    method: 'POST',
    body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.log('error', error));

Пример ответа#

Описание полей в ответе#
  • backend_session_id - Уникальный идентификатор сессии

  • optical_checks - Результаты оптических проверок документа:

    • overall_status - Общий статус проверок
    • doc_type - Статус проверки типа документа
    • expiry - Проверка срока действия документа
    • image_qa - Проверка качества изображения
    • mrz - Проверка машиночитаемой зоны
    • pages_count - Количество страниц документа
    • security - Проверка элементов защиты
    • text - Проверка читаемости текста
  • quality_checks - Результаты проверки качества для каждой страницы документа:

    • image_glares - Проверка отсутствия бликов на изображении
    • image_focus - Проверка четкости изображения
    • image_resolution - Проверка разрешения изображения
    • image_colorness - Проверка цветопередачи изображения
    • perspective - Проверка корректности угла съемки
    • bounds - Проверка видимости границ документа
    • portrait - Проверка качества фотографии в документе
    • brightness - Проверка уровня освещенности
    • page - Идентификатор страницы документа
  • document_types - Информация о типах документов:

    • name - Наименование документа
    • type - Тип документа. Все типы документов перечислены здесь
    • type_id - Системный идентификатор типа документа
    • issue_year - Год выпуска формы документа
    • issuing_country - Страна выдачи документа
    • has_rfid - Наличие RFID-чипа в документе
    • has_mrz - Наличие машиночитаемой зоны
    • format - Формат документа в системе
    • country_code - Код страны по стандарту ISO
    • prediction - Уровень уверенности в определении типа документа
    • required_light_schemes - Требуемые схемы освещения для проверки
    • authenticity_light_schemes - Схемы освещения для проверки подлинности
    • page - Номер страницы документа
    • document_id - Внутренний идентификатор документа в системе
  • visual_text_json - Текстовые данные, извлеченные из визуальной зоны документа. Все наименование полей, которые могут быть возвращены, перечисленны здесь

  • mrz_text_json - Данные, извлеченные из машиночитаемой зоны. Все наименование полей, которые могут быть возвращены, перечисленны здесь

  • images - Изображения документа и его элементов:

    • type - Тип изображения. Все возможные типы изображений перечисленны здесь
    • content - Изображение в формате base64
    • page - Номер страницы для изображений документа
Пример ответа в формате JSON#
{
  "backend_session_id": "54dc1539-f9a4-4488-8e0d-04e87f86bcbe",
  "optical_checks": {
    "overall_status": true,
    "doc_type": true,
    "expiry": true,
    "image_qa": true,
    "mrz": true,
    "pages_count": 2,
    "security": true,
    "text": true
  },
  "quality_checks": [
    {
      "image_glares": true,
      "image_focus": true,
      "image_resolution": true,
      "perspective": true,
      "bounds": true,
      "portrait": true,
      "page": 0
    },
    {
      "image_glares": true,
      "image_focus": true,
      "image_resolution": true,
      "perspective": true,
      "bounds": true,
      "page": 1
    }
  ],
  "document_types": [
    {
      "name": "Kazakhstan - Id Card (2014) Side B",
      "type": "identity_card",
      "type_id": 12,
      "issue_year": "2014",
      "issuing_country": "Kazakhstan",
      "has_rfid": true,
      "has_mrz": true,
      "format": 0,
      "country_code": "KAZ",
      "prediction": 0.9406079649925234,
      "required_light_schemes": 25165824,
      "authenticity_light_schemes": 3224,
      "page": 1,
      "document_id": -1040772430
    },
    {
      "name": "Kazakhstan - Id Card (2014-2022)",
      "type": "identity_card",
      "type_id": 12,
      "issue_year": "2014-2022",
      "issuing_country": "Kazakhstan",
      "has_rfid": false,
      "has_mrz": false,
      "format": 0,
      "country_code": "KAZ",
      "prediction": 0.9425698518753053,
      "required_light_schemes": 25165824,
      "authenticity_light_schemes": 152,
      "page": 0,
      "document_id": -1040772594
    }
  ],
  "visual_text_json": {
    "surname_and_given_names": "ИВАНОВ ИВАН",
    "years_since_issue": "4",
    "age_at_issue": "24",
    "place_of_birth": "КАЗАХСТАН, АЛМАТЫ",
    "authority": "МВД РЕСПУБЛИКИ КАЗАХСТАН",
    "date_of_issue": "01.01.2020",
    "nationality": "КАЗАХ",
    "surname": "ИВАНОВ",
    "given_names": "ИВАН"
  },
  "mrz_text_json": {
    "document_class_code": "ID",
    "age": "29",
    "nationality": "Kazakhstan",
    "issuing_state_name": "Kazakhstan",
    "remainder_term": "63",
    "final_check_digit": "7",
    "nationality_code": "KAZ",
    "date_of_expiry_check_digit": "8",
    "date_of_expiry": "01.01.2030",
    "sex": "M",
    "date_of_birth_check_digit": "7",
    "date_of_birth": "01.01.1995",
    "personal_number": "950101300123",
    "mrz_strings": "IDKAZ0123456789950101300123<<<^9501017M3001018KAZ<<<<<<<<<<<7^IVANOV<<IVAN<<<<<<<<<<<<<<<<",
    "document_number_check_digit": "1",
    "document_number": "012345678",
    "issuing_state_code": "KAZ",
    "last_name": "IVANOV",
    "first_name": "IVAN",
    "given_names": "IVAN",
    "surname": "IVANOV",
    "mrz_type": "ID-1",
    "surname_and_given_names": "IVANOV IVAN",
    "line_2_optional_data": "KAZ",
    "optional_data": "950101300123"
  },
  "images": [
    {
      "type": "portrait",
      "content": "base64"
    },
    {
      "type": "signature",
      "content": "base64"
    },
    {
      "type": "bar_code",
      "content": "base64"
    },
    {
      "type": "document_front",
      "content": "base64",
      "page": 0
    },
    {
      "type": "document_front",
      "content": "base64",
      "page": 1
    },
    {
      "type": "ghost_portrait",
      "content": "base64"
    }
  ]
}