Face-Detector SDK

FaceDetector es un componente web que permite la captura óptima de rostros.

Introducción

El componente FaceDetectorComponent es un Web Component diseñado para capturar rostros mediante video o imágenes. Este componente forma parte de un ecosistema de componentes web interoperables, compatibles con los principales estándares de la Web. Su arquitectura basada en shadow DOM, slots (ranuras) y encapsulamiento de estilos permite una integración limpia, segura y mantenible en cualquier entorno con soporte para Web Components.

Funcionalidades Clave

  • Funcionalidades Clave
    Carga de archivos locales: Los usuarios pueden seleccionar imágenes desde su dispositivo. El componente valida el archivo y, si cumple con los criterios de un documento legible, emite el resultado codificado en Base64.
  • Captura con cámara: Activa la cámara del dispositivo para detectar automáticamente un rostro en tiempo real. Al detectar uno en condiciones óptimas, captura y emite los datos codificados también en Base64.

Instalación

Utiliza el siguiente comando para instalar el paquete desde NPM:

  1. Pre-requisitos:

    • Node.js y npm instalados.
    • Descargar desde: https://nodejs.org
    • Verifica la instalación:
      node -v
      npm -v
  2. Inicializa tu proyecto (si aplica):

    npm init
  3. Instala el paquete:

npm install @jaak.ai/face-detecto
  1. Confirma la instalación: Verifica que el paquete esté listado en package.json.

Opción alternativa de instalación

También puedes instalar el componente directamente mediante una etiqueta <script> en la cabecerahead HTML:

<script
  type="module"
  src="https://unpkg.com/@jaak.ai/document-detector"></script>


Uso Rápido

<face-detector
  config={{
    width: '640px',
    height: '480px',
    enableMicrophone: true,
    mode: 'video-camera',
    placeholder: 'Sube tu documento',
    buttonText: 'Subir',
    documentAccept: 'image/*',
    description: 'Por favor sube una imagen legible.',
    size: 2048
  }}
  onStatus={(event) => handleStatusChange(event.detail)}
  onComponentError={(event) => handleComponentError(event.detail)}
  onFileResult={(event) => handleFileResult(event.detail)}
></face-detector>

Propiedades del Componente

Configuración del Componente config: ConfigComponent (opcional)

PropiedadTipoDescripción
widthstringAncho del componente (ej. '640px'). Default: '500px'
heightstringAlto del componente (ej. '480px'). Default: '400px'
enableMicrophonebooleanActiva el micrófono. Default: false
modestringModo de operación: 'video-camera' o 'upload-file'
placeholderstringTexto del campo para subir archivo
buttonTextstringTexto del botón de carga
documentAcceptstringTipos de archivos permitidos (ej. image/*)
descriptionstringDescripción mostrada junto al input
sizenumberTamaño máximo permitido (KB)
videoDurationnumberDuración del video en segundos
videoMediaTrackConstraintsRestricciones de video (resolución, fps). Consulta los detalles de la clase aquí.
cameraSourcestringCámara a usar: 'user' o 'environment'
videoFormatstringFormato del video: '1920x1080@30', etc.
autoRecorderbooleanGraba automáticamente si detecta un rostro
hideFaceTrackerbooleanOculta la figura de detección facial
disableFaceDetectionbooleanDesactiva la detección facial
progressiveAutoRecorderbooleanPermite grabar múltiples videos sucesivos sin detenerse automáticamente
muteFaceDetectionMessagesbooleanSilencia los mensajes del sistema de detección
hideTimerbooleanOculta el indicador de grabación
timerStylesTimerStylesEstilo del temporizador
faceTrackerStylesFaceTrackerStylesEstilo de la figura que marca el rostro
offlineModelbooleanCarga el modelo sin peticiones de red (modo offline)

Interfaz TimerStyles

Define el estilo del indicador de grabación en la propiedad de configuración timerStyles:

PropiedadTipoDescripción
colorstringColor del texto del temporizador
circleColorstringColor del círculo de progreso
circleColorEmptystringColor del fondo del círculo
circleColorSuccessstringColor al completar exitosamente
widthnumberAncho del círculo
heightnumberAlto del círculo
fontSizenumberTamaño del texto
posXnumberPosición horizontal (0 - 100)
posYnumberPosición vertical (0 - 100)
strokeWidthnumberAncho del trazo
dashArraystringPatrón del trazo

Interfaz FaceTrackerStyles

Personaliza los colores de detección en la propiedad de configuración faceTrackerStyles:

PropiedadTipoDescripción
validColorstringColor para detección válida
invalidColorstringColor para detección inválida

Eventos

EventoEmiteDescripción
statusStatusFaceDetectorEstado actual del componente
componentErrorwebComponentErrorErrores ocurridos dentro del componente
fileResultFileResultResultado del archivo capturado
faceDetectionMessageFaceDetectionMessageResultados del sistema de detección facial

Métodos

MétodoParámetrosDevuelveDescripción
turnOffFaceDetectorningunovoidDetiene la detección facial
switchMode'video-camera' / 'upload-file'voidCambia entre modos
stopComponentningunovoidDetiene todas las operaciones
restartComponentningunovoidReinicia el componente
getModeningunostringDevuelve el modo actual
recordVideoningunostring (Base64)Inicia la grabación y retorna el video
takeSnapshotningunostring (Base64)Captura una imagen
getVideoElementningunoHTMLVideoElementDevuelve el elemento de video
getStreamningunoMediaStreamDevuelve el stream de la cámara
toggleCameraningunovoidCambia entre cámaras (frontal / trasera)
stopVideoStreamningunovoidDetiene el stream de video
restartVideoStreamningunovoidReinicia el stream de video
resetFaceDetectorresetHard: booleanvoidReinicia la configuración interna

Interfaces adicionales

FileResult

Devuelve los datos del resultado de la detección del rostro

PropiedadTipoDescripción
base64stringArchivo codificado en base64
typestringMIME type (opcional)
namestringNombre original del archivo (opcional)
sizenumberTamaño del archivo en bytes (opcional)

FaceDetectionMessage

Devuelve los datos del mensaje durante la detección del rostro

PropiedadTipoDescripción
labelstringDescripción general del resultado
detailsstringDetalles adicionales
faceExistbooleanIndica si se detectó un rostro
correctPositionbooleanIndica si el rostro está en la posición correcta

webComponentError

Devuelve los datos del error resultante

PropiedadTipoDescripción
labelstringMensaje del error
codestringCódigo del error (opcional)
detailsanyInformación adicional sobre el error (opcional)

Ejemplo de Implementación Básica

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Face Detector Usage</title>
		<script type="module" src="https://unpkg.com/@jaak.ai/face-detector"></script>
	</head>
	<body>
		<div class="content">
			<face-detector id="faceDetector"></face-detector>
		</div>
	</body>
	<style>
		.content {
			height: 90vh;
			display: flex;
			align-items: center;
			justify-content: center;
			padding: 10px;
			margin-top: 1rem;
		}
	</style>

	<script type="module">
		// Seleccionar el componente face-detector
		const faceDetector = document.querySelector('face-detector');

		// Configurar el componente con los ajustes iniciales
		const config = {
			mode: 'video-camera',
			timerStyles: {
				width: 80,
				height: 80,
				fontSize: 40,
				posY: 70,
			},
			width: '100%',
			height: '100%',
			offlineModel: false,
			validateCamera: true,
			enableInstructions: true,
			delayInstructions: 1000,
			delayReplayInstructions: 3000,
			autoRecorder: true,
		};

		faceDetector.config = config;

		// Manejar errores
		faceDetector.addEventListener('componentError', (event) => {
			console.error('Error event:', event.detail);
			// Mostrar mensajes de error al usuario
		});

		// Manejar resultados de archivos
		faceDetector.addEventListener('fileResult', (event) => {
			console.log('Video capturado con éxito:');
			// Procesar el resultado del archivo, por ejemplo, mostrar la imagen o video
			console.log(event.detail.base64);
		});


	</script>
</html>

Recursos Complementarios

📦 Repositorio de ejemplo

Puedes apoyarte con un ejemplo funcional en el siguiente repositorio:
https://github.com/jaak-ai/face-detector-js-example