# Антифрод

{% hint style="warning" %}
Данная версия сервиса устарела и больше не поддерживается. Рекомендуем использовать [Антифрод 2.0](/servisy/proverka-dokumentov/antifrod-2.0.md).
{% 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 перечислены в разделе [«Типы документов»](/obshaya-informaciya/tipy-dokumentov.md). Для проверки фотографии лица передайте тип not\_document.

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

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

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

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

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

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

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

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

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

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

```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 — северная или южная широта, в которой сделан снимок
      * `latitude` — string, широта снимка
      * `longitude_ref` — string, e или w — восточная или западная долгота, в которой сделан снимок
      * `longitude` — string, долгота снимка
      * `altitude_ref` — string, 1 или 0 — высота над уровнем моря или абсолютная
      * `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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dbrain.io/servisy/proverka-dokumentov/priznaki-poddelki.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
