Saltar al contenido principal

Integración de OCR

Integre la biblioteca fw-ocrid para habilitar la funcionalidad de OCR directamente en su aplicación. Esta guía proporciona una configuración básica para usar la biblioteca con JavaScript puro.


1. Instalación

Comience instalando la biblioteca fw-ocrid a través de NPM.

npm install fw-ocrid

2. Integración en JavaScript

Implementación Básica

Esta sección explica cómo configurar y utilizar la funcionalidad de OCR en una aplicación utilizando JavaScript puro. Incluye la inicialización de la biblioteca, el manejo de eventos de retroalimentación del usuario y resultados, así como la gestión de errores durante el proceso.

import { OcrId, Envs, EventType, EventTypeUserFeedback, ResultHelper } from 'fw-ocrid';

// Variable para almacenar el ID del proceso
let processId;

async function initOCR() {
// Initialize OCRID with API Key, environment, optional config, and optional language
const ocrid = new OcrId('YOUR_API_KEY', Envs.PRE3, undefined, 'en');

// Handle user feedback events
ocrid.events(EventType.USER_FEEDBACK).subscribe((feedback) => {
switch (feedback) {
case EventTypeUserFeedback.SHOW_DOCUMENT_FRONT_SIDE:
console.log('Show the front side of the document.');
break;
case EventTypeUserFeedback.SHOW_DOCUMENT_REVERSE_SIDE:
console.log('Show the reverse side of the document.');
break;
case EventTypeUserFeedback.DOCUMENT_FRONT_SIDE_COMPLETED:
console.log('Front side scanned successfully.');
break;
case EventTypeUserFeedback.PROCESS_FAILED_DUE_ANALYSIS_ERROR:
console.error('Process failed due to an analysis error.');
break;
case EventTypeUserFeedback.PROCESS_FINISHED:
console.log('Scanning process completed.');
break;
default:
console.log('Feedback:', feedback);
}
});

// Handle result events
ocrid.events(EventType.RESULT).subscribe((result) => {
console.log('Scan completed:', result);
// Recuperar resultados detallados usando processId
getOcrResult(processId);
ocrid.close(); // Close the process
});

// Handle error events
ocrid.events(EventType.ERROR).subscribe((error) => {
console.error('An error occurred:', error);
});

// Start the camera stream and scanning process
processId = await ocrid.startStream(document.getElementById('video-container'));
console.log('Camera stream started. Process ID:', processId);
}

// Función para obtener y procesar los resultados del OCR
async function getOcrResult(processId) {
try {
// Método 1: Usando ResultHelper (recomendado)
const result = await ResultHelper.get(processId, Envs.PRE3);
console.log('Resultado completo:', result);

// Procesar los datos específicos del resultado
if (result?.success) {
// Tipos de documento identificados
const documentTypes = result.value.types;

// Campos extraídos del documento
const fields = result.value.fields;

// Imágenes capturadas
const images = result.value.images;

console.log('Tipo de documento:', documentTypes);
console.log('Campos extraídos:', fields);
console.log('Imágenes:', images);
}

// Método 2: Usando llamada HTTP directa al endpoint
// const url = `${Endpoints[Envs.PRE3]}result/${processId}`;
// fetch(url)
// .then(response => response.json())
// .then(data => {
// console.log('Resultado desde API:', data);
// })
// .catch(error => {
// console.error('Error al obtener el resultado:', error);
// });

} catch (error) {
console.error('Error al obtener el resultado OCR:', error);
}
}

// Call the initialization function when the page is loaded
window.onload = () => {
initOCR();
};

3. Estructura HTML

Asegúrese de que su archivo HTML incluya un contenedor de video para la transmisión de la cámara y un script para iniciar el proceso de OCR.

<!DOCTYPE html>
<html>
<head>
<title>OCRID Example</title>
</head>
<body>
<div id="video-container"></div>
<script type="module" src="index.js"></script>
</body>
</html>

4. Estructura del Resultado

El resultado obtenido mediante ResultHelper.get() tiene la siguiente estructura:

{
id: "process-123456", // ID del proceso
startTimestamp: 1647532091, // Timestamp de inicio
endTimestamp: 1647532120, // Timestamp de finalización
success: true, // Indicador de éxito
value: {
types: [ // Tipos de documento identificados
{
name: "DNI", // Nombre del tipo de documento
year: 2020, // Año del documento
id: "DNI-2020", // ID del tipo de documento
probability: 0.98, // Probabilidad de coincidencia
country: "ES" // País del documento
}
],
fields: [ // Campos extraídos del documento
{
name: "fullName", // Nombre del campo
value: "Juan Pérez" // Valor extraído
},
{
name: "documentNumber",
value: "12345678X"
}
],
authenticity: [ // Validaciones de autenticidad
{
name: "hologramCheck",
value: true
}
],
images: [ // Imágenes capturadas
{
name: "frontImage",
value: "base64_encoded_image_data..."
}
],
validations: [ // Validaciones adicionales
{
name: "expiredCheck",
value: false
}
]
}
}

Recursos Adicionales

Para guías de configuración adicionales, explore:


Soportesoporte.onboarding@finwave.es