> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/produtos/idv-suite/flujos-and-integraciones/configuracion-tecnica-del-cliente/sdk-mobile/ios-sdk/modulos/captura-de-documentos.md).

# Captura de documentos

Este componente precisa de uma versão mínima do iOS9

## Introdução

Este componente é responsável pela **captura e análise de documentos de identidade**, permitindo extrair informações estruturadas e obter imagens processadas do documento.

Suas principais funcionalidades são:

* Gerenciamento interno da câmera e das permissões.
* Assistência guiada para a captura do **anverso e verso** do documento.
* Extração automática de dados por meio de OCR.
* Obtenção de imagens processadas do documento e de elementos associados (rosto, assinatura etc.).
* Alto nível de configuração: países, idiomas, tipos e modelos de documentos.

***

## Dependências

Para evitar conflitos e problemas de compatibilidade, se o projeto contiver versões antigas de bibliotecas da Facephi (Widgets), elas devem ser removidas **por completo** antes de instalar os componentes de **SDK Mobile**.

### **CocoaPods**

* As bibliotecas da Facephi são distribuídas remotamente por meio de gerenciadores de dependências. As dependências **obrigatórias** que deverão ter sido instaladas previamente (adicionando-as no arquivo Podfile do projeto) são:

```swift
pod 'FPHISDKMainComponent', '~> $VERSION'
```

* Para instalar o componente **SelphID**, adicione a dependência correspondente no `Podfile` do projeto.

```swift
pod 'FPHISDKSelphIDComponent', '~> $VERSION'
```

### Swift Package Manager (SPM)

Se você usa **SPM**, certifique-se de que as dependências obrigatórias do SDK estejam previamente instaladas.

```swift
//HTTPS
https://github.com/facephi-clienters/SDK-SdkPackage-SPM.git
//SSH
git@github.com:facephi-clienters/SDK-SdkPackage-SPM.git
```

Para instalar o componente **SelphID**, inclua-o nos módulos do projeto.

<pre class="language-swift"><code class="lang-swift"><strong>//HTTPS
</strong>https://github.com/facephi-clienters/SDK-SelphidComponentLight.git
//SSH
git@github.com:facephi-clienters/SDK-SelphidComponentLight.git
</code></pre>

***

## Permissões

No aplicativo cliente onde os componentes serão integrados, é necessário incorporar o seguinte elemento no arquivo **Info.plist**:

```
É necessário permitir o uso da câmera (Privacy - Camera Usage Description)
```

## Controladores disponíveis

| **Controlador**   | **Descrição**                                         |
| ----------------- | ----------------------------------------------------- |
| SelphIDController | Controlador principal de reconhecimento de documentos |

***

## Recepção de erros <a href="#recepcion-del-resultado" id="recepcion-del-resultado"></a>

*finishStatus*: Indicará se a operação foi concluída corretamente. Valores possíveis:

```swift
FinishStatus.STATUS_OK
FinishStatus.STATUS_ERROR
```

*errorType*: Erros próprios do widget.

Em iOS, se for interpolado diretamente, mostrará `SELPHID_TIMEOUT`. Em iOS não existe um caso `TIMEOUT` sem prefixo.

Para serializar o erro, deve-se usar:

```swift
sdkResult.errorType.toString(addComponentPrefix: "SPD_")
```

Isso retorna `SPD_TIMEOUT` tanto se o enum for `SDK_TIMEOUT` quanto `SELPHID_TIMEOUT`.

#### Comportamento em Timeout

Em um Timeout, o resultado tem:

* `finishStatus`: `STATUS_ERROR`
* `data`: `nil` (não é retornado um `SelphIDResult`)
* `errorType`: `.SELPHID_TIMEOUT(UIImage?, UIImage?)`

O caso `SELPHID_TIMEOUT` preserva, quando disponíveis, as imagens brutas do documento capturadas antes do Timeout (`rawFrontDocument` e `rawBackDocument` do widget). Essas informações **não** faz parte de `data` nem é retornada como `rawFrontDocument` / `rawBackDocument` do resultado de sucesso; só pode ser lida em iOS por meio de pattern matching sobre `errorType`:

```swift
if case .SELPHID_TIMEOUT(let frontRaw, let backRaw) = sdkResult.errorType {
    // frontRaw, backRaw: UIImage? (podem ser nil)
}
```

Se chegar como `SELPHID_TIMEOUT`, as imagens associadas podem ser `nil` quando o Timeout ocorre pela via de erro do widget (`FWMETimeout`) em vez do delegate `captureTimeout()`.

Em iOS, propriedades como `timeoutDiagnostic` ou `captureProgress` **não** são incluídas no `SdkResult` de erro. O componente usa `captureProgress` internamente para exibir a mensagem da tela de diagnóstico quando `showDiagnostic` está ativo.

Se `showDiagnostic` estiver ativo, o callback `output` não é invocado no instante do Timeout: primeiro é exibida a tela de diagnóstico e o resultado é entregue ao clicar em fechar. Com `showDiagnostic` desativado, o callback é executado imediatamente.

A lista a seguir inclui erros do contrato multiplataforma; alguns não ocorrem em iOS (por exemplo, `SPD_MOVE_FAIL`).

* SPD\_APPLICATION\_CONTEXT\_ERROR: O contexto de aplicação necessário é nulo.
* SPD\_BAD\_EXTRACTOR\_CONFIGURATION\_ERROR: Widget: Configuração do extrator incorreta
* SPD\_CAMERA\_PERMISSION\_DENIED: O usuário recusou as permissões.
* SPD\_CANCEL\_BY\_USER: O usuário cancelou o processo.
* SPD\_CANCEL\_LAUNCH: Foi feita uma cancelamento geral do SDK.
* SPD\_COMPONENT\_LICENSE\_ERROR: A licença do componente não está correta.
* SPD\_CONTROL\_NOT\_INITIALIZATED\_ERROR: Widget: Erro de inicialização
* SPD\_EMPTY\_LICENSE: O String de licença está vazio.
* SPD\_EXTRACTION\_LICENSE\_ERROR: Widget: Erro de licença
* SPD\_HARDWARE\_ERROR: Widget: Erro de hardware
* SPD\_INITIALIZATION\_ERROR: Erro de inicialização.
* SPD\_MOVE\_FAIL: O usuário não se moveu conforme foi especificado no processo.
* SPD\_NO\_DATA\_ERROR: Os dados de entrada são nulos.
* SPD\_OPERATION\_NOT\_CREATED: Não há nenhuma operação em andamento.
* SPD\_RESOURCES\_NOT\_FOUND: O zip de recursos não foi encontrado
* SPD\_SETTINGS\_PERMISSION\_ERROR: Widget: Erro de permissões
* SPD\_TIMEOUT: Timeout no processo `SELPHID_TIMEOUT` do enum).
* SPD\_UNEXPECTED\_CAPTURE\_ERROR: Widget: Erro na captura
* SPD\_UNKNOWN\_ERROR: Erro desconhecido
* SPD\_WIDGET\_RESULT\_DATA\_ERROR: Erro nos dados de saída do widget
