For the complete documentation index, see llms.txt. This page is also available as Markdown.

Videoidentificação - VideoID

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

Introdução

A Captura Facial é realizada com o Componente VideoID.

Este componente é responsável por realizar a gravação de um usuário se identificando, mostrando seu rosto e seu Documento de identidade.

  • Gestão interna de câmeras, microfone e permissões.

  • Conexão com os serviços.

  • Leitura do OCR e captura do documento.

Na seção de Lançamento simplificado são detalhados os passos necessários para a integração básica do SDK. Nesta seção é adicionada a informação para o lançamento deste componente.

Dependência

Para evitar conflitos e problemas de compatibilidade, caso queira instalar o componente em um projeto que contenha uma Versão antiga das bibliotecas da Facephi (Widgets), eles deverão ser removidos completamente antes da instalação dos componentes da SDKMobile.

CocoaPods

  • As dependências obrigatórias que devem ter sido instaladas previamente (adicionando-as no arquivo Podfile do projeto) são:

pod 'FPHISDKMainComponent', '~> $VERSION'
  • Para instalar o componente de NFC, deverá ser incluída a seguinte entrada no Podfile do aplicativo:

pod 'FPHISDKVideoIDComponent', '~> $VERSION'

SPM

  • As dependências obrigatórias que deverão ter sido instaladas previamente são:

  • Para instalar o componente de VideoID, deverá ser incluído nos módulos do projeto:

Permissões

No aplicativo cliente em que os componentes forem integrados, é necessário incorporar os seguintes elementos no arquivo Info.plist:

Controladores disponíveis

Controlador

Descrição

VideoIdController

Controlador principal de videoidentificação

SignatureVideoIdController

Controlador para assinar um processo com uma captura

Lançamento simplificado

Uma vez iniciado o SDK e criada uma nova operação, será possível lançar o componente. Será possível fazer uso de qualquer um de seus controladores para executar sua funcionalidade.

Lançamento:

Configuração básica

Para iniciar o componente atual, deverá ser criado um objeto VideoIdConfigurationData que será a configuração do controlador do componente.

A configuração básica necessária é a seguinte:

Os diferentes modos são:

  • .ONLY_FACE

  • .FACE_DOCUMENT_FRONT

  • .FACE_DOCUMENT_FRONT_BACK

Recebimento do resultado

Os controllers devolverão as informações necessárias no formato SdkResult.

Recebimento de erros

Na parte do erro, teremos o enumerado comum ErrorType:

  • VID_CANCEL_BY_USER: O usuário cancelou o processo

  • VID_CANCEL_LAUNCH: Foi feito um cancelamento geral do SDK

  • VID_COMPONENT_LICENSE_ERROR: A licença do componente não está correta

  • VID_EMPTY_LICENSE: A String de licença está vazia

  • VID_FACE_DETECTION_TIMEOUT: Não foi detectado rosto

  • VID_INITIALIZATION_ERROR: Erro de Inicialização

  • VID_MANAGER_NOT_INITIALIZED: Os managers são nulos

  • VID_NETWORK_CONNECTION: Erro na conexão com a internet

  • VID_NO_DATA_ERROR: Os dados de entrada são nulos

  • VID_OPERATION_NOT_CREATED: Não há nenhuma operação em curso

  • VID_PERMISSION_DENIED: O usuário recusou as permissões

  • VID_SOCKET_ERROR: Erro na conexão dos serviços

  • VID_TIMEOUT: Timeout no processo

  • VID_VIDEO_ERROR: Erro no processamento do vídeo

  • VID_VIDEO_RECORDING_ACTIVE: Não é possível iniciar porque o processo de gravação de vídeo está ativo

Recebimento de execução correta - data

Na parte de SdkResult.Success - data, teremos a classe VideoIdResult.

O resultado retorna as imagens no formato SdkImage, é possível extrair o bitmap acessando image.bitmap. Se quiser convertê-lo para base64, pode-se utilizar a função:

Base64.encodeToString(this.toByteArray(), Base64.NO_WRAP)

Os campos retornados no resultado são os seguintes:

frontDocumentData

Dados da frente do documento. Inclui:

  • documentImage: Imagem do documento

  • documentFullImage: Imagem completa capturada

  • documentFaceImage: Se for encontrado um rosto no documento, a imagem dele é retornada.

  • iqaOverExposure: Valor numérico entre 0 e 1 que indica o nível de superexposição da imagem; um valor alto sugere que a imagem está iluminada demais, o que pode dificultar a leitura do documento.

  • iqaReadable: Valor numérico entre 0 e 1 que indica a legibilidade do texto do documento; valores mais altos significam que o texto está mais claro e fácil de reconhecer.

  • iqaSharpness: Valor numérico entre 0 e 1 que indica a nitidez da imagem do documento; valores altos refletem uma imagem mais focada, o que melhora a capacidade de extração de dados.

  • documentFaceImageTokenized: Se for encontrado um rosto no documento, a imagem criptografada dele é retornada.

backDocumentData

Dados do verso do documento. Inclui:

  • documentImage: Imagem do documento

  • documentFullImage: Imagem completa capturada

  • documentFaceImage: Se for encontrado um rosto no documento, a imagem dele é retornada.

  • iqaOverExposure: Valor numérico entre 0 e 1 que indica o nível de superexposição da imagem; um valor alto sugere que a imagem está iluminada demais, o que pode dificultar a leitura do documento.

  • iqaReadable: Valor numérico entre 0 e 1 que indica a legibilidade do texto do documento; valores mais altos significam que o texto está mais claro e fácil de reconhecer.

  • iqaSharpness: Valor numérico entre 0 e 1 que indica a nitidez da imagem do documento; valores altos refletem uma imagem mais focada, o que melhora a capacidade de extração de dados.

  • documentFaceImageTokenized: Se for encontrado um rosto no documento, a imagem criptografada dele é retornada.

faceImage

Imagem do usuário capturada na primeira seção do processo.

ocrMap

Mapa do OCR extraído do documento.

ocrDiagnostic

Dicionário com o diagnóstico OCR do documento. As chaves são os campos a validar e os valores são instâncias de OcrDiagnostic.

Diagnóstico OCR extraído do documento.

  • OK: O OCR está correto.

  • NOT_FOUND: A chave OCR não foi encontrada.

  • TOLERANCE_ERROR: O OCR não está correto.

  • WARNING: O OCR não está correto, mas é apenas um aviso porque é um campo opcional.

matchingSidesScore

Valor numérico entre 0 e 1 que estima o nível de correspondência entre as faces do documento (frontal e traseira).

documentType

Tipo de documento obtido.

personalData

Conjunto reduzido de dados obtidos do usuário:

  • issuer

  • documentNumber

  • issueDate

  • expiryDate

  • name

  • surname

  • fullName

  • gender

  • birthDate

  • birthPlace

  • nationality

  • address

  • nfcKey

  • numSupport

  • mrz

speechText

Texto que o usuário deverá pronunciar durante a gravação do vídeo.

faceImageTokenized

Imagem criptografada do usuário capturada na primeira seção do processo.

Personalização do componente

Além das alterações que podem ser feitas no nível do SDK (as quais são explicadas no documento de Personalização do SDK), este componente específico permite a modificação de sua interface.

Textos

Os textos podem ser personalizados sobrescrevendo o valor das seguintes chaves em um Localizable.strings. As chaves que contêm o sufixo _alt são os literais utilizados nas etiquetas de acessibilidade necessárias para a funcionalidade de VoiceOver.

Name

Valor

video_id_component_init_message_face_content_desc

Coloque seu rosto e a frente do seu documento nas marcações

video_id_component_finish_message

A gravação de vídeo foi finalizada!

video_id_component_finish_button

FINALIZAR

video_id_component_restart_button

REPETIR GRAVAÇÃO

video_id_component_ready_button

CONTINUAR

video_id_component_exit_alert_cancel

Cancelar

video_id_component_exit_alert_question

Tem certeza de que deseja finalizar o processo?

video_id_component_exit_alert_finish

Encerrar

video_id_component_exit_alert_accept

Aceitar

video_id_component_timeout_title

Tempo esgotado

video_id_component_timeout_desc

Não conseguimos fazer a gravação a tempo. Vamos tentar novamente.

video_id_component_internal_error_title

Ocorreu um erro

video_id_component_internal_error_desc

Vamos tentar novamente.

video_id_component_close_button_alt

Fechar

video_id_component_back_button_alt

Voltar

video_id_component_logo_alt

Logo

video_id_component_document_front_message

Posicione a frente do seu documento nas marcações

video_id_component_document_front_message_readable

Mantenha a frente do seu documento nas marcações

video_id_component_document_front_message_not_readable

Aproxime a frente do seu documento das marcações

video_id_component_document_back_message

Agora posicione o verso do seu documento

video_id_component_document_back_message_readable

Mantenha o verso do seu documento nas marcações

video_id_component_document_back_message_not_readable

Aproxime o verso do seu documento das marcações

video_id_component_switch_camera_message

Prepare o documento enquanto ocorre a troca de câmera

video_id_component_face_message

Coloque seu rosto dentro da moldura.

video_id_component_multiple_face_message

Vários rostos detectados. Coloque apenas seu rosto dentro da moldura

video_id_component_speech_message

Diga em voz alta: "Eu (nome e sobrenome) aceito os termos e condições".

video_id_component_front_document_captured_message

Frente do documento capturada corretamente

video_id_component_document_back_finish_message

Verso do documento capturado corretamente

video_id_component_face_timeout_title

Não detectamos seu rosto

video_id_component_face_timeout_desc

Por favor, coloque seu rosto na marca para iniciar o processo

video_id_component_ocr_error_desc

Não foi possível ler o documento. Por favor, verifique a iluminação e a distância da câmera

Animações

Se desejar modificar as animações (lottie) do SDK, é preciso incluir as animações com o mesmo nome na pasta res/raw/ da aplicação.

Atualizado