Videoidentificação - VideoID
Introdução
A Captura Facial é realizada com o Componente VideoID.
Este componente é responsável por realizar a gravação de um usuário identificando-se, mostrando o rosto e seu Documento de identidade.
Gerenciamento interno 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
A dependência específica do componente é:
implementation "com.facephi.androidsdk:video_id_component:$version"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 iniciar o componente. Será possível usar qualquer um de seus controladores para executar sua funcionalidade.
Lançamento:
Configuração básica
Para lançar 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:
VideoIdMode.ONLY_FACE
VideoIdMode.FACE_DOCUMENT_FRONT
VideoIdMode.FACE_DOCUMENT_FRONT_BACK
VideoIdMode.DOCUMENT_FRONT
VideoIdMode.DOCUMENT_FRONT_BACK
Recebimento do resultado
A execução retornará as informações no formato SdkResult. Sendo possível diferenciar entre uma execução correta e uma incorreta:
Recebimento de erros
Os erros serão retornados como um objeto 'VideoIdError'.
Lista de erros:
VID_ACTIVITY_RESULT_MSG_ERROR: O resultado da atividade está incorreto
VID_APPLICATION_CONTEXT_ERROR: O contexto de aplicação necessário é nulo
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 da licença está vazia
VID_FACE_DETECTION_TIMEOUT: Não foi detectado rosto
VID_FETCH_DATA_ERROR: Erro na obtenção do resultado
VID_FLOW_ERROR: Erro no processo de fluxo
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 andamento
VID_PERMISSION_DENIED: O usuário rejeitou 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_CALL_ACTIVE: Não é possível iniciar porque já há uma Videochamada ativa
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, dispondremos da classe VideoIdResult.
O resultado retorna as imagens no formato SdkImage, é possível extrair o bitmap acessando image.bitmap. Se quiser converter para base64, é possível usar 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 uma face for encontrada no documento, a imagem dela é 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 implicam 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 uma face for encontrada no documento, a imagem criptografada dela é retornada.
backDocumentData
Dados do verso do documento. Inclui:
documentImage: Imagem do documento
documentFullImage: Imagem completa capturada
documentFaceImage: Se uma face for encontrada no documento, a imagem dela é 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 implicam 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 uma face for encontrada no documento, a imagem criptografada dela é 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 (frente e verso).
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.
Informações avançadas
Esta seção amplia as informações do componente.
Configuração avançada do componente
Para iniciar o componente atual, deverá ser criado um objeto _VideoIdConfigurationData _ que será a configuração do controlador do componente.
Os campos incluídos na configuração (url, apiKey, tenantId), normalmente não é necessário que sejam informados pois são preenchidos internamente por meio da licença usada.
Esses campos geralmente são informados apenas quando o servidor es OnPremise.
url
Caminho para o socket de vídeo
apiKey
ApiKey necessária para a conexão com o socket de vídeo
tenantId
Identificador do tenant que faz referência ao cliente atual, necessário para a conexão com o serviço de vídeo.
sectionTime
Indica a duração das seções com tempo associado (Captura Facial e troca de câmera).
mode
ONLY_FACE: O processo é realizado capturando o rosto do usuário.
FACE_DOCUMENT_FRONT: O processo é realizado capturando o rosto do usuário e a parte frontal do Documento de identidade.
FACE_DOCUMENT_FRONT_BACK: O processo é realizado capturando o rosto do usuário e o Documento de identidade completo.
DOCUMENT_FRONT: O processo extrai as informações apenas da parte frontal do documento.
DOCUMENT_FRONT_BACK: O processo extrai as informações apenas do documento completo.
timeoutServerConnection
Tempo máximo de espera em ms pela resposta do servidor.
sectionTimeout
Tempo máximo permitido para concluir uma seção (em ms).
autoFaceDetection
Ativa/desativa a detecção automática de rosto.
depuração
Habilita a exibição de informações adicionais úteis para o diagnóstico e acompanhamento do comportamento interno.
countryFilter
Permite restringir o processamento a um conjunto específico de países, aceitando um array de strings que representam os aliases em formato ISO3 (código de 3 letras segundo o padrão ISO 3166-1).
documentFilter
Permite restringir os tipos de documentos aceitos durante a captura. Os valores possíveis são:
"IDC": Documento de identidade (ID Card)
"PSP": Passaporte (Passport)
"DLI": Licença de Condução (Driver License)
"VIS": Visto (Visa)
"FOC": Cartão de Estrangeiro (Foreign Card)
"INV": Fatura (Invoice)
"CUS": Documento personalizado (Custom Document)
speechText
Texto que o usuário deverá pronunciar durante a gravação do vídeo.
ocrValidations
Dicionário com as validações OCR a serem realizadas. As chaves são os campos a validar e os valores são instâncias de OcrValidationValue.
OcrValidationValue tem os seguintes campos:
value: O valor a validar.
tolerance: O nível de tolerância para a validação.
STRICT: Validação estrita.
LOW_TOLERANCE: Validação com baixa tolerância.
MEDIUM_TOLERANCE: Validação com tolerância média.
HIGH_TOLERANCE: Validação com alta tolerância.
validationType: O tipo de validação a ser realizada.
OPTIONAL: Validação opcional.
REQUIRED: Validação obrigatória.
ocrMaxWarnings
Número máximo de avisos permitidos na validação OCR.
maxRetries
Número máximo de tentativas permitidas para a validação OCR. O valor padrão é 3.
Personalização do componente
Além das mudanças que podem ser feitas no nível do SDK (as quais são explicadas no documento de Personalização do SDK), este componente em específico permite a modificação de sua interface.
Textos
Os textos podem ser personalizados adicionando um arquivo XML de recursos no aplicativo cliente e sobrescrevendo os valores padrão.
Animações
Se desejar modificar as animações (lottie) do SDK, será necessário incluir as animações com o mesmo nome na pasta res/raw/ da aplicação.
Visualizações externas
É possível modificar completamente as telas do componente mantendo sua funcionalidade e navegação. Para isso, devem ser implementadas as seguintes interfaces:
Tela de diagnóstico de erro:
Depois de criadas as classes que implementam as interfaces, no lançamento do componente será possível adicionar o parâmetro "customViews" para que sejam usadas no SDK.
Atualizado