Saltar al contenido principal

Migración a v3.x

Introducción

La versión 3.x de la biblioteca OCRID introduce actualizaciones significativas que mejoran la interacción del usuario, mejoran el manejo de errores y añaden soporte para configuraciones adicionales como ajustes de entorno y suscripciones a eventos. Esta guía te ayudará a migrar tu integración a la última versión.


Cambios Clave

1. Importación de la Biblioteca

  • Anterior: La biblioteca se importaba como tm-ocrid.
  • Nueva: La biblioteca ahora es fw-ocrid.
// Old
import { OcrId } from 'tm-ocrid';

// New
import { OcrId } from 'fw-ocrid';

Después de reemplazar `tm-ocrid` con `fw-ocrid`, asegúrate de instalar la nueva biblioteca.

```bash
npm install fw-ocrid --save

2. Configuración de Entorno

La nueva versión de la biblioteca permite configurar entornos explícitamente (DEV3, PRE3, PRO3) durante la instanciación.

También soporta parámetros opcionales adicionales como el idioma.

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

const ocrid = new OcrId('YOUR_API_KEY', Envs.PRE3, undefined, 'en');

3. Manejo Mejorado de Eventos

La versión 3.x introduce varios nuevos tipos de eventos que proporcionan un control más detallado del proceso de escaneo y permiten manejar mejor la retroalimentación del usuario. Suscribirse a los eventos adecuados es crucial para gestionar el flujo de manera efectiva.

Actualizaciones Clave en el Manejo de Eventos

  • Nuevos eventos como EventType.CONNECTED y EventTypeUserFeedback.CAMERA_PROCESS_STARTED han sido introducidos para proporcionar mayor control y retroalimentación durante el proceso de escaneo.
  • El evento USER_FEEDBACK incluye subtipos adicionales como PROCESS_FINISHED, que notifica cuando se ha completado todo el proceso.
  • Importante: Asegúrate de suscribirte a los eventos requeridos antes de llamar a ocrid.startStream para garantizar un manejo adecuado y retroalimentación durante el proceso OCR.

Para una lista detallada de todos los eventos disponibles y cómo manejarlos, consulta la Documentación de Eventos.


4. Manejo de Errores

El proceso no se reinicia automáticamente ante errores específicos. Para manejar esto, necesitas reiniciar explícitamente el proceso usando el método ocrid.restart(). Además, asegúrate de gestionar este comportamiento utilizando las suscripciones a eventos adecuadas.

5. Target del Stream

El stream ahora está vinculado a un contenedor específico (elemento HTML), el cual debe pasarse explícitamente a startStream.

await ocrid.startStream(document.getElementById('video-container'));

Pasos de Migración para Javascript

Ejemplo Básico (Antes)

import { OcrId } from 'tm-ocrid';

const ocrid = new OcrId('YOUR_API_KEY');
await ocrid.openCamera().then((stream) => {
return ocrid.startStream();
});
ocrid.close();

Ejemplo Básico (Después)

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

const ocrid = new OcrId('YOUR_API_KEY', Envs.PRE3, undefined, 'en');
await ocrid.startStream(document.getElementById('video-container'));
ocrid.close();

Ejemplo de Suscripción a Eventos (Antes)

ocrid.events(EventType.USER_FEEDBACK).subscribe((e) => {
console.log(e);
});

Ejemplo de Suscripción a Eventos (Después)

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.log('Restart due to analysis error.');
ocrid.restart()
break;
default:
console.log(feedback);
}
});

ocrid.events(EventType.RESULT).subscribe((result) => {
console.log(result);
});

ocrid.events(EventType.ERROR).subscribe((error) => {
console.error('Error:', error);
});

Pasos de Migración para Angular

Ejemplo Básico (Antes)

import {Component, OnInit, OnDestroy} from '@angular/core';
import { OcrId } from 'tm-ocrid';

@Component({
selector: 'app',
template: `<video [srcObject]="stream" autoplay playsinline>`
});
export class App implements OnInit, OnDestroy {
stream;
ocrid;

async ngOnInit(): void {
this.ocrid = new OcrId('YOUR_API_KEY');
this.stream = await this.ocrid.openCamera();
await this.ocrid.startStream();
}

ngOnDestroy(): void {
this.ocrid.close();
}
}

Ejemplo Básico (Después)

import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core';
import { OcrId, Envs, EventType, EventTypeUserFeedback } from 'fw-ocrid';

@Component({
selector: 'app',
template: `<div #videoContainer></div>`
})
export class App implements OnInit, OnDestroy {
@ViewChild('videoContainer', { static: false }) videoContainer: any;
private ocrid: OcrId;

async ngOnInit(): void {
this.ocrid = new OcrId('YOUR_API_KEY', Envs.PRE3, undefined, 'en');
this.ocrid.events(EventType.USER_FEEDBACK).subscribe((feedback) => {
console.log('User Feedback:', feedback);
});
await this.ocrid.startStream(this.videoContainer.nativeElement);
}

ngOnDestroy(): void {
this.ocrid.close();
}
}

Lista de Verificación para la Migración

  • Actualizar Importación de Biblioteca:

    • Reemplazar tm-ocrid con fw-ocrid.
    • Ejecutar el comando correspondiente para instalar la nueva biblioteca.
      npm install fw-ocrid --save
  • Configurar Entorno:

    • Usar Envs para establecer el entorno correcto (DEV3, PRE3 o PRO3).
  • Suscribirse a Nuevos Eventos:

    • Manejar PROCESS_FAILED_DUE_ANALYSIS_ERROR y otros nuevos tipos de eventos.
  • Pasar un Contenedor a startStream:

    • Asegurarse de que el método startStream apunte a un elemento HTML válido.
  • Probar Exhaustivamente:

    • Validar la integración contra todas las interacciones del usuario y casos extremos.

Soportesoporte.onboarding@finwave.es