smaatsdk - inteligencia artificial para el procesado de ... · • procesador 1.2 ghz dual-core...

29
SMAATSDK REQUISITOS Y DOCUMENTACIÓN DEL MÓDULO INTELLIGENTSCANNER EN ANDROID RELEASE v1.0

Upload: others

Post on 10-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

SMAATSDK

REQUISITOS Y DOCUMENTACIÓN DEL MÓDULOINTELLIGENTSCANNER EN ANDROID

RELEASE v1.0

Page 2: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Índice de contenidoAlcance..................................................................................................3Objetivos................................................................................................3Diagrama de funcionamiento general..............................................................4Ejemplo de encarpetado y ficheros necesarios para la captura de documentos............5Requisitos mínimos para el funcionamiento del SDK.............................................6Requisitos recomendados para el funcionamiento del SDK......................................6Funciones proporcionadas y parámetros a utilizarlas............................................6

Funciones necesarias para la captura documental............................................6Funciones de conexión con el Post-Procesado.................................................8Funciones para la extracción de texto con OCR...............................................8Funciones opcionales para la captura documental............................................9Funciones necesarias para la captura de códigos de barra.................................10Funciones opcionales para la captura de códigos de barra.................................10Funciones opcionales comunes..................................................................11Parámetros a utilizar.............................................................................12Diagrama de las funcionalidades................................................................17

Ejemplo de uso.......................................................................................18Ejemplo de configuración de captura por defecto...........................................18Ejemplo de configuración de captura personalizada........................................21

Anexos..................................................................................................26Uso de la pantalla de captura...................................................................26

Documentos (DNI, Tarjetas de Residencia, Pasaportes, Cheques y Tarjetas).........26Códigos de barra...............................................................................28

Recomendaciones para capturar................................................................29

Page 3: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

AlcanceEste documento contiene una explicación detallada sobre las funcionalidades y los requisitos del SDKIntelligentScanner. Para empezar se mostrará un diagrama de funcionamiento general y se explicarán queficheros se necesitan para la captura de documentos y todos los pasos que se deben llevar a cabo para suencarpetado. A continuación, se mencionarán los requisitos mínimos para un correcto funcionamiento delSDK, así como los recomendados por Serimag. Finalmente, se explicarán todas la funciones proporcionadasy sus parámetros, junto a un ejemplo de uso. El ejemplo de uso consta de dos configuraciones: por defectoy personalizada.

ObjetivosLos objetivos de este documento es explicar de manera detallada el funcionamiento y los requisitos delMódulo IntelligentScanner y facilitar su integración en nuevos proyectos o proyectos ya existentes.

04/04/2018 3/29

Page 4: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Diagrama de funcionamiento general

04/04/2018 4/29

Bloques propios de la aplicación

Bloques encapsulados por el SDK

Bloques propios del motor de captura

Bloques propios de la librería de lectura de códigos de barra

Bloques propios del motor de OCR

Solicitar captura y extracción de

datos

Devolvercontrol

Abrir pantalla de captura para

Códigos de barra

Abrir pantallade captura

Capturardocumento

Guardarcaptura

Retornar texto con el código de barra capturado

Detenercaptura

Solicitarcapturar

código de barra

Extracción OCR

Retornar texto extraído

Page 5: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Ejemplo de encarpetado y ficheros necesarios para la captura dedocumentos

En el almacenamiento de la tarjeta de memoria (SD) se crea la carpeta IntelligentScanner que dentrocontiene tres carpetas necesarias para el funcionamiento del SDK:

Captures:

• En esta carpeta se guardan las capturas realizadas por el motor.

Config

• En esta carpeta se guarda el fichero de configuración engine.cfg

Models:

• Carpeta contenedora de los modelos de clasificación de los diferentes documentos a detectar. Eneste caso ES_ID_FRONT, ES_ID_BACK, ES_ID_23, ES_RESIDENCE_FRONT, ES_RESIDENCE_BACK yEU_CHECK_FRONT. Además contiene la carpeta tessdata que a su vez debe contener el modelomrz.traineddata.

04/04/2018 5/29

Page 6: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Requisitos mínimos para el funcionamiento del SDK• Android 5.0 (API 21) o posterior

• Dispositivo con cámara trasera.

• Dispositivo con resolución de preview igual o superior a 1280 x 720.

• 100MB de RAM disponibles.

• Aproximadamente 2.5MB de disco disponible para la captura de 10 documentos.

• Aproximadamente 10MB de disco disponible para la instalación de la aplicación correspondiente alSDK.

• Suficiente espacio en disco para almacenar los diferentes modelos.

• Procesador 1.2 GHz Dual-Core

Requisitos recomendados para el funcionamiento del SDK• Android 5.0 o posterior

• Dispositivo con cámara trasera.

• Dispositivo con resolución de preview igual o superior a 1920 x 1080.

• 100MB de RAM disponibles.

• Aproximadamente 5MB de disco disponible para la captura de 10 documentos.

• Aproximadamente 10MB de disco disponible para la instalación de la aplicación correspondiente alSDK.

• Suficiente espacio en disco para almacenar los diferentes modelos.

• Procesador 1.2 GHz Quad-Core.

Funciones proporcionadas y parámetros a utilizarlas

Funciones necesarias para la captura documental

Funciones necesarias para la captura documental (DNI, TARJETA DE RESIDENCIA , PASAPORTE , CHEQUE,TARJETA)

Estas funciones se encuentran definidas en el fichero IntelligentScannerInterface.java

IntelligentScannerInterface intelligentScanner = IntelligentScannerInterface.getInstance()

Asigna la instancia del motor de procesado. Lainstancia de este objeto sigue el patrón Singleton.

void intelligentScanner.setModelPath(String modelPath)

Fija el path de la carpeta Models, donde están losmodelos, con el objetivo de poder posteriormentecargarlos en memoria.

04/04/2018 6/29

Page 7: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

void intelligentScanner.setConfiglPath(String ConfigPath)

Fija el path de la carpeta Config, donde se encuentra elfichero de configuración, “engine.cfg”. Excepciones:

• Exception

void intelligentScanner.setCapturelPath(String CapturePath)

Fija el path de la carpeta Captures, donde seencuentran las capturas realizadas.

void intelligentScanner.loadModel(String documentType)

Carga modelo en memoria.Excepciones:

• EngineModelNotFound• ConfigFileNotFound• ConfigFileMalformatted• DocumentTypeNotDefined• Exception

boolean intelligentScanner.checkIfModelLoaded(String documentType)

Comprueba si el modelo del documento especificadoestá correctamente cargado. Excepciones:

• EngineModelNotLoaded Retorno:

• True → Archivo cargado• False → Archivo NO cargado

void intelligentScanner.useEngine(String documentType)

Asigna modelo del documento al motor Excepciones:

• EngineModelNotLoadedAntes de usar:

• Comprobar que el modelo esta cargadomediante la función checkIfModelLoaded().

*Añadir funciones opcionales y de conexión con el post-procesado

void intelligentScanner.runScanner(String documentType, Activity activity, int requestCode)

Arrancar la pantalla de captura. Excepciones:

• EngineModelNotLoaded• EngineModelNotFound

Antes de usar: • Asegurarse de asignar el modelo del

documento al motor mediante useEngine()

String getCaptureName() Obtener el nombre (incluyendo extensión) de la últimacaptura de la ejecución del métodointelligentScanner.runScanner();Retorno:

• String con nombre y extensión en caso derealizar captura.

• String vacía en caso de no haber realizadocaptura.

Excepciones:• Exception

04/04/2018 7/29

Page 8: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

void intelligentScanner.unloadModel(String documentType)

Eliminar el modelo especificado de memoria.Excepciones:

• EngineModelNotFoundAntes de usar:

• Asegurarse de asignar el modelo deldocumento al motor mediante useEngine()

Funciones de conexión con el Post-Procesado

*Funciones de conexión con el Post-ProcesadoEstas funciones generan la imagen a post-procesar

void intelligentScanner.generatePostProcessImage(boolean generatePostProcessImageFlag)

Genera la imagen que se enviará como entrada almódulo de post-procesado.

• True → activar• False → desactivar

String intelligentScanner.getPostProcessImageName()

Obtiene el nombre (incluyendo extensión) de la últimacaptura temporal que se puede enviar a post-procesar.Retorno:

• String con nombre y extensión en caso derealizar captura.

• String vacía en caso de no haber guardado laimagen a post-procesar mediante la funcióngeneratePostProcessImage();

Excepciones:• Exception

Funciones para la extracción de texto con OCR

*Funciones para la extracción de texto con OCR

void intelligentScanner.loadOcrEngine() Crea el motor de extracción de texto con OCR.

void intelligentScanner.useOcrEngine(String documentType)

Carga el modelo en memoria. Excepciones:

• EngineModelNotFound• DocumentTypeNotDefined

void intelligentScanner.setOcrParameters(int timerFinishOCR)

Permite parametrizar el timer que devuelve el controlde la aplicación en caso de que no se consigue extraerel texto con OCR.

04/04/2018 8/29

Page 9: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

*Funciones para la extracción de texto con OCR

JSONObject intelligentScanner.getMrzData() Devuelve los datos extraídos con el OCR deldocumento. Dentro del conjunto de datos se diferenciaentre:

• “name”• “surname”• “optionalData”• “birthDate”• “gender”• “nationality”• “expiryDate”• “documentType”• “isssuingState”• “documentNumber”

Funciones opcionales para la captura documental

*Funciones opcionalesEstas funciones se pueden utilizar para cambiar las propiedades de captura. Antes de utilizarlas hay que

asegurarse de tener el modelo del documento asignado al motor.

void intelligentScanner.setImageQuality(int width, int height, int quality)

Fijar propiedades (ancho, alto, calidad) de la imagenprocesada.

void intelligentScanner.setCaptureName(String name)

Fijar el nombre de la imagen procesada. En caso dehaber activado la generación de la imagen a post-procesar mediante generatePostProcessImage(), lasegunda imagen se generará conservando el nombrefijado y el sufijo “_temp”.

void intelligentScanner.aggressiveCapture(boolean aggressiveCapture)

Fijar modo de captura agresivo (sin bordes deseguridad) o normal (con bordes de seguridad).

• True → Agresivo• False → Normal

void intelligentScanner.enableFocusFilter() Activar el filtro de enfoque.

void intelligentScanner.disableFocusFilter() Desactivar el filtro de enfoque.

void intelligentScanner.enableTemplate(int templateColor)

Activar la plantilla en el preview de la cámara. Permiteparametrizar el color del template.

void intelligentScanner.disableTemplate() Desactivar la plantilla en el preview de la cámara.

void enableFeatures(int featuresColor) Activar la visualización de los puntos correspondientesa la extracción de características en el preview. Permiteparametrizar el color de los puntos.

04/04/2018 9/29

Page 10: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

void disableFeatures() Desactivar la visualización de los puntoscorrespondientes a la extracción de características enel preview.

boolean intelligentScanner isDNI3() Verifica si el ANVERSO de un DNI español capturado esversión 2.0 o 3.0. Esta función devuelve:

• True → DNI 3.0• False → DNI 2.0

void intelligentScanner.cleanCapturesFolder() Eliminar todo el contenido de la carpeta “Captures” dela memoria del dispositivo. Excepciones:

• Exception

Funciones necesarias para la captura de códigos de barra

*Funciones para la captura de Códigos de barraEstas funciones son imprescindibles para la lectura de códigos de barra

void intelligentScanner.useEngine(String documentType)

Asigna modelo del documento al motor Excepciones:

• EngineModelNotLoaded

void intelligentScanner.runScanner(String documentType, Activity activity, int intentResult)

Arrancar la pantalla de captura. Excepciones:

• EngineModelNotLoadedAntes de usar:

• Asegurarse de asignar el modelo deldocumento al motor mediante useEngine()

String intelligentScanner.getBarcodeResult() Devuelve el código de barra leído en formato String.

void intelligentScanner.disableBarcodeAnimation( BarcodeType barcodeType)

Desactiva la animación de la linea en el preview de lacámara.

Funciones opcionales para la captura de códigos de barra

*Funciones opcionales para la captura de Códigos de barraEstas funciones se pueden utilizar para la captura de códigos de barra

void intelligentScanner.enableBarcodeAnimation(BarcodeType barcodeType)

Activa la animación de la linea en el preview de lacámara.

04/04/2018 10/29

Page 11: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

*Funciones opcionales para la captura de Códigos de barraEstas funciones se pueden utilizar para la captura de códigos de barra

void intelligentScanner.enableBarcodeBackground( BarcodeType barcodeType)

Activa el sombreado oscuro fuera de la zona de capturade código de barra.

void intelligentScanner.disableBarcodeBackground(BarcodeType barcodeType)

Desactiva el sombreado oscuro fuera de la zona decaptura de código de barra.

void intelligentScanner.enableBarcodeTemplate( BarcodeType barcodeType, int barcodeTemplateColor)

Activa la platilla de códigos de barra en el preview de lacámara.

void intelligentScanner.disableBarcodeTemplate(BarcodeType barcodeType)

Desactiva la plantilla de códigos de barra en el previewde la cámara.

String getBarcodeFormat() Devuelve un String con el formato del código de barra.

Funciones opcionales comunes

*Funciones opcionales comunesEstas funciones son comunes tanto para la captura documental, como para la captura de códigos de barra.

void intelligentScanner.setFocusParameters(int timerSwitchFocus, int timerAutofocus)

Controla el enfoque de la cámara. Permiteparametrizar el tiempo que transcurre hasta que secambia del autofocus de la cámara al autofocuscontrolado. Una vez desactivado el autofocus de lacámara, también permite parametrizar cada cuantotiempo se obliga enfocar. Esta función se utiliza debidoa que en algunos dispositivos la cámara no para deenfocar y se dificulta la captura del documento

void intelligentScanner.setTextToScreen(String textToScreen)

Texto a mostrar en la pantalla de captura.

void intelligentScanner.enableCaptureAdvice( int adviceBackgroundColor, int adviceTextColor, int timeoutAdviceText, int timeoutForceCapture, int timeoutExitCamera)

Activa mensaje de advertencia en caso de no captura.Permite parametrizar el color del mensaje y el fondosobre el que se escribe el texto. También parametrizael timeout que permite activar el mensaje y el timeoutque activa la captura sin validación del modelo, asícomo el timeout que permite devolver el control de lacámara si tampoco se consigue capturar utilizando lacaptura sin validación del modelo.

04/04/2018 11/29

Page 12: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

void intelligentScanner.setAdviceTextToScreen(String adviceTextToScreen)

Texto a mostrar como consejo en caso de no captura. Elconsejo se muestra en pantalla transcurrido eltimeoutAdviceText de la funciónenableCaptureAdvice() hasta que se devuelve elcontrol de la cámara. EJEMPLO: “Consejo: deslice la barra de exposición para mejorarla captura!"

void intelligentScanner.setDocumentNameTextToScreen(String documentNameTextToScreen, int documentNameColor)

Permite mostrar por pantalla el String con el nombredel documento que se desea capturar. Además permiteparametrizar el color del texto.

void intelligentScanner.enableBrightnessBar(int brightnessBarColor, brightnessBarCircleColor)

Activa la barra de brillo. Además activa la animaciónque indica la utilización de la barra de brillo una vezconcluido el timeoutAdviceText de la funciónenableCaptureAdvice().

void intellgentScanner. disableBrightnessBar() Desactiva la barra de brillo. Además desactiva laanimación que indica la utilización de la barra de brillouna vez concluido el timeoutAdviceText de la funciónenableCaptureAdvice().

boolean intelligentScanner.getDocumentVerified()

Verifica si el documento se ha capturado utilizando elmodelo de captura o utilizando la captura sinvalidación del modelo. Esta función devuelve:

• True → Captura normal • False → Captura sin validación del modelo

boolean intelligentScanner.getBackButtonPressed()

Verifica si se ha devuelto el control a la aplicacióndebido a que el usuario apretó el botón “Back”. Estafunción devuelve:

• True → Se ha apretado “Back”• False → No se ha apretado “Back”

Parámetros a utilizar

Parámetros a utilizarParámetros a utilizar en la funciones anteriores

String modelPath Este parámetro especifica la ruta hasta la carpeta“Model”.

String configPath Este parámetro especifica la ruta hasta la carpeta“Config”.

04/04/2018 12/29

Page 13: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

String capturePath Este parámetro especifica la ruta hasta la carpeta“Capture”.

String documentType Este parámetro puede tomar siete valores quecorresponden con el nombre de los documentos acapturar:

• ES_ID_FRONT• ES_ID_BACK• ES_RESIDENCE_FRONT• ES_RESIDENCE_BACK• INT_PASSPORT• EU_CHECK_FRONT• STANDARD_CARD

Par el caso de captura de códigos de barra esteparámetro tendrá el siguiente valor:

• BARCODE

int requestCode Es el requestCode para obtener el resultado delstartActivityForResult().

String text Este parámetro puede contener cualquier carácteraceptado por una variable string con un máximo de 60caracteres. Por defecto este parámetro es una stringvacía.

String adviceTextToScreen Este parámetro puede contener cualquier carácteraceptado por una variable string con un máximo de 60caracteres. Por defecto este parámetro es una stringvacía.

String documentNameTextToScreen Este parámetro puede contener cualquier carácteraceptado por una variable string con un máximo de 60caracteres. Por defecto este parámetro es una stringvacía.

int adviceBackgroundColor Este parámetro especifica el color de fondo delmensaje de advertencia, así como el color de lasflechas que indican el uso de la barra de exposición.Este parámetro es un int debido a que el retorno de laclase Color es un int.

int adviceTextColor Este parámetro especifica que color del texto delmensaje de advertencia. Este parámetro es un intdebido a que el retorno de la clase Color es un int.

int dcumentNameColor Este parámetro especifica que color del texto dedocumentNameTextToScreen. Este parámetro es unint debido a que el retorno de la clase Color es un int.

04/04/2018 13/29

Page 14: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

int templateColor Este parámetro especifica el color de la plantilla que semuestra en el preview de la cámara. Este parámetro esun int debido a que el retorno de la clase Color es unint.

int featuresColor Este parámetro especifica el color de la puntos que semuestran en el preview de la cámara.

int brightnessBarColor Este parámetro especifica el color de la barra de brillo.Este parámetro es un int debido a que el retorno de laclase Color es un int.

int brightnessBarCircleColor Este parámetro especifica el color del circulo de la barrade brillo. Este parámetro es un int debido a que elretorno de la clase Color es un int.

int timerSwitchFocus Este parámetro especifica el tiempo que transcurre desde que se activa la cámara hasta que se desactiva elautofocus que se sustituye por un enfoque controlado. El tiempo esta medido en segundos y por defecto tieneuna valor de 5 segundos.

int timerAutofocus Este parámetro especifica cada cuanto tiempo se obliga a la cámara enfocar una vez desactivado el autofocus. El tiempo esta medido en segundos y por defecto tiene una valor de 2 segundos.

int timeoutAdviceText Este parámetro especifica el tiempo que transcurredesde que se activa la cámara hasta que salta elmensaje de advertencia. El tiempo esta medido ensegundos y por defecto tiene una valor de 10segundos.

int timeoutForceCapture Este parámetro especifica el tiempo que transcurredesde que se activa el mensaje de advertencia hastaque se desactiva la validación del modelo documental.Por defecto tiene un valor de 10 segundos.

int timeoutExitCamera Este parámetro especifica el tiempo que transcurredesde que se activa la captura sin validación delmodelo y se devuelve el control de la cámara debido aque no se ha conseguido capturar. Por defecto tiene unvalor de 20 segundos.

int timerFinishOCR Este parámetro especifica el tiempo que transcurredesde que se captura el documento hasta que sedevuelve el control de la cámara debido que no se haconseguido extraer el texto con OCR. Por defecto tieneun valor de 20 segundos.

04/04/2018 14/29

Page 15: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

String name Este parámetro puede contener cualquier carácteraceptado por una variable String. Por defecto esteparámetro contiene el time stamp del momento que seinicializa la captura.

int width Este parámetro especifica el ancho de la captura, enpíxeles.

• Tamaño mínimo permitido: 1 píxel• Tamaño máximo permitido: ∞ pixeles • Tamaño por defecto en

ID/RESIDENCE/STANDARD_CARD: 670 píxeles• Tamaño recomendado en

ID/RESIDENCE/STANDARD_CARD: 670 píxeles• Tamaño por defecto en INT_PASSPORT: 674

píxeles• Tamaño recomendado en INT_PASSPORT: 674

píxeles• Tamaño por defecto en EU_CHECK: 692 píxeles• Tamaño recomendado en EU_CHECK: 692

píxeles

int height Este parámetro especifica la altura de la captura, en píxeles.

• Tamaño mínimo permitido: 1 píxel• Tamaño máximo permitido: ∞ pixeles • Tamaño por defecto en

ID/RESIDENCE/STANDARD_CARD: 425 píxeles• Tamaño recomendado en

ID/RESIDENCE/STANDARD_CARD: 425 píxeles• Tamaño por defecto en INT_PASSPORT: 475

píxeles• Tamaño recomendado en INT_PASSPORT: 475

píxeles• Tamaño por defecto en EU_CHECK: 315 píxeles• Tamaño recomendado en EU_CHECK: 315

píxeles

int quality Este parámetro especifica el porcentaje de calidad de la captura:

• Porcentaje mínimo permitido: 0 • Porcentaje máximo permitido: 100 • Porcentaje por defecto en ID, RESIDENCE,

STANDARD_CARD, INT_PASSPORT y EU_CHECK:100

• Porcentaje recomendado en ID, RESIDENCE,STANDARD_CARD, INT_PASSPORT yEU_CHECK: 100

04/04/2018 15/29

Page 16: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

boolean agressiveCapture El valor por defecto de este parámetro es FALSE.

boolean generatePostProcessImageFlag El valor por defecto de este parámetro es FALSE.

BarcodeType barcodeType Este parámetro especifica el tipo de código de barra que se desea capturar. Puede tomar dos valores:

• Unidimensional → Para códigos 1D. • Bidimensional → Para códigos 2D.

“Keys” de acceso al JSON

“name” Permite la extracción del NOMBRE del JSONObjectque retorna la función getMrzData().

“surname” Permite la extracción de los APELLIDOS delJSONObject que retorna la función getMrzData().

“optionalData” Permite la extracción del campo de DATOSOPCIONALES del JSONObject que retorna la funcióngetMrzData().

“birthDate” Permite la extracción de la FECHA DE NACIMIENTOdel JSONObject que retorna la funcióngetMrzData().

“gender” Permite la extracción del SEXO del JSONObject queretorna la función getMrzData().

“nationality” Permite la extracción de la NACIONALIDAD delJSONObject que retorna la función getMrzData().

“expiryDate” Permite la extracción de la FECHA DE CADUCIDADdel JSONObject que retorna la funcióngetMrzData().

“documentType” Permite la extracción del TIPO DE DOCUMENTO delJSONObject que retorna la función getMrzData().

“issuingState” Permite la extracción del PAÍS DE EXPEDICIÓN DELDOCUMENTO del JSONObject que retorna la funcióngetMrzData().

“documentNumber” Permite la extracción del NÚMERO DE DOCUMENTOdel JSONObject que retorna la funcióngetMrzData().

04/04/2018 16/29

Page 17: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Diagrama de las funcionalidades

04/04/2018 17/29

Capturadocumental

Códigos de

barra

Funciones necesarias- setModelPath()- setConfigPath()- setCapturePath()- modelo()- checkIfModelLoaded()- useEngine()- runScanner()- getCaptureName()- loadModel()

Funciones de conexión con el Post-Procesado- generatePostProcessImage()- getPostProcessImageName()

Funciones para la extracción de texto con OCR- loadOcrEngine()- useOcrEngine()- setOcrParameters()-getMrzData() Funciones opcionales- setImageQuality() - setCapturName()- aggressiveCapture() - enableFocusFilter()- disableFocusFilter() - enableTemplate()- disableTemplate() - enableFeatures()- disableFeatures()- isDNI3() - cleanCaptureFolder()

Funciones necesarias

- useEngine() - disableBarcodeAnimation() - runScanner() - getBarcodeResult()

Funciones opcionales

- enableBarcodeAnimation() - enableBarcodeBackground()- disableBarcodeBackground()- enableBarcodeTemplate() - disableBarcodeTemplate() - getBarcodeFormat()

Funciones opcionales comunes

- setFocusParameters()- setTextToScreen()- enableCaptureAdvice()- enableBrightnessBar()- disableBrightnessBar()- setDocumentNameTextToScreen()- setAdviceTextToScreen()- getDocumentVerified()- getBackButtonPressed()

IntelligentScanner

Page 18: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Ejemplo de uso Una vez instalado el AAR IntelligentScanner, ya podemos empezar a utilizarlo.

Ejemplo de configuración de captura por defecto Supongamos que queremos crear una aplicación de captura automática de reversos de DNI y de códigos debarra unidimensionales, con una interfaz muy simple. La siguiente pantalla podría ser la pantalla principal :

Al iniciar la aplicación se asignan los paths y se carga el modelo capaz de capturar reversos de DNI. Una vezcargado el modelo, apretando el botón “CAPTURE BACK ID” de la pantalla se comprueba que el modelo sehaya cargado correctamente. A continuación, se asigna el uso del modelo al motor y se ejecuta la pantallade captura automática de reversos de DNI. Después de capturar un DNI, la aplicación vuelve a mostrar elmenú de la imagen anterior, donde se puede visualizar por pantalla el nombre de la captura apretando elbotón “SHOW CAPTURE NAME”. Además se puede utilizar el botón “EMPTY CAPTURES FOLDER” paraeliminar todos los ficheros de la carpeta capturas. También se puede utilizar el botón “CAPTUREBARCODE” para capturar en este caso códigos de barra unidimensionales y mostrar el resultado porpantalla. Si no deseamos cambiar las propiedades de captura ofrecidas por defecto, el código aimplementar sería el siguiente:

04/04/2018 18/29

Page 19: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

04/04/2018 19/29

package serimagmedia.capturaautomatica;

import android.content.Manifest;import android.content.Intent;import android.graphics.Color;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.TextView;import org.json.JSONException;import org.json.JSONObject;import java.io.File;import automaticdocumentcapturesdk.IntelligentScannerInterface;

public class StartMenu extends AppCompatActivity {

private File path_sd = Environment.getExternalStorageDirectory(); private File path_models = new File(path_sd.getAbsolutePath() + "//IntelligentScanner//Models"); private File path_captures = new File(path_sd + "//IntelligentScanner//Captures"); private File path_config = new File(path_sd.getAbsolutePath() + "//IntelligentScanner//Config"); public static IntelligentScannerInterface intelligentScanner; TextView textView;

public StartMenu(){

intelligentScanner = IntelligentScannerInterface.getInstance(); intelligentScanner.setConfigPath(path_config.getPath()); intelligentScanner.setModelPath(path_models.getPath()); intelligentScanner.setCapturePath(path_captures.getPath());

intelligentScanner.loadModel("ES_ID_BACK"); }

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.activity_start_menu);

requestPermissions(); textView = (TextView) findViewById(R.id.idTextView1); }

01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:

Page 20: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

04/04/2018 20/29

public void requestPermissions(){ ActivityCompat.requestPermissions(this, new String[]{

// Only if you implement the example using external //storage (SD)

Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,

// Mandatory SDK permissions Manifest.permission.CAMERA, Manifest.permission.NFC

},1); }

public void onClickId(View v){

if(intelligentScanner.checkIfModelLoaded("ES_ID_BACK")){ intelligentScanner.useEngine("ES_ID_BACK"); intelligentScanner.runScanner("ES_ID_BACK", this,5002); } }

public void onClickCB(View V){

intelligentScanner.useEngine("BARCODE"); intelligentScanner.runScanner("BARCODE",this, 6001);

}

protected void onActivityResult(int requestCode, int resultCode, Intent intentData){

if(requestCode == 5002){ textView.setText("Capture name: " +

intelligentScanner.getCaptureName()); } else if(requestCode == 6001) { textView.setText("Result: " +

intelligentScanner.getBarcodeResult()); } }

public void onClickEmpty(View v){

intelligentScanner.cleanCapturesFolder(); }

}

50:51:52:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90: 91:92:93:94:95:96:97:98:

Page 21: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Ejemplo de configuración de captura personalizada

Manteniendo el ejemplo anterior, en este caso queremos cambiar las propiedades de la imagen capturada.Así pues podemos activar las siguientes opciones :

• Cargar en memoria el motor de extracción de texto con OCR

• Activar el control del enfoque

• Activar barra de brillo y la animación de las flechas

• Fijar el texto a mostrar en pantalla mientras se realiza la capturada

• Fijar el texto que se mostrará como mensaje de advertencia en caso de no captura

• Fijar el texto a mostrar en pantalla con con el nombre del documento a capturar

• Activar la plantilla del preview

• Activar los puntos del preview

• Activar el filtro de enfoque

• Fijar el tamaño y la calidad de la imagen de salida

• Activar la captura agresiva

• Fijar el nombre de la imagen capturada

• Cargar los modelos para la extracción de texto con OCR en memoria

• Fijar los parámetros para la extracción de texto con OCR

• Activar la función que generará la imagen que se enviará al módulo de post-procesado

• Activar la función que mostrará el mensaje de advertencia

• Activar la función que verificará la captura

• Activar la función que verificará la manera como se ha devuelto el control de la aplicación

• Activar la función que verificará si el Anverso del DNI capturado es 2.0 o 3.0.

El código a implementar en la acción del botón de captura sería el siguiente:

04/04/2018 21/29

public StartMenu(){

intelligentScanner = IntelligentScannerInterface.getInstance();

intelligentScanner.setConfigPath(path_config.getPath()); intelligentScanner.setModelPath(path_models.getPath()); intelligentScanner.setCapturePath(path_captures.getPath()); intelligentScanner.loadModel("ES_ID_BACK"); intelligentScanner.loadOcrEngine(); }

30:31:32:33:34:35:36:37:38:39:40:

Page 22: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

04/04/2018 22/29

public void onClickId(View v){ if(intelligentScanner.checkIfModelLoaded("ES_ID_BACK")){ intelligentScanner.useEngine("ES_ID_BACK"); intelligentScanner.useOcrEngine("ES_ID_BACK"); intelligentScanner.setOcrParameters(20); intelligentScanner.setFocusParameters(5, 2); intelligentScanner.setTextToScreen("CapturIng the BACK of the

ID"); intelligentScanner.enableCaptureAdvice(Color.argb(255, 230,

100, 40), Color.WHITE, 10, 10, 20); intelligentScanner.setAdviceTextToScreen("Advice: Slide the

exposure bar to improve the capture."); intelligentScanner.setDocumentNameTextToScreen("ID | BACK",

Color.argb(255, 230, 100, 40)); intelligentScanner.enableBrightnessBar(Color.argb(255, 255,

255, 255),Color.argb(255, 230, 100, 40) ); intelligentScanner.enableTemplate(Color.argb(255, 230, 100,

40)); intelligentScanner.enableFeatures(Color.argb(255, 25, 155,

215)); intelligentScanner.enableFocusFilter(); intelligentScanner.setImageQuality(-1, -1, -1); intelligentScanner.aggressiveCapture(true); intelligentScanner.generatePostProcessImage(true); intelligentScanner.runScanner("ES_ID_BACK", this, 5002); }

}

65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:

Page 23: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Como hemos activado el guardado de la imagen a post-procesar, ahora también podemos obtener elnombre de la misma así como el resultado del OCR:

04/04/2018 23/29

protected void onActivityResult(int requestCode, int resultCode, Intent intentData){ JSONObject data = intelligentScanner.getMrzData();

if(requestCode == 5002){

if( intelligentScanner.getBackButtonPressed() == false){

try { textView.setText( "Name: " + data.getString("name") + "\n" + "Surname: " + data.getString("surname") + "\n" + "ID: " + data.getString("optionalData") + "\n" + "Birth Date: " + data.getString("birthDate") + "\n" + "Gender: " + data.getString("gender") + "\n" + "Nationality: " + data.getString("nationality") +"\n" + "Expiry Date: " + data.getString("expiryDate") + "\n" + "Document Type: " + data.getString("documentType") +

"\n" + "Issuing State: " + data.getString("issuingState") +

"\n" + "Document Number: " +

data.getString("documentNumber"));

}catch (JSONException e) { e.printStackTrace(); }

} }}

117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:118:

Page 24: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Para el caso de los códigos de barra también podemos activar una serie de propiedades que mejorará lacaptura:

• Activar barra de brillo y la animación de las flechas

• Fijar el texto a mostrar en pantalla mientras se realiza la capturada

• Fijar el texto que se mostrará como mensaje de advertencia en caso de no captura

• Fijar el texto a mostrar en pantalla con con el nombre del documento a capturar

• Activar la plantilla del preview para códigos de barra

• Activar el sombreado fuera de la zona interior de la plantilla

• Activar animación de la linea del preview

• Activar la función que mostrará el mensaje de advertencia

• Activar la función que devuelve el formato del código de barra

• Activar la función que verificará la captura

• Activar la función que que verificará la manera como se ha devuelto el control de la aplicación

04/04/2018 24/29

public void onClickCB(View V){

intelligentScanner.useEngine("BARCODE");

intelligentScanner.setTextToScreen("Capturing 1D BARCODE"); intelligentScanner.setAdviceTextToScreen("Advice: Slide the exposure

bar to improve the capture."); intelligentScanner.setDocumentNameTextToScreen("Barcode",

Color.argb(255, 255, 255, 255) );intelligentScanner.enableBarcodeTemplate(

intelligentScanner.barcodeTypeClass.Unidimensional, Color.argb(255, 230, 100, 40));

intelligentScanner.enableBarcodeBackground(intelligentScanner.barcodeTypeClass.Unidimensional);

intelligentScanner.enableBarcodeAnimation(intelligentScanner.barcodeTypeClass.Unidimensional);

intelligentScanner.disableBarcodeAnimation(intelligentScanner.barcodeTypeClass.Unidimensional);

intelligentScanner.enableCaptureAdvice(Color.argb(255, 230, 100, 40), Color.WHITE, 10, 10, 20);

intelligentScanner.runScanner("BARCODE",this, 6001);

}

94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:

Page 25: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

04/04/2018 25/29

protected void onActivityResult(int requestCode, int resultCode, Intent intentData){ if(requestCode == 6001){

if( intelligentScanner.getBackButtonPressed() == false){

textView.setText( "Result: " + intelligentScanner.getBarcodeResult() + "\n" + "Barcode format: " + intelligentScanner.getBarcodeFormat()

+ "\n" + "The document is verified: " +

intelligentScanner.getDocumentVerified() + "\n" + "The BACK button was pressed: " +

intelligentScanner.getBackButtonPressed() );

} }

}

117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:

Page 26: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Anexos

Uso de la pantalla de captura

Documentos (DNI, Tarjetas de Residencia, Pasaportes, Cheques y Tarjetas)

Mediante la función runScanner(), se ejecuta la pantalla de captura automática de documentos, el SDKtoma el control de la pantalla y el hilo de ejecución. Como vemos en la imagen anterior, esta pantalla tienecuatro características:

– En la parte central, el DNI se situa dentro de una plantilla. De esta manera se permite guiar alusuario para poder capturar de manera muy eficaz. Esta plantilla se activa mediante la funciónenableTemplate(). Además se pueden observar los puntos que corresponden a las característicasextraídas. Esta funcionalidad se activa mediante enableFeatures().

– En la parte superior se indica el nombre del tipo documental que se intenta capturar, en este caso elanverso de un DNI. Esta funcionalidad se activa mediante la funcióngetDocumentNameTextToScreen().

– En la parte inferior se muestra el mensaje fijado previamente por el programador mediante lafunción setTextToScreen().

– En caso de que el brillo automático no se esté ajustado a nuestras necesidades, en la parte derechade la pantalla, la barra deslizante permite aumentar y disminuir el brillo de la captura. Estafuncionalidad se activa mediante la función enableBrightnessBar(). Seguidamente el desarrolladorpuede llamar a la función getCaptureName() para obtener el nombre de la captura.

Una vez capturado un documento, el SDK guarda la imagen procesada, devuelve el control de la pantalla yel hilo de ejecución.

Finalmente si se desea volver a la pantalla anterior o cancelar la captura, se debe utilizar el botón Backproporcionado por el dispositivo (←). En ese momento el SDK devuelve el control de la pantalla y el hilo deejecución.

04/04/2018 26/29

Page 27: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

En caso que no se consigue realizar una captura, mediante la función enableCaptureAdvice() se desactivael texto anteriormente prefijado por el programador, en este caso “Capturing the FRONT of the ID” y seactiva otro mensaje con un consejo para facilitar la captura. El texto del mensaje se puede parametrizarmediante la función setAdviceTextToScreen(), en este caso “Advice: Slide the exposure bar to improve thecapture”. Con la función enableCaptureAdvice() también se activan las dos flechas que se mueven al ladode la barra de exposición, así como como los tres timeouts, donde el primero especifica el tiempo quetranscurre desde que se activa la cámara hasta que salta el mensaje de advertencia, el segundo especifica eltiempo que transcurre desde que se activa el consejo hasta que se activa la captura forzada y el tercerorepresenta el tiempo que transcurre desde que se activa la captura forzada hasta que se saleautomáticamente de la cámara debido a que aun así nos se ha conseguido capturar.

04/04/2018 27/29

Page 28: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Códigos de barra

En el caso de los códigos de barra también se usa la función runScanner() para ejecutar la pantalla decaptura automática y así el SDK toma el control de la pantalla y el hilo conductor.

Como vemos en la imagen anterior, esta pantalla tiene seis características:

• En la parte central, el código de barra se sitúa dentro de una plantilla. De esta manera se permiteguiar al usuario para poder capturar de manera muy eficaz. Esta plantilla se activa mediante lafunción enableBarcodeTemplate().

• La parte exterior de la plantilla esta rodeada de un sombreado oscuro que permite delimitar demanera mucho más clara la zona donde se debería colocar el código de barra. Éste se activamediante la función enableBarcodeBackground().

• En la medio del rectángulo que define la zona de captura de códigos de barra aparece una linearoja. Ésta puede comportarse de manera animada o estática, parámetro que se puede controlarmediante la función enableBarcodeAnimation().

• En la parte superior se indica tipo de código de barra que se intenta capturar, en este caso uncódigo de barra unidimensional. Esta funcionalidad se activa mediante la funcióngetDocumentNameTextToScreen().

• En la parte inferior se muestra el mensaje fijado previamente por el programador mediante lafunción setTextToScreen().

• Finalmente el desarrollador puede llamar a la función getBarcodeResult() para obtener un stringcon el código de barra capturado.

• Adicionalmente en caso de no captura también se puede activar las funcionesenableCaptureAdvice(), setAdviceTextToScreen(), getDocumentVerified() ygetButtonBackPressed que tiene el mismo funcionamiento que en el caso de DNI o cheques. Eneste caso la función getDocumentVerified() dejaría de tener sentido ya que en el caso de loscódigos de barra no existe un modelo y por lo tanto esta función devolverá siempre false.

04/04/2018 28/29

Page 29: SMAATSDK - Inteligencia artificial para el procesado de ... · • Procesador 1.2 GHz Dual-Core Requisitos recomendados para el funcionamiento del SDK • Android 5.0 o posterior

Requisitos y documentación del Módulo IntelligentScanner en Android Release v1.0

Recomendaciones para capturar• Encontrar un fondo que contraste con el documento a capturar.

• Preferiblemente utilizar la aplicación con luz natural.

• Utilizar la barra de control de exposición en caso de no conseguir una captura con los requisitosanteriores.

• Evitar sombras y reflejos.

• Activar la función la plantilla mediante la función enableTemplate().

• No realizar inclinaciones superiores a 30º.

• En caso de que se necesiten movimientos, éstos deberían ser suaves.

• Se recomienda activar el filtro de enfoque salvo que el rendimiento de la aplicación sea bajo ótenga problemas para capturar un documento.

04/04/2018 29/29