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