# Классификация документов

![](https://content.gitbook.com/content/7DoBBoXJ21Tl2UDe24h0/blobs/9kt3eEFddWzQO26ODzPs/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F.png)

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

## Сервис классификации:

1. Работает с фотографиями и сканами документов.
2. Находит на изображении все документы, даже если на одном скане присутствуют сразу паспорт, СНИЛС и водительские права.
3. Отделяет документы от фона. Например, от рук, столов или обоев в цветочек.
4. Поворачивает и при необходимости зеркально отражает документ.
5. Присваивает тип каждому найденному документу. Вы можете посмотреть, какие документы мы умеем классифицировать, в разделе [«Типы документов»](https://doc.dbrain.io/dbrain-official/tipy-dokumentov).

{% hint style="info" %}
Обратите внимание, что классификатор может вернуть в API такие типы:

* **other** — документ неизвестного типа
* **not\_document** — не документ, например, фото кота
* **empty** — пустая страница
  {% endhint %}

## Как начать работать с сервисом классификации документов

Есть 4 популярных способа взаимодействия с сервисом. Для любого из них вам нужен ключ лицензии. Чтобы получить ключ, напишите нам в[ телеграм](https://t.me/dbrain_support_bot) или на <hello@dbrain.io>.

Подготовьте изображение документа для теста. Если у вас такого нет, используйте [паспорт РФ из Википедии](https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B3%D1%80%D0%B0%D0%B6%D0%B4%D0%B0%D0%BD%D0%B8%D0%BD%D0%B0_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%B9_%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8#/media/%D0%A4%D0%B0%D0%B9%D0%BB:Pasport_RF.jpg).

<details>

<summary>Через терминал</summary>

Обратитесь к методу `/classify` по адресу [latest.dbrain.io](https://latest.dbrain.io/). В этом способе только два обязательных параметра:

* `token` — ваш ключ лицензии
* `image` — файл с изображением документа

Запрос curl должен выглядеть так:

```bash
curl -X 'POST' \
  'https://latest.dbrain.io/classify?token=xxx' \
  -H 'accept: application/json' \
  -H 'Content-Type: multipart/form-data' \
  -F 'image=@image.jpg;type=image/jpeg'
```

</details>

<details>

<summary>Через Swagger</summary>

* Подготовьте ключ лицензии
* Откройте [Swagger](https://latest.dbrain.io/docs) и нажмите кнопку `Authorize` в правом верхнем углу
* Введите свой токен в любое поле и нажмите `Authorize`
* Прокрутите вниз до раздела `Documents`, нажмите на метод `/classify`
* В открывшемся разделе нажмите на кнопку `Try it out`
* Прокрутите страницу вниз до раздела `Request body`
* Нажмите на кнопку `Выберите файл` пункта `image`
* Укажите изображение, которое нужно распознать
* Нажмите кнопку `Execute`
* Ответ сервиса появится в пункте `Response body` раздела `Responses`
* Полученный на этом этапе `Curl` мы рекомендуем использовать как основу для написания интеграции с API сервиса Dbrain

</details>

<details>

<summary>Через веб-демо</summary>

1. Откройте [demo.dbrain.io](https://demo.dbrain.io)
2. Введите ключ лицензии в поле «Введите токен»
3. Нажмите кнопку «Выберите файлы для распознавания»
4. Укажите изображение, которое нужно распознать
5. Нажмите кнопку «Классифицировать»

</details>

<details>

<summary>Через Python</summary>

{% code overflow="wrap" %}

```python
import requests

url = 'https://latest.dbrain.io/classify?token=xxx'
files = {'image': open('image.jpg', 'rb')}
headers = {'accept': 'application/json'}

response = requests.post(url, headers=headers, files=files)
```

{% endcode %}

Код использует библиотеку `requests` для отправки POST-запроса с файлом изображения. Функция `open()` используется для открытия файла изображения в двоичном режиме и передачи его в параметр `files`. Параметр `headers` используется для установки заголовка `accept` в значение `application/json`. Ответ от сервера сохраняется в переменной `response`.

Тело запроса передавайте в кодировке `UTF-8`.

</details>

## Параметры запроса к API

#### **Возврат найденных областей изображения**

{% hint style="success" %}
**return\_crops — boolean**
{% endhint %}

Поведение по умолчанию: **return\_crops**`=true` — сервис возвращает изображения найденных документов в параметре `crop`.

Если вам не нужны найденные сервисом изображения документов (например, в целях экономии трафика), укажите **return\_crops**`=false`.

{% hint style="info" %}
Перед началом работы с сервисами изучите раздел [«Общая информация о сервисах»](https://doc.dbrain.io/dbrain-official/obshaya-informaciya-o-servisakh). Там мы рассказываем про допустимые форматы файлов, виды запросов и ответов, набор HTTP-статусов и даём рекомендации по устранению ошибок
{% endhint %}

## В ответе API:

* `task_id` — string, идентификатор запроса, формат: 32 символа, 16-ричная строка
* `items` — массив, который содержит найденные документы
  * `document` — объект, который содержит один из найденных документов
    * `type`— string, тип найденного документа, возможные типы перечислены в таблице выше&#x20;
    * `rotation` — integer, ориентация документа
    * `coords` — массив, координаты документа на изображении по четырём точкам: верхний левый угол, верхний правый, нижний левый, нижний правый
    * `page` — integer, номер страницы, на котором найден документ, актуально для многостраничных форматов, например PDF
    * `confidence` — number, уровень уверенности алгоритма в корректности определения типа документа
  * `crop` — $string, изображение документа, отделённое от фона и правильно ориентированное, в бинарном формате
* `task_tags` — массив string, теги, если они переданы в параметре `task_tags`
* `page_count` — integer, число страниц в файле, актуально для PDF и DJVU
* `docs_count` — integer, число распознанных документов в файле
* `traceback` — string, сообщение об ошибке, которое содержит информацию о том, где произошла ошибка в коде и какие функции были вызваны перед ней. Это сообщение может помочь разработчикам понять причину возникновения ошибки и исправить ее. Передайте её нашей службе поддержки.

{% hint style="info" %}
Остальные поля не несут практического смысла. Оставили их для совместимости со старыми версиями.
{% endhint %}
