> 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 в ваше мобильное приложение](/oz-knowledge-ru/obshaya-informaciya/kratkie-rukovodstva-po-integracii/kak-integrirovat-oz-liveness-v-vashe-mobilnoe-prilozhenie.md)

[Как интегрировать Oz Liveness в ваше веб-приложение](/oz-knowledge-ru/obshaya-informaciya/kratkie-rukovodstva-po-integracii/kak-integrirovat-oz-liveness-v-vashe-veb-prilozhenie.md)

<figure><img src="https://2041336905-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHLoHbtSPFA1Ul7oKM5SC%2Fuploads%2FCzN0LidHNWjRbjKqlbDe%2Ffacematching2%20ru-scheme-v8.drawio%20(2).svg?alt=media&amp;token=ec7abf0d-527b-4a0c-a38c-97a5d817dbbf" 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 %}

Код образца для 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)
    }
}
```

Код образца для 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
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>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
