Vídeo identificación
Introducción
ELa captura facial se realiza con el VideoID Component.
Este componente se encarga de realizar la grabación de un usuario identificándose, mostrando la cara y su documento de identidad.
Gestión interna de cámaras, micro y permisos.
Conexión con los servicios.
Lectura del OCR y captura del documento.
En el apartado de Lanzamiento simplificado se detallan los pasos necesarios para la integración básica del SDK. En esta sección se añade la información para el lanzamiento de este componente.
Dependencia
La dependencia específica del componente es:
implementation "com.facephi.androidsdk:video_id_component:$version"Controladores disponibles
Controlador
Descripción
VideoIdController
Controlador principal de video identificación
SignatureVideoIdController
Controlador para firmar un proceso con una Captura
Lanzamiento simplificado
Una vez iniciado el SDK y creada una nueva operación se podrá lanzar el componente. Se podrá hacer uso de cualquiera de sus controladores para ejecutar su funcionalidad.
Lanzamiento:
Configuración básica
Para lanzar el componente actual, se deberá crear un objeto VideoIdConfigurationData que será la configuración del controlador del componente.
La configuración básica necesaria para es la siguiente:
Los diferentes modos son:
VideoIdMode.ONLY_FACE
VideoIdMode.FACE_DOCUMENT_FRONT
VideoIdMode.FACE_DOCUMENT_FRONT_BACK
VideoIdMode.DOCUMENT_FRONT
VideoIdMode.DOCUMENT_FRONT_BACK
Recepción del resultado
El lanzamiento devolverá la información en formato SdkResult. Pudiendo diferenciarse entre un lanzamiento correcto y uno incorrecto:
Recepción de errores
Los errores se devolverán como un objeto 'VideoIdError'.
Lista de errores:
VID_ACTIVITY_RESULT_MSG_ERROR: El resultado de la actividad es incorrecto
VID_APPLICATION_CONTEXT_ERROR: El contexto de aplicación necesario es nulo
VID_CANCEL_BY_USER: El usuario ha cancelado el proceso
VID_CANCEL_LAUNCH: Se ha hecho una cancelación general del SDK
VID_COMPONENT_LICENSE_ERROR: La licencia del componente no es correcta
VID_EMPTY_LICENSE: El String de licencia está vacío
VID_FACE_DETECTION_TIMEOUT: No se ha detectado cara
VID_FETCH_DATA_ERROR: Error en la recogida del resultado
VID_FLOW_ERROR: Error en el proceso de flow
VID_INITIALIZATION_ERROR: Error de inicialización
VID_MANAGER_NOT_INITIALIZED: Los managers son nulos
VID_NETWORK_CONNECTION: Error en la conexión a internet
VID_NO_DATA_ERROR: Los datos de entrada son nulos
VID_OPERATION_NOT_CREATED: No hay ninguna operación en curso
VID_PERMISSION_DENIED: El usuario ha rechazado los permisos
VID_SOCKET_ERROR: Error en la conexión de los servicios
VID_TIMEOUT: Timeout en el proceso
VID_VIDEO_ERROR: Error en el procesamiento del vídeo
VID_VIDEO_RECORDING_ACTIVE: No se puede iniciar porque el proceso de vídeo grabación está activo
Recepción de ejecución correcta - data
En la parte de SdkResult.Success - data, dispondremos de la clase VideoIdResult.
El resultado devuelve las imágenes en formato SdkImage, es posible extraer el bitmap accediendo a image.bitmap. Si se quisiera convertir a base64 se puede utilizar la función:
Base64.encodeToString(this.toByteArray(), Base64.NO_WRAP)
Los campos devueltos en el resultado son los siguientes:
frontDocumentData
Datos del frente del documento. Incluye:
documentImage: Imagen del documento
documentFullImage: Imagen completa capturada
documentFaceImage: Si se ha encontrado una cara en el documento se devuelve la imagen de la misma.
iqaOverExposure: Valor numérico entre 0 y 1 que indica el nivel de sobreexposición de la imagen; un valor alto sugiere que la imagen está demasiado iluminada, lo que puede dificultar la lectura del documento.
iqaReadable: Valor numérico entre 0 y 1 que indica la legibilidad del texto del documento; valores más altos implican que el texto es más claro y fácil de reconocer.
iqaSharpness: Valor numérico entre 0 y 1 que indica la nitidez de la imagen del documento; valores altos reflejan una imagen más enfocada, lo que mejora la capacidad de extracción de datos.
documentFaceImageTokenized: Si se ha encontrado una cara en el documento se devuelve la imagen cifrada de la misma.
backDocumentData
Datos del reverso del documento. Incluye:
documentImage: Imagen del documento
documentFullImage: Imagen completa capturada
documentFaceImage: Si se ha encontrado una cara en el documento se devuelve la imagen de la misma.
iqaOverExposure: Valor numérico entre 0 y 1 que indica el nivel de sobreexposición de la imagen; un valor alto sugiere que la imagen está demasiado iluminada, lo que puede dificultar la lectura del documento.
iqaReadable: Valor numérico entre 0 y 1 que indica la legibilidad del texto del documento; valores más altos implican que el texto es más claro y fácil de reconocer.
iqaSharpness: Valor numérico entre 0 y 1 que indica la nitidez de la imagen del documento; valores altos reflejan una imagen más enfocada, lo que mejora la capacidad de extracción de datos.
documentFaceImageTokenized: Si se ha encontrado una cara en el documento se devuelve la imagen cifrada de la misma.
faceImage
Imagen del usuario capturada en la primera sección del proceso.
ocrMap
Mapa del OCR extraído del documento.
ocrDiagnostic
Diccionario con el diagnóstico OCR del documento. Las claves son los campos a validar y los valores son instancias de OcrDiagnostic.
Diagnóstico OCR extraído del documento.
OK: El OCR es correcto.
NOT_FOUND: No se encuentra la clave OCR.
TOLERANCE_ERROR: El OCR no es correcto.
WARNING: El OCR no es correcto, pero es solo una advertencia porque es un campo opcional.
matchingSidesScore
Valor numérico entre 0 y 1 que estima el nivel de coincidencia entre las caras del documento (frontal y trasera).
documentType
Tipo de documento obtenido.
personalData
Conjunto reducido de datos obtenidos del usuario:
issuer
documentNumber
issueDate
expiryDate
name
surname
fullName
gender
birthDate
birthPlace
nationality
address
nfcKey
numSupport
mrz
speechText
Texto que el usuario deberá pronunciar durante la grabación del video.
faceImageTokenized
Imagen cifrada del usuario capturada en la primera sección del proceso.
Información avanzada
Este apartado amplía la información del componente.
Configuración avanzada del componente
Para lanzar el componente actual, se deberá crear un objeto _VideoIdConfigurationData _ que será la configuración del controlador del componente.
Los campos incluidos en la configuración (url, apiKey, tenantId), normalmente no es necesario que sean informados ya que se completan internamente a través de la licencia usada.
Estos campos suelen informarse solo cuando el servidor es OnPremise.
url
Ruta al socket de video
apiKey
ApiKey necesaria para la conexión con el socket de video
tenantId
Identificador del tenant que hace referencia al cliente actual, necesario para la conexión con el servicio de video.
sectionTime
Indica la duración de las secciones con tiempo asociado (captura facial y cambio de cámara).
mode
ONLY_FACE: El proceso se realiza capturando la cara del usuario.
FACE_DOCUMENT_FRONT: El proceso se realiza capturando la cara del usuario y la parte delantera del documento de identidad.
FACE_DOCUMENT_FRONT_BACK: El proceso se realiza capturando la cara del usuario y el documento de identidad completo.
DOCUMENT_FRONT: El proceso extrae la información sólo de la cara delantera del documento.
DOCUMENT_FRONT_BACK: El proceso extrae la información sólo del documento completo.
timeoutServerConnection
Tiempo máximo de espera en ms para la respuesta del servidor.
sectionTimeout
Tiempo máximo permitido para completar una sección (en ms).
autoFaceDetection
Activa/Desactiva la detección automática de cara.
debug
Habilita la visualización de información adicional útil para el diagnóstico y seguimiento del comportamiento interno.
countryFilter
Permite restringir el procesamiento a un conjunto específico de países, aceptando un array de strings que representan los alias en formato ISO3 (código de 3 letras según el estándar ISO 3166-1).
documentFilter
Permite restringir los tipos de documentos aceptados durante la captura. Los valores posibles son:
"IDC": Documento de Identidad (ID Card)
"PSP": Pasaporte (Passport)
"DLI": Licencia de Conducir (Driver License)
"VIS": Visado (Visa)
"FOC": Tarjeta de Extranjero (Foreign Card)
"INV": Factura (Invoice)
"CUS": Documento Personalizado (Custom Document)
speechText
Texto que el usuario deberá pronunciar durante la grabación del video.
ocrValidations
Diccionario con las validaciones OCR a realizar. Las claves son los campos a validar y los valores son instancias de OcrValidationValue.
OcrValidationValue tiene los siguientes campos:
value: El valor a validar.
tolerance: El nivel de tolerancia para la validación.
STRICT: Validación estricta.
LOW_TOLERANCE: Validación con baja tolerancia.
MEDIUM_TOLERANCE: Validación con tolerancia media.
HIGH_TOLERANCE: Validación con alta tolerancia.
validationType: El tipo de validación a realizar.
OPTIONAL: Validación opcional.
REQUIRED: Validación obligatoria.
ocrMaxWarnings
Número máximo de advertencias permitidas en la validación OCR.
maxRetries
Número máximo de reintentos permitidos para la validación OCR. El valor por defecto es 3.
Personalización del componente
Aparte de los cambios que se pueden realizar a nivel de SDK (los cuales se explican en el documento de Personalización del SDK), este componente en concreto permite la modificación de su interfaz.
Textos
Si se desea modificar los textos de la SDK habría que incluir el siguiente fichero XML en la aplicación del cliente, y modificar el valor de cada String por el deseado.
Name
Value
video_id_component_text_waiting_agent_title
Video ID
video_id_component_document_front_message
Coloca el frente de tu documento en las marcas
video_id_component_document_front_message_readable
Mantén el frente de tu documento en las marcas
video_id_component_document_front_message_not_readable
Acerca el frente de tu documento a las marcas
video_id_component_document_back_message
Ahora coloca el reverso de tu documento
video_id_component_document_back_message_readable
Mantén el reverso de tu documento en las marcas
video_id_component_document_back_message_not_readable
Acerca el reverso de tu documento a las marcas
video_id_component_switch_camera_message
Prepara el documento mientras se procede al cambio de cámara
video_id_component_finish_button
FINALIZAR
video_id_component_ready_button
CONTINUAR
video_id_component_exit_alert_cancel
Cancelar
video_id_component_exit_alert_question
¿Seguro que quiere finalizar el proceso?
video_id_component_exit_alert_finish
Finalizar
video_id_component_exit_alert_accept
Aceptar
video_id_component_close_button_alt
Cerrar
video_id_component_back_button_alt
Atrás
video_id_component_logo_alt
Logo
video_id_component_face_message
Coloca tu cara dentro del marco.
video_id_component_multiple_face_message
Varias caras detectadas. Coloca solo tu cara dentro del marco
video_id_component_speech_message
Di en voz alta: "Yo (nombre y apellidos) acepto los términos y condiciones".
video_id_component_front_document_captured_message
Frente del documento capturado correctamente
video_id_component_document_back_finish_message
Reverso del documento capturado correctamente
video_id_component_restart_button
REPETIR GRABACIÓN
video_id_component_timeout_title
Tiempo superado
video_id_component_timeout_desc
No pudimos hacer la grabación a tiempo. Probemos de nuevo.
video_id_component_face_timeout_title
No hemos detectado tu rostro
video_id_component_face_timeout_desc
Por favor, coloca tu rostro en la marca para iniciar el proceso
video_id_component_internal_error_title
Hubo un problema técnico
video_id_component_internal_error_desc
Pedimos disculpas. Apareció un error inesperado. Inténtalo de nuevo
video_id_component_ocr_error_desc
El documento no se ha podido leer. Por favor, revisa la iluminación y la distancia a la cámara
video_id_component_finish_message
¡Video grabación finalizada!
Animaciones
Si se desea modificar las animaciones (lottie) de la SDK habría que incluir las animaciones con el mismo nombre en la carpeta res/raw/ de la aplicación.
Vistas externas
Es posible modificar completamente las pantallas del componente manteniendo su funcionalidad y navegación. Para ello deben implementarse los interfaces siguientes:
Pantalla de diagnóstico de error:
Una vez creadas las clases que implementan los interfaces, en el lanzamiento del componente se podrá añadir el parámetro "customViews" para que se utilicen en el SDK.
Last updated