# Антифрод

{% hint style="warning" %}
Данная версия сервиса устарела и больше не поддерживается. Рекомендуем использовать [Антифрод 2.0](https://doc.dbrain.io/servisy/proverka-dokumentov/antifrod-2.0).
{% endhint %}

Злоумышленники могут внести изменения в изображения документов. Сервис «Признаки подделки» ищет прямые и косвенные признаки того, что файл был умышленно модифицирован. Сервис не может гарантировать 100% защиты от злоумышленников, но позволяет автоматически отсеивать часть фрода и снижать нагрузку на операторов. Сервис запускает следующие проверки:

1. Проверка соответствия вида документа ожидаемому.
2. Определение паспортов, созданных в онлайн-генераторах документов.
3. Поиск визуальных признаков модификации паспорта в цифровых редакторах. Например, подмена отдельных символов, или фотографии, или целых полей.
4. Проверка метаданных изображения. По умолчанию метаданные присутствуют в любой фотографии или скане. Отсутствие метаданных — весомый повод отклонить документ. При наличии метаданных сервис проверяет их на внутреннюю непротиворечивость.
5. Логические проверки полей паспорта. Проверяем наличие всех полей и фотографии: серию-номер, регион по ОКАТО, дату выдачи, дату рождения, код подразделения, пол человека, сверяем визуальные поля с машиночитаемой зоной.
6. Проверяем источник изображения. Им может быть фотография, скан, скриншот или фотография экрана. Мы советуем отклонять изображения из последних двух источников, но в вашем бизнес-процессе также могут быть недопустимы сканы.
7. Проверяем цветность изображения. Рекомендуем отклонять чёрно-белые изображения.
8. Если вам заранее известны данные клиента (например, ФИО и дата рождения), сервис сверит их с написанными в документе с помощью функции сверки с внешним файлом.

{% hint style="info" %}
Проверки 2, 3 и 5 работают только для главного разворота паспорта РФ
{% endhint %}

{% hint style="success" %}
Чтобы воспользоваться сервисом, отправьте POST-запрос на URL

<https://latest.dbrain.io/check/fraud>
{% endhint %}

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

Вы можете использовать эти параметры при запросе к сервису определения подделок.

#### Асинхронный запрос

{% hint style="success" %}

#### async — boolean

{% endhint %}

Поведение по умолчанию: `async=false` — сервис обрабатывает запросы синхронно. При отправке запроса вы получите ответ только после окончательного завершения обработки запроса сервисом.

Если вам нужен асинхронный режим, укажите в запросе `async=true`. В ответ на запрос сервис вернёт в `response body` параметр `task_id`. Например:

```json
"task_id": "96b8ccc950a70699927036842c624d7c"
```

Используйте этот `task_id`, чтобы получить результаты классификации в методе `result`:

```bash
curl -X 'GET' \
  'https://latest.dbrain.io/result/96b8ccc950a70699927036842c624d7c?token=XXX' \
  -H 'accept: application/json'
```

Не забудьте указать в параметре `token` ваш ключ лицензии. Рекомендуем запрашивать метод `result` в цикле с периодом 1-2 секунды.

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

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

Поведение по умолчанию: `return_crops=false` — cервис не возвращает найденные области изображения.

Если вам нужны найденные сервисом области изображения, укажите `return_crops=true`. Сервис вернёт в ответе API в параметре crop найденные области изображения с лицами.

#### Тегирование запроса

{% hint style="success" %}
**task\_tags — string array**
{% endhint %}

Поведение по умолчанию: параметр не используется.

Функция тегирует запросы по вашему усмотрению. Это упрощает отслеживание пакетов документов, связанных с конкретным клиентом-физлицом. Для использования функции укажите в параметре `task_tags` удобный вам тег: `task_tags=тэг`

#### Ожидаемый тип документа

{% hint style="success" %}

#### doc\_type **— string**

{% endhint %}

Поведение по умолчанию: `doc_type=passport_main` — сервис ожидает изображение с главным разворотом паспорта РФ. Другие допустимые варианты doc\_type перечислены в разделе [«Типы документов»](https://doc.dbrain.io/obshaya-informaciya/tipy-dokumentov). Для проверки фотографии лица передайте тип not\_document.

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

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

## Тело запроса к API

#### Изображение

{% hint style="success" %}
**image — string ($binary)**
{% endhint %}

Изображение обязательно для передачи в запросе. Сервис ожидает изображение в двоичном виде.

#### Сверка полей с внешним файлом

{% hint style="success" %}
**fraud/verify\_fields — string ($binary)**
{% endhint %}

С помощью этой функции можно быстро сравнить данные клиента, которые вам известны. Например, ФИО с текстом в самом документе. Для использования функции дополнительно укажите JSON-файл в параметре **`verify_fields`**.

Ниже показан пример JSON-файла для сравнения серии-номера и ФИО из паспорта РФ с данными из документа:&#x20;

```javascript
{
  "series_and_number": "1111 222222",
  "surname": "Иванов",
  "first_name": "Иван",
  "other_names": "Иванович"
}
```

Для составления своего JSON-файла скопируйте наименования полей из [API-спецификации.](https://docs.google.com/spreadsheets/d/1_rN49no9kxDZb6rjwQtMlSZr8FO0mIE3qVQ2oPFIAZ4/edit#gid=0)

Функция сверки возвращает результат в атрибут `expected_text_missmatch`.

## В ответе на запрос к API:

* `task_id` — string, идентификатор запроса, формат: 32 символа, 16-ричная строка
* `error` — string, текстовое описание ошибки
* `task_tags` — array\[string], теги, если они переданы в параметре task\_tags
* `success` — boolean, статус запроса
  * `true` — запрос выполнен успешно
  * `false` — запрос не выполнен
* `status_code` — integer, HTTP-код статуса запроса
  * 200 — запрос выполнен успешно
  * 400, 403,  500 и т.д. — расшифрованы в «[общей информации о сервисах](https://docs.dbrain.io/obshaya-informaciya-o-servisakh#http-kody-otveta-na-zapros)»
* `result`
  * `input_image` — $string, [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) с MIME-типом JPEG в формате base64 — оригинал изображения, возвращается, если в запросе передать `return_crops=true`
  * `doc_type_missmatch` — boolean
    * `true` — найденный на изображении тип документа не соответствует ожидаемому
    * `false` — найденный на изображении тип документа соответствует ожидаемому
  * `generated_document` — `depricated, не используйте`
  * `visual_modifications`
    * `coords`— массив, в котором перечислены координаты подозрительных областей изображения документа по четырём точкам: верхний левый угол, верхний правый, нижний левый, нижний правый
    * `result` — boolean
      * `true` — нейросеть считает, что в файл вносили изменения в графическом редакторе либо он был сгенерирован в генераторе синтетических паспортов
      * `false` — нейросеть считает, что изображение не фейк
      * `null` — главный разворот Паспорта РФ не найден, поэтому проверка не запускалась
  * `metadata` — объект, содержащий информацию о метаданных
    * `not_present` — boolean
      * `true` — в файле отсутствуют метаданные
      * `false` — в файле найдены метаданные
    * `inconsistency` — boolean
      * `true` — в метаданных файла найдены противоречия
      * `false` — противоречия в метаданных файла не найдены
      * `null` — метаданные не найдены, проверка не запускалась
    * `maker` — string, производитель устройства
    * `model` — string, модель устройства
    * `software` — string, программное обеспечение, которое последним меняло изображение
    * `date_time` — объект, содержащий данные со всеми датами и временами, найденными в метаданных изображения:
      * `modify_date` — string, дата и время модификации изображения
      * `create_date` — string, дата и время создания изображения
      * `date_time_original` — string, оригинальные даты и время создания изображения
      * `gps_date_stamp` — string, дата и время снимка согласно GPS
    * `gps_coords` — объект, содержащий координаты согласно GPS метаданным:
      * `latitude_ref` — string, n или s — северная или южная широта, в которой сделан снимок &#x20;
      * `latitude` — string, широта снимка
      * `longitude_ref` — string, e или w — восточная или западная долгота, в которой сделан снимок
      * `longitude` — string, долгота снимка
      * `altitude_ref` — string, 1 или 0 — высота над уровнем моря или абсолютная&#x20;
      * `altitude` — string, высота над уровнем моря
  * `logical_inconsistency`
    * `result` — boolean
      * `true` — в данных документа найдены противоречия
      * `false` — в данных документа противоречия не найдены
      * `null` — главный разворот Паспорта РФ не найден, поэтому проверка не запускалась
    * `series_number_inconsistency` — boolean
      * `true` — серия или номер паспорта на разных страницах не совпадают друг с другом
      * `false` — серия или номер паспорта на разных страницах совпадают
    * `fake_series_okato` — boolean
      * `true` — серия паспорта содержит несуществующий номер ОКАТО
      * `false` — серия паспорта содержит допустимый номер ОКАТО
    * `series_mismatch_printing_year` — boolean
      * `true` — серия паспорта выходит за допустимый диапазон отклонения от даты выдачи паспорта
      * `false` — серия паспорта находится в допустимом диапазоне относительно даты выдачи паспорта
    * `issue_year_mismatch_date_of_birth` — boolean
      * `true` — дата выдачи паспорта находится вне допустимого диапазона относительно даты рождения для действительного паспорта
      * `false` — дата выдачи паспорта находится в рамках допустимого диапазона относительно даты рождения для действительного паспорта
    * `issue_code_mismatch_issue_authority` — boolean
      * `true` — код подразделения не соответствует полю «Паспорт выдан»
      * `false` — код подразделения соответствует полю «Паспорт выдан»
    * `fake_year_of_birth` — boolean
      * `true` — год рождения находится вне допустимого диапазона относительно текущей даты
      * `false` — год рождения находится в допустимом диапазоне относительно текущей даты
    * `photo_not_found` — boolean
      * `true` — фотография не найдена
      * `false` — фотография найдена
    * `photo_gender_mismatch` — boolean
      * `true` — пол на фотографии не соответствует тексту в поле «Пол»
      * `false` — пол на фотографии соответствует тексту в поле «Пол»
    * `mrz_presence_mismatch_issue_year` — boolean
      * `true` — наличие или отсутствие машиночитаемой зоны паспорта невозможно при такой дате выдачи паспорта
      * `false` — наличие или отсутствие машиночитаемой зоны паспорта возможно при такой дате выдачи паспорта
    * `visual_field_missing` — boolean
      * `true` — одно или несколько обязательных полей паспорта не найдено
      * `false` — найдены все поля паспорта
    * `visual_fields_mismatch_mrz` — boolean
      * `true` — данные визуальных полей не совпадают с данными из машиночитаемой зоны
      * `false` — данные визуальных полей совпадают с данными из машиночитаемой зоны
  * `image_origin` — string, источник изображения, может принимать одно из четырёх значений:
    * `photo` — фотография
    * `scan` — скан
    * `screenshot` — скриншот
    * `monitor_photo` — фотография экрана
  * `image_no_color` — boolean
    * `true` — изображение чёрно-белое
    * `false` — изображение цветное
  * `expected_text_mismatch` — boolean
    * `true` — данные в документе не совпали с ожидаемыми
    * `false` — данные в документе совпали с ожидаемыми
    * `null` — проверка не запускалась, выводится в случае, если вы не подали JSON на вход.

{% hint style="info" %}
Параметры `fake` и `is_fake_visual` в ответе метода `recognize` теперь не отражают результаты проверок на признаки подделки. Мы оставили их для совместимости API
{% endhint %}
