> For the complete documentation index, see [llms.txt](https://doc.ozforensics.com/oz-knowledge-ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.ozforensics.com/oz-knowledge-ru/obshaya-informaciya/kratkie-rukovodstva-po-integracii/sravnenie-lic/kak-dobavit-semku-dokumenta-i-vozmozhnost-sopostavleniya-lic-v-vashe-veb-ili-mobilnoe-prilozhenie.md).

# Как добавить съемку документа и возможность сопоставления лиц в ваше веб- или мобильное приложение

{% hint style="warning" %}
Обратите внимание: инструкции применимы для версий, которые не работают с контейнером данных.
{% endhint %}

{% hint style="info" %}
Обратите внимание: в мобильных SDK Oz отсутствует интерфейс для съемки документов. Для этого вам потребуется ПО стороннего производителя или ваше собственное. В Web SDK есть базовая функциональность съемки документа.
{% endhint %}

Ниже описаны шаги, которые потребуется пройти для добавления сравнения лиц к Liveness-проверке.

К этому моменту вы, скорее всего, уже разобрались с тем, как снимать видео и проводить Liveness-проверки. Если нет, пожалуйста, ознакомьтесь со статьями:

* [Интеграция Oz Liveness Web SDK](/oz-knowledge-ru/obshaya-informaciya/kratkie-rukovodstva-po-integracii/proverka-liveness-na-servere/kak-integrirovat-servernuyu-proverku-liveness-v-vashe-web-prilozhenie.md)
* [Интеграция Oz Liveness Mobile SDK](https://app.gitbook.com/o/-MQv6kXBVXmdGRKx4Fy8/s/HLoHbtSPFA1Ul7oKM5SC/~/changes/373/obshaya-informaciya/kratkie-rukovodstva-po-integracii/proverka-liveness-na-servere/kak-integrirovat-servernuyu-proverku-liveness-v-vashe-mobilnoe-prilozhenie)

<figure><img src="/files/7NDbKX2RoL1cFr5aYSGu" alt=""><figcaption></figcaption></figure>

### Добавление съемки документа в Web SDK

Добавьте `photo_id_front` в список действий для плагина.

```javascript
OzLiveness.open({
  lang: 'en',
  action: [
    'photo_id_front', 
    'video_selfie_blank'
  ],
  ...
});
```

### Добавление сравнения лиц в Android SDK

Внимание: в данном случае мы предполагаем, что фотография (например, документа) хранится на устройстве под названием `reference.jpg`.

Измените код, запускающий анализ:

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
private fun analyzeMedia(mediaList: List<OzAbstractMedia>) {

    val refFile = File(context.filesDir, "reference.jpg")
    val refMedia = OzAbstractMedia.OzDocumentPhoto(
        OzMediaTag.PhotoIdFront , // OzMediaTag.PhotoSelfie для не являющегося документом фото
        refFile.absolutePath
    )

    AnalysisRequest.Builder()
        .addAnalysis(Analysis(Analysis.Type.QUALITY, Analysis.Mode.SERVER_BASED, mediaList))
        .addAnalysis(Analysis(Analysis.Type.BIOMETRY, Analysis.Mode.SERVER_BASED, mediaList + refMedia))
        .build()
        .run(object : AnalysisRequest.AnalysisListener {
            override fun onSuccess(result: List<OzAnalysisResult>) {
                result.forEach { 
                    println(it.resolution.name)
                    println(it.folderId)
                }
            }
            override fun onError(error: OzException) {
                error.printStackTrace()
            }
        })
} 
```

{% endtab %}

{% tab title="Java" %}

```java
private void analyzeMedia(List<OzAbstractMedia> mediaList) {
    File refFile = new File(context.getFilesDir(), "reference.jpg");
    OzAbstractMedia refMedia = new OzAbstractMedia.OzDocumentPhoto(
            OzMediaTag.PhotoIdFront , // OzMediaTag.PhotoSelfie for a non-ID photo
            refFile.getAbsolutePath()
    );
    ArrayList<OzAbstractMedia> mediaWithReferencePhoto = new ArrayList<>(mediaList);
    mediaWithReferencePhoto.add(refMedia);
    new AnalysisRequest.Builder()
            .addAnalysis(new Analysis(Analysis.Type.QUALITY, Analysis.Mode.SERVER_BASED, mediaList, Collections.emptyMap()))
            .addAnalysis(new Analysis(Analysis.Type.BIOMETRY, Analysis.Mode.SERVER_BASED, mediaWithReferencePhoto, Collections.emptyMap()))
            .build()
            .run(new AnalysisRequest.AnalysisListener() {
                @Override public void onStatusChange(@NonNull AnalysisRequest.AnalysisStatus analysisStatus) {}
                @Override
                public void onSuccess(@NonNull List<OzAnalysisResult> list) {
                    String folderId = list.get(0).getFolderId();
                }
                @Override
                public void onError(@NonNull OzException e) { e.printStackTrace(); }
    });
}
```

{% endtab %}
{% endtabs %}

Для анализа на устройстве вместо `Analysis.Mode.SERVER_BASED` укажите `Analysis.Mode.ON_DEVICE`.

Код образца для Android находится [здесь](https://gitlab.com/oz-forensics/oz-liveness-android).

### Добавление сравнения лиц в iOS SDK

Внимание: в данном случае мы предполагаем, что фотография (например, документа) хранится на устройстве под названием `reference.jpg`.

Измените код, запускающий анализ:

```swift
let imageURL = URL(fileURLWithPath: NSTemporaryDirectory())
    .appendingPathComponent("reference.jpg")

let refMedia = OZMedia.init(movement: .selfie,
                   mediaType: .movement,
                   metaData: nil,
                   videoURL: nil,
                   bestShotURL: imageUrl,
                   preferredMediaURL: nil,
                   timestamp: Date())
   
var mediaBiometry = [OZMedia]()
mediaBiometry.append(refMedia)
mediaBiometry.append(contentsOf: mediaToAnalyze)
let analysisRequest = AnalysisRequestBuilder()
let analysisBiometry = Analysis.init(media: mediaBiometry, type: .biometry, mode: .serverBased)
let analysisQuality = Analysis.init(media: mediaToAnalyze, type: .quality, mode: .serverBased)
analysisRequest.addAnalysis(analysisBiometry)
analysisRequest.addAnalysis(analysisQuality)
analysisRequest.uploadMedia(mediaBiometry)
analysisRequest.run(
    scenarioStateHandler: { state in }, // обработчик шагов сценария
    uploadProgressHandler: { (progress) in } // обработчик для загрузки файлов
) { (analysisResults : [OzAnalysisResult], error) in
    // получение и обработка анализов
    for result in analysisResults {
        print(result.resolution)
        print(result.folderID)
    }
}
```

Для анализа на устройстве вместо `.serverBased` укажите `.onDevice`.

Код образца для iOS находится [здесь](https://gitlab.com/oz-forensics/public/oz-liveness-ios-sample/-/tree/main).

### Для всех SDK

Чтобы получить доступ к снятым видео и результатам анализов, воспользуйтесь [веб-консолью](/oz-knowledge-ru/rukovodstva/rukovodstvo-polzovatelya/oz-webui.md) или API-запросами.

Методы как API, так и SDK могут гибко комбинироваться. Подробнее об этом вы можете прочитать в [руководстве разработчика](/oz-knowledge-ru/rukovodstva/rukovodstvo-razrabotchika.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://doc.ozforensics.com/oz-knowledge-ru/obshaya-informaciya/kratkie-rukovodstva-po-integracii/sravnenie-lic/kak-dobavit-semku-dokumenta-i-vozmozhnost-sopostavleniya-lic-v-vashe-veb-ili-mobilnoe-prilozhenie.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.
