17 - Фотоверифікація


Сервіс перевірки автентичності особи на фото.


Сервіс дозволяє аналізувати фотографії клієнтів в кредитних заявках:

  • верифікація клієнта (підтвердження особи),

  • запобігання шахрайству,

  • виявлення фактів крадіжки особистості - злочин, при якому персональні дані людини використовуються для незаконного отримання матеріальної вигоди (окремі випадки: фальсифікація і підробка документів, в найпростішому випадку - заміна фото в паспорті).

В основі сервісу фотоверифікаціі УБКІ - Microsoft Face API


Схема роботи сервісу фотоверифікаціі

Технологічна схема сервісу

Вимоги до фотографії

1. Максимальний розмір запиту із закодованою фотографією - 2 МБ.

2. Тип файлу - jpeg/jpg

3. XML запит - фото base64

4. Більш висока якість зображення особи означає кращу точність розпізнавання: фронтальний, прозорий і розмір особи - 200x200 пікселів (100 пікселів між очима) або більше.

5. Площа особи на фотографії повинна становити максимальну можливу частку від усього зображення;

6. Фотографія повинна бути чітка, не розмита;

7. Колір і яскравість фону повинні забезпечувати надійне визначення контуру голови.

8. Розташування та освітлення:

- Розташування голови - без поворотів, прямо, погляд спрямований строго на камеру. Нахили або повороти голови в будь-якому напрямку або зміни фокуса особи приведуть до спотворення результатів порівняння;

- На фоні не повинно бути тіней від голови, не повинно бути тіней на обличчі або будь-яких предметів;

- На зображеннях особи не рекомендується закритих очей; волосся, що закривають очі і обличчя;

- На зображеннях осіб не рекомендується світлових відблисків і тіней;

- Не рекомендуються фото з фоном: вулиця, машина, паркани, дерева та ін.

9. Окуляри і головні убори:

- На зображеннях не рекомендуються елементи одягу, що закривають (частково або повністю) особу, тобто капелюхів, хусток і т.д .; товстих оправ окулярів, які деформують риси обличчя;

- На зображеннях не рекомендується відображення спалахів або підсвічуваних відображень в склах лінз або окулярів.

10. Вираз і кадр:

- За зображенням обличчя не рекомендується наявність осіб інших людей;

- Погляд на камеру повинен бути з нейтральним виразом обличчя і закритим ротом.

Http Method

POST

Request JSON
( ** параметри передаються опціонально)

{

"doc": {

"ubki": {

"req_envelope": {

"req_xml": {

"request": {

"i": {

"ident": {

"okpo": "РНОКПП (ІПН) (для фіз.осіб)/ЄДРПОУ (для юр.осіб)",

"lname": "**Прізвище",

"fname": "**Ім'я",

"mname": "**По батькові",

"bdate": "**Дата народження"

},

"fotoverif": {

"freqtype": "Тип запиту",

"inn": "РНОКПП (ІПН)",

"facelogic": "Тип алгоритму пошуку особи",

"foto": "base64(Фото)",

"fotoext": "Розширення до фото вхідної заявки (jpeg)",

"phone": "Телефон для порівняння"

},

"reqlng": "Мова критеріїв пошуку (Код із дов.23)"

},

"version": "1.0",

"reqtype": "Код шаблону (Код із дов.49): Звіт 'Фотоверифікація' - 17",

"reqreason": "Мета подання запиту (Код із дов.24)"

},

"descr": "Об'єкт запиту"

},

"descr": "Конверт запиту"

},

"sessid": "Сесійний ключ (отримуємо із API авторизації)"

}

}

}

Response JSON

{

"ubkidata": {

"tech": {

"trace": {

"step": {

"name": "Найменування кроку",

"stm": "Дата штамп старту кроку",

"ftm": "Дата штамп фінішу кроку"

}

},

"error": {

"errtype": "Код помилки(Код із дов.0)",

"errtext": "Текст помилки(Значення із дов.0)"

},

"reqinfo": {

"reqid": "Вихідний ІД запиту, згенерований УБКІ"

},

"billing": {

"balance": {

"value": "Сума балансу",

"date": "Дата",

"time": "Час"

}

}

},

"comp": [

{

"fotoverif": {

"grey": {

"inn": "РНОКПП (ІПН), за яким спрацював реєстр запитів",

"foto": "base64 (Фото) фотографія особи з реєстру запитів",

"fotoext": "Розширення до фото особи з реєстру запитів",

"datefoto": "Дата фотографії з реєстру запитів",

"confidence": "Міра схожості осіб при порівнянні з фото з реєстру запитів",

"algsearch": "Тип пошуку (1 - по заданому РНОКПП (ІПН), 2 - по заданій фотографії)",

"algsearchdescr": "Тип пошуку в текстовому вигляді"

},

"resultsearch": {

"state": "Статус фіз.особи (missed- зниклий безвісти, wanted - особа, які переховуються від органів влади (в розшуку))",

"category": "Класифікація статусу фіз.особи в текстовому вигляді",

"lnameua": "Прізвище українською",

"fnameua": "Ім'я українською",

"mnameua": "По батькові українською",

"lnameru": "Прізвище російською",

"fnameru": "Ім'я російською",

"mnameru": "По батькові російською",

"bdate": "Дата народження",

"lostdate": "Дата зникнення",

"lostplace": "Місце зникнення",

"restraint": "Запобіжний захід",

"contact": "Контакти для інформування",

"confidence": "Міра схожості осіб при порівнянні з фото з бази зниклих безвісти",

"foto": "base64 (Фото) фотографія особи з бази зниклих безвісти",

"fotoext": "Розширення до фото особи з бази зниклих безвісти"

},

"freqtype": "Тип запиту (1 - у своїй базі фото, 2 - в базі фото інших банків, 3 - порівняння двох осіб на фото, 4 - зарезервовано, 5 - в базі фото скомпрометованих осіб, 6 - порівняння з фото з документа, 7 - порівняння двох облич на одному фото, наприклад, особа з паспорта і обличчя людини, що тримає паспорт)",

"bdfd": "Ознака перевірки по БД фото скомпрометованих осіб (Код із дов.47)",

"fotofd": "base64 (Фото) фотографія скомпрометованої особи",

"fotoextfd": "Розширення до фото скомпрометованої особи",

"commentfd": "Коментар за результатами порівняння",

"verifclient": "Ознака збігу фото (Код із дов.47)",

"fotovc": "base64 (Фото) еталонної фотографії",

"fotoextvc": "Розширення до фото еталонної фотографії",

"commentvc": "Коментар за результатами порівняння з еталонною фотографією",

"confidencefd": "Міра схожості осіб при порівнянні з фото скомпрометованої особи",

"confidencevc": "Міра схожості осіб на фотографіях клієнтів",

"datefotovc": "Дата еталонної фотографії",

"phonematch": "Результат звірки телефонів",

"phonematchref": "Результат звірки телефонів в текстовому вигляді"

},

"id": "16",

"descr": "Назва компоненти"

},

{

"pret": {

"pretension": {

"inn": "РНОКПП (ІПН) (для фіз.осіб)/ЄДРПОУ (для юр.осіб)",

"crdeal": "Ідентифікатор угоди (референс)",

"source": "Вид оскарження (Код із дов.48)",

"sourceref": "Вид оскарження (Значення із дов.48)",

"claim": "Предмет оскарження (Код із дов.69)",

"claimref": "Предмет оскарження (Значення із дов.69)",

"vdate": "Дата створення заявки"

},

"commentcki": {

"comment": "Коментар суб'єкта кредитної історії",

"vdate": "Дата створення коментаря"

},

"plost": {

"pser": "Серія паспорта, заявлено СКІ як загублений (крадіжка)",

"pnom": "Номер паспорта, заявлено СКІ як загублений (крадіжка)",

"crdate": "Дата створення заявки на втрату/крадіжку паспорта СКІ в УБКІ",

"ldate": "Зазначена в заявці дата втрати/крадіжки паспорта СКІ в УБКІ"

},

"changedeal": {

"crdeal": "Ідентифікатор угоди (референс)",

"changecode": "Код причини коригування/видалення даних (Код із дов.62)",

"changeref": "Текст причини коригування/видалення даних (Значення із дов.62)",

"vdate": "Дата коригування/видалення даних"

},

"freezedate": "Дата підключення опції FREEZE",

"nonewdealcomment": "Коментар",

"nonewdeal": "Ознака небажання оформлювати нові кредитні продукти, статус підключення опції FREEZE: 0 - не включена, 1 - включена",

"nonewdealref": "Значення ознаки небажання оформлювати нові кредитні продукти, статус підключення опції FREEZE - 0-ні (не підключена опція), 1-так (підключена опція)",

"inn": "РНОКПП (ІПН) (для фіз.осіб)/ЄДРПОУ (для юр.осіб)"

},

"id": "18",

"descr": "Назва компоненти"

},

{

"person": {

"bdate": "Дата народження",

"lngref": "Мова надання блоку (Значення із дов.23)",

"lng": "Мова надання блоку (Код із дов.23)",

"mname": "По батькові",

"fname": "Ім'я",

"lname": "Прізвище",

"inn ": "РНОКПП (ІПН) СКІ",

},

"id": "72",

"descr": "Пошук по ПІБ+ДР при результаті більше 1 особи (Наявність компоненти визначається знаходженням більше 1 людини у разі пошуку за ПІБ+ДР)"

}

]

}

}

Request XML
( ** параметри передаються опціонально)

<?xml version="1.0" encoding="utf-8"?>

<doc>

<ubki sessid="Сесійний ключ (отримуємо із API авторизації)">

<req_envelope descr="Конверт запиту">

<req_xml descr="Об'єкт запиту">

<!-- Параметри запиту -->

<request version="1.0" reqtype="Код шаблону (Код із дов.49): Звіт 'Фотоверифікація' - 17" reqreason="Мета подання запиту (Код із дов.24)">

<!-- Параметри, що описують критерії пошуку-->

<i reqlng="Мова критеріїв пошуку (Код із дов.23)">

<!-- Параметри ідентифікації суб'єкта-->

<ident okpo="РНОКПП (ІПН) (для фіз.осіб)/ЄДРПОУ (для юр.осіб)"

lname="**Прізвище"

fname="**Ім'я"

mname="**По батькові"

bdate="**Дата народження">

</ident>

<!-- Параметри для фотоверифікації -->

<fotoverif freqtype="Тип запиту"

inn="РНОКПП (ІПН)"

facelogic="Тип алгоритму пошуку особи"

foto="base64(Фото)"

fotoext="Розширення до фото вхідної заявки (jpeg)"

phone="Телефон для порівняння" />

</i>

</request>

</req_xml>

</req_envelope>

</ubki>

</doc>

Response XML

<?xml version="1.0" encoding="utf-8"?>

<ubkidata>

<!-- Блок системної інформації -->

<tech>

<trace>

<step name="Найменування кроку" stm="Дата штамп старту кроку" ftm="Дата штамп фінішу кроку">

<!-- Блок trace містить метрики таймінгу кроків формування компонентів -->

</step>

</trace>

<error errtype="Код помилки (Код із дов.0)" errtext="Текст помилки (Значення із дов.0)">

</error>

<reqinfo reqid="Вихідний ІД запиту, згенерований УБКІ">

</reqinfo>

<!-- Блок інформації щодо поточного стану рахунку припейд-->

<billing>

<balance value="Сума балансу" date="Дата" time="Час" />

</billing>

</tech>

<!-- Блок "фотоверифікації" -->

<comp id="16" descr="Назва компоненти">

<fotoverif freqtype="Тип запиту (1 - у своїй базі фото, 2 - в базі фото інших банків, 3 - порівняння двох осіб на фото, 4 - зарезервовано, 5 - в базі фото скомпрометованих осіб, 6 - порівняння з фото з документа, 7 - порівняння двох облич на одному фото, наприклад, особа з паспорта і обличчя людини, що тримає паспорт)"

bdfd="Ознака перевірки по БД фото скомпрометованих осіб (Код із дов.47)"

fotofd="base64 (Фото) фотографія скомпрометованої особи" fotoextfd="Розширення до фото скомпрометованої особи"

commentfd="Коментар за результатами порівняння"

verifclient="Ознака збігу фото (Код із дов.47)"

fotovc="base64 (Фото) еталонної фотографії"

fotoextvc="Розширення до фото еталонної фотографії"

commentvc="Коментар за результатами порівняння з еталонною фотографією"

confidencefd="Міра схожості осіб при порівнянні з фото скомпрометованої особи"

confidencevc="Міра схожості осіб на фотографіях клієнтів"

datefotovc="Дата еталонної фотографії"

phonematch="Результат звірки телефонів"

phonematchref="Результат звірки телефонів в текстовому вигляді">

<!-- Блок "Пошук в Реєстрі заявочних фото" -->

<grey inn="РНОКПП (ІПН), за яким спрацював реєстр запитів"

foto="base64 (Фото) фотографія особи з реєстру запитів"

fotoext="Розширення до фото особи з реєстру запитів"

datefoto="Дата фотографії з реєстру запитів"

confidence="Міра схожості осіб при порівнянні з фото з реєстру запитів"

algsearch="Тип пошуку (1 - по заданому РНОКПП (ІПН), 2 - по заданій фотографії)"

algsearchdescr="Тип пошуку в текстовому вигляді" />

<!-- Блок "Пошук в базі зниклих безвісти і осіб, та тих, які переховуються від органів влади" -->

<resultsearch state="Статус фіз.особи (missed- зниклий безвісти, wanted - особа, які переховуються від органів влади (в розшуку))"

category="Класифікація статусу фіз.особи в текстовому вигляді"

lnameua="Прізвище українською"

fnameua="Ім'я українською"

mnameua="По батькові українською"

lnameru="Прізвище російською"

fnameru="Ім'я російською"

mnameru="По батькові російською"

bdate="Дата народження"

lostdate="Дата зникнення"

lostplace="Місце зникнення"

restraint="Запобіжний захід"

contact="Контакти для інформування"

confidence="Міра схожості осіб при порівнянні з фото з бази зниклих безвісти"

foto="base64 (Фото) фотографія особи з бази зниклих безвісти"

fotoext="Розширення до фото особи з бази зниклих безвісти" />

</fotoverif>

</comp>

<!-- Попередження -->

<comp id="18" descr="Назва компоненти">

<pret nonewdeal="Ознака небажання оформлювати нові кредитні продукти, статус підключення опції FREEZE: 0 - не включена, 1 - включена"

nonewdealref="Значення ознаки небажання оформлювати нові кредитні продукти, статус підключення опції FREEZE - 0-ні (не підключена опція), 1-так (підключена опція)"

nonewdealcomment="Коментар"

freezedate="Дата підключення опції FREEZE"

inn="РНОКПП (ІПН) (для фіз.осіб)/ЄДРПОУ (для юр.осіб)">

<pretension inn="РНОКПП (ІПН) (для фіз.осіб)/ЄДРПОУ (для юр.осіб)"

crdeal="Ідентифікатор угоди (референс)"

source="Вид оскарження (Код із дов.48)"

sourceref="Вид оскарження (Значення із дов.48)"

claim="Предмет оскарження (Код із дов.69)"

claimref="Предмет оскарження (Значення із дов.69)"

vdate="Дата створення заявки" />

<commentcki comment="Коментар суб'єкта кредитної історії"

vdate="Дата створення коментаря" />

<plost pser="Серія паспорта, заявлено СКІ як загублений (крадіжка)"

pnom="Номер паспорта, заявлено СКІ як загублений (крадіжка)"

crdate="Дата створення заявки на втрату/крадіжку паспорта СКІ в УБКІ"

ldate="Зазначена в заявці дата втрати/крадіжки паспорта СКІ в УБКІ" />

<changedeal crdeal="Ідентифікатор угоди (референс)"

changecode="Код причини коригування/видалення даних (Код із дов.62)"

changeref="Текст причини коригування/видалення даних (Значення із дов.62)"

vdate="Дата коригування/видалення даних" />

</pret>

</comp>

<!-- Пошук по ПІБ+ДР при результаті більше 1 особи (Наявність компоненти визначається знаходженням більше 1 людини у разі пошуку за ПІБ+ДР)-->

<comp id="72" descr="Пошук по ПІБ+ДР при результаті більше 1 особи">

<person bdate="Дата народження"

lngref="Мова надання блоку (Значення із дов.23)"

lng="Мова надання блоку (Код із дов.23)"

mname="По батькові"

fname="Ім'я"

lname="Прізвище"

inn="РНОКПП (ІПН) СКІ" />

</comp>

</ubkidata>

 

freqtype

Опис

Звірка лише вхідних фото, без підключення внутрішніх баз

База еталонних фото кредиторів

База шахраїв

Реєстр заявочних фото

Зниклі безвісти

Особи в розшуку

 

freqtype

Опис

Звірка лише вхідних фото, без підключення внутрішніх баз

База еталонних фото кредиторів

База шахраїв

Реєстр заявочних фото

Зниклі безвісти

Особи в розшуку

У своїй базі фото

1

Перевірка вхідної фотографії з власною фотографією, яка раніше передавалась в бюро

-

-

-

-

-

-

В базі фото інших банків

2

Вхідне фото звіряється з історичними фотографіями всіх організацій-донорів, крім власної

-

+

+

+

+

+

Порівняння двох осіб на фото

3

На вхід передається дві фотографії. Особа на першому фото порівнюється з особою на другому фото, у запиті потрібно відправляти додаткові параметри для другої фотографії fotodocext="розширення до фото", fotodoc ="фото в бейс64"

+

-

-

-

-

-

В базі фото скомпрометованих осіб

5

Обличчя на вхідному фото звіряється тільки з базою шахраїв.

-

-

+

-

-

-

Порівняння з фото з документа

6

На вхід передається лише фото документа без особи самого клієнта. Звірка йде з історичними фотографіями всіх організацій-донорів фото.

-

+

+

+

+

+

Порівняння двох облич на одному фото

7

На вхід передається одне фото із двома особами (наприклад, клієнт тримає паспорт у руках). Відбувається звірка цих двох осіб.

+

-

-

-

-

-

Приклад

Приклад

Request JSON

{ "doc": { "ubki": { "req_envelope": { "req_xml": { "request": { "i": { "ident": { "okpo": "3278508288", "mname": "ВАСИЛІВНА", "fname": "ІРІНА", "lname": "ГАРНА", "bdate": "1989-10-05" }, "fotoverif": { "freqtype": "2", "inn": "3278508288", "facelogic": "3", "fotoext": "jpg", "phone": "+380962134234", "foto": "/9j/4AAQSkZJRgABAQEASABIAA" }, "reqlng": "1" }, "version": "1.0", "reqtype": "17", "reqreason": "2" }, "descr": "Об'єкт запиту" }, "descr": "Конверт запиту" }, "sessid": "7BD7E136E3BF470EAA2CFE2E000000ED" } } }

Response JSON

{ "ubkidata": { "tech": { "trace": { "step": { "name": "build report", "stm": "2022-01-09 21:52:29.631", "ftm": "2022-01-09 21:52:29.699" } }, "reqinfo": { "reqid": "req2#000002008590" } }, "comp": [ { "fotoverif": { "reqtype": "1", "bdfd": "1", "fotofd": "/9j/4AAQSkZJRgP/XJv5Gs5bpHTTl7p/9k=", "fotoextfd": "jpeg", "commentfd": "Подозрение по фото подтверждается", "confidencefd": "0.73668", "verifclient": "2", "fotovc": "/9j/4AAQSlIZAUIwQaWfUhsL+TyP8Aa/8ArVT/ALZ3Lgwf+P8A/wBanYrQ/9k=", "fotoextvc": "jpeg", "datefotovc": "2018-11-21", "commentvc": "Подозрение по фото не подтверждается", "confidencevc": "0.90923", "phonematch": "2", "phonematchref": "есть совпадение телефона" }, "id": "16", "descr": "Фотоверифікація" }, { "pret": { "inn": "3278508288", "nonewdeal": "0", "nonewdealref": "Ні", "nonewdealcomment": "", "freezedate":"" }, "id": "18", "descr": "Попередження" } ] } }

Request XML

<?xml version="1.0" encoding="UTF-8"?> <doc> <ubki sessid="7BD7E136E3BF470EAA2CFE2E000000ED"> <req_envelope descr="Конверт запиту"> <req_xml descr="Об'єкт запиту"> <request version="1.0" reqtype="17" reqreason="2"> <i reqlng="1"> <ident okpo="3278508288" mname="ВАСИЛІВНА" fname="ІРІНА" lname="ГАРНА" bdate="1989-10-05" /> <fotoverif freqtype="2" inn="3278508288" facelogic="3" fotoext="jpg" phone="+380962134234" foto="/9j/4AAQSkZJRgABAQEASABIAA" /> </i> </request> </req_xml> </req_envelope> </ubki> </doc>

Response XML

Test URL

Test data

fotoverif: freqtype = "2", inn = "один із прикладів нижче", facerlogic = "3", foto = "будь-яке, що проходить правила валідації", fotoext = "jpg / jpeg", phone = "+380662134234"

  • 2111118724, 3233312116, 3112579111 - Фото непридатне для роботи сервісу (face not found)

  • 3112579786, 3333312110, 2726020593 - Підозра по фото не підтверджується + доп. інформація по тегу Grey

  • 3278508288 - Підозра по фото підтверджується

  • 2972566397 - Підозра по фото не підтверджується

  • 3332643095, 2929952290 - Підозра по фото не підтверджується + доп. інформація по тегу resultsearch з безвісти зниклого і особи, що переховується від суду

  • 2972566111 - Вхідне фото збіглося з еталонним і з фото шахрая

 

<comp id="18" descr="Попередження"> тег <changedeal>

  • 3332643095

 

<comp id="72" descr="Пошук по ПІБ+ДР при результаті більше 1 особи">

  • bdate="1985-03-20" mname="НИКИФОРОВНА" fname="АННА" lname="ЯРЦЕВА"