Académique Documents
Professionnel Documents
Culture Documents
1. Resumen
En el presente trabajo se lleva a cabo el desarrollo de un sistema OCR de texto manuscrito capaz de reconocer dgitos, utilizando en la etapa de reconocimiento una red neuronal feedforward de tres capas ayudada por una serie de procesamientos de soporte. Comprende la implementacin de los mdulos necesarios para generar muestras, entrenar la red neuronal, clasificar las figuras ingresadas por el usuario y medir el rendimiento de una red neuronal entrenada. Se propone una arquitectura escalable de la aplicacin para facilitar futuras investigaciones sobre el tema. Como demostracin, se desarroll una segunda aplicacin sobre el ncleo de la primera, que extiende su funcionalidad permitiendo reconocer y resolver operaciones aritmticas simples.
2. Introduccin
Los Sistemas OCR son uno de los campos de investigacin ms importantes en el rea de reconocimiento de patrones. Lograron fomentar tal inters sobre los investigadores debido a sus grandes posibilidades de aplicacin. En la actualidad, el problema de los OCR para textos impresos puede considerarse resuelto, a pesar de no poseer un reconocimiento del cien por ciento. Sin embargo, el reconocimiento de texto manuscrito es un rea que an hoy se encuentra vigente y es objeto de investigacin activa. Las soluciones populares producto de dichas investigaciones apuntan a utilizar mtodos estadsticos o redes neuronales que son especialmente aptas para resolver este tipo de problemas, como el algoritmo KNN o los mapas auto-organizados de Kohonen, respectivamente. Sin embargo, este trabajo se enfocar en adaptar una red neuronal convencional y de uso general para su utilizacin en la fase de reconocimiento del Sistema OCR a desarrollar. Se utilizar una red neuronal feedforward de tres capas como pilar para el desarrollo de un Sistema OCR para reconocimiento de texto manuscrito. Esto implicar la adaptacin de la misma y la implementacin de operaciones de soporte, para que sea capaz de operar en ese contexto especfico. La solucin ser de carcter personal, basada en el desarrollo, la integracin y la secuencia de distintos algoritmos y tecnologas. Para decidir sobre las alternativas de dichos aspectos de la implementacin, se utilizar una metodologa experimental. Se pondr especial nfasis en posibilitar el crecimiento incremental de la solucin para facilitar futuras investigaciones sobre el tema, apuntando con esta modalidad a la creacin, a mediano o largo plazo, de una solucin de inters comercial y cientfico. Especficamente se desarrollarn dos aplicaciones. La primera, miniOCR, ser una aplicacin capaz de reconocer dgitos aislados dibujados a mano en la misma a travs del mouse. Luego, se desarrollar Calculadora, una aplicacin construida sobre el ncleo de miniOCR que permita aplicar a un caso de ejemplo las
conclusiones del primer desarrollo. En esta, el usuario podr obtener respuestas de la computadora a operaciones aritmticas simples dibujadas en su interfaz de usuario. Para ambos casos se define como aceptable un rendimiento del 90% o superior. La Hiptesis es que en funcin de las caractersticas de aprendizaje de las Redes Neurales feedforward de tres capas, convencional y de uso general, se puede desarrollar un programa de reconocimiento de texto manuscrito. Implica esto un conjunto de operaciones de adaptacin y soporte a fin de capacitarla para operar en el contexto descripto. A continuacin se exponen los lmites del presente trabajo: El trabajo se enfocar sobre los Sistemas OCR de procesamiento offline, de acuerdo a su definicin en el mismo. Se busca tanto para miniOCR como para Calculadora una tasa de reconocimiento aceptable a los fines del trabajo, definida en un 90% o superior de aciertos segn el Medidor de Rendimiento. Es decir, habr casos en los que la aplicacin no pueda reconocer correctamente el caracter ingresado. Tanto miniOCR como Calculadora intentarn reconocer toda figura ingresada como un caracter reconocible. Para miniOCR y Calculadora, se utilizar una cantidad de muestras para el entrenamiento que puede no ser suficiente para presentar un rendimiento homogneo frente a usuarios con estilos de escritura que sean demasiado diferentes a los presentados durante el entrenamiento. Calculadora se desarrollar para ejemplificar las posibilidades de la tecnologa, no se busca una aplicacin plenamente funcional. El algoritmo de segmentacin de smbolos de Calculadora es simplista, y fue desarrollado de tal manera a modo de cumplir con los objetivos de la aplicacin. Los caracteres deben estar separados horizontalmente de modo que una lnea vertical recta pueda pasar entre ellos, y solamente se puede escribir una lnea por vez.
3. miniOCR
miniOCR es la primera aplicacin desarrollada en el presente trabajo. Es capaz de reconocer dgitos dibujados manualmente utilizando el mouse. Abarca todo el proceso necesario para llegar a dicho fin.
3.2.2. Entrenador
El Entrenador permite entrenar la red neuronal a ser utilizada por el Clasificador. Se precisa para su ejecucin un conjunto de muestras generadas por el Generador de Muestras. Estas muestras sern procesadas y sus caractersticas sern extradas. Las caractersticas se utilizan para alimentar las neuronas de entrada de la red neuronal, la salida esperada de la misma se obtiene consultando el rtulo en el nombre del archivo, asociado a uno de los caracteres clasificables. Del mismo modo que con el Generador de Muestras, los caracteres vlidos para llevar a cabo el entrenamiento son por defecto los dgitos del cero al nuevo, o se pueden configurar mediante un archivo de texto plano. El entrenamiento termina cuando se alcanza el error deseado, solicitado al usuario al inicio de la ejecucin. El proceso da como resultado un archivo que contiene la configuracin de la red neuronal, y que podr luego ser utilizado por el Clasificador para realizar su trabajo.
3.2.3. Clasificador
El Clasificador es el mdulo que lleva a cabo el objetivo de la aplicacin, el reconocimiento de dgitos. El archivo de red neuronal generado con el Entrenador permite reconstruir la red para su utilizacin. El usuario puede dibujar dgitos en el lienzo del Clasificador, los cuales sern procesados y luego se extraern sus caractersticas, de la misma forma en que se hace en la fase de entrenamiento. Las caractersticas son luego insertadas en la red neuronal, la cual emite una salida, asociada a un caracter clasificable. Se debe tener en cuenta que la red neuronal siempre intentar asociar los datos de entrada con un caracter conocido.
Al igual que con los mdulos anteriores, el Clasificador reconocer los caracteres por defecto del cero al nueve, o se podr modificar este comportamiento utilizando un archivo de texto plano.
Figura 3.2: Estimacin del ngulo de Inclinacin La figura se encierra en un rectngulo rotado compuesto por las siguientes cuatro rectas: y = x + b1 y = x + b2 y = x + b3 y = x + b4 Es necesario encontrar b, el valor de la ordenada al origen. La forma de encontrarlo es modificar este valor en cada recta de forma que la misma comience a acercarse a la figura, comenzando en los extremos. El valor de b es tal que cada recta independiente interseca por primera vez a la figura. Una vez obtenidos los valores de b, es posible calcular B de la siguiente forma: B = (b4 + b1 b3 b2) / 2 Luego, con este valor y el alto de la figura, se puede calcular el ngulo de inclinacin : = arctan(B / alto) puede tomar valores positivos o negativos en base al lado para el que la figura presenta la inclinacin.
3.3.2.2. Adelgazamiento
El esqueleto de una figura se corresponde con su estructura bsica que acenta sus cualidades geomtricas. Una de las formas de obtener el esqueleto de una figura es mediante su adelgazamiento. En este mtodo se busca quitar todos los pxeles posibles del contorno de la figura, manteniendo sin alteracin su forma bsica. La figura resultantes ser lo ms delgada posible, quedar conectada donde lo estuviese antes de efectuar el procesamiento y se mantendr centrada respecto a la imagen original. Para este trabajo se utiliza el algoritmo de Zhang-Suen [1], que se describir a continuacin. El algoritmo consta de dos partes que se aplican sucesivamente sobre la imagen, hasta llegar a una iteracin sin cambios. En cada paso de cada una de las partes se reconocen los pxeles que pueden ser eliminados. Los pxeles se eliminan una vez finalizada la parte en cuestin, para evitar modificar la imagen durante el paso actual. Se evala cada pixel, en conjunto con sus ocho vecinos:
Figura 3.4: Pxeles Vecinos Cuando se evalan pxeles extremos, los pxeles que sobrepasan los lmites de la imagen se consideran blancos.
Se consideran las siguientes dos funciones para evaluar cada pxel: A(P1) = nmero de transiciones del blanco al no blanco en la secuencia: P2, P3, P4, P5, P6, P7, P8, P9, P2. B(P1) = P2 + P3 + P4 + P5 + P6 + P7 + P8 + P9 Donde Pn es 0 si el pxel es blanco, o 1 en caso contrario. En el paso uno, se evalan las siguientes condiciones para cada pxel no blanco, deben cumplirse todas para marcar al pxel para eliminar: 2 <= B(P1) <= 6 A(P1) = 1 P2 . P4 . P6 = 0 P4 . P6 . P8 = 0 En el paso dos, se evalan las siguientes condiciones para cada pxel no blanco, deben cumplirse todas para marcar al pxel para eliminar: 2 <= B(P1) <= 6 A(P1) = 1 P2 . P4 . P8 = 0 P2 . P6 . P8 = 0 A continuacin se muestra el esqueleto de la imagen de ejemplo:
3.3.2.4. Escala
La imagen se escala por zonas, de acuerdo a un tamao pre fijado (10 x 14 pxeles). El primer paso es dividir la imagen en zonas en base al tamao establecido, habr tantas zonas de ancho como pxeles de ancho en la imagen de destino deseada, y tantas zonas de alto como pxeles de alto en la imagen de destino deseada. Luego, para conocer la cantidad de pxeles por zona se dividen los pxeles de la imagen base entre los pxeles del tamao de la imagen de salida. El resto de dicha divisin se divide uniformemente entre las zonas encontradas.
Figura 3.7: Zonas para Escala Luego, se considera a la zona como pintada si hay en ella un pxel o ms.
Figura 3.8: Zonas Pintadas para Escala Cada una de estas zonas representa a un pxel de la imagen de salida. Se puede apreciar en el ejemplo como la figura redujo su dimensionalidad mantenindose reconocible. As mismo, notar que la relacin de aspecto tambin se ver normalizada por este algoritmo, puesto que la imagen de salida siempre tendr el tamao solicitado. Existe un caso especial, cuando la imagen es menor en su ancho al ancho solicitado, la imagen no se escala si no que se centra en una imagen de fondo blanco del ancho solicitado. Lo mismo sucede con el caso del alto de la imagen.
Figura 3.9: Extraccin de Caractersticas Se recorre cada lnea, sea horizontal o vertical, y se toma en consideracin el primer pxel no blanco encontrado. Se considera distancia igual a 1 cuando se encuentra un pxel no blanco en el primer pxel de la lnea. Las distancias restantes se obtienen de forma relativa al caso anterior. Para el caso especial en que no hay un pxel en la lnea, la distancia pasar a valer 0. Como se puede ver, utilizando este mtodo se reduce la dimensionalidad de los datos al permetro de la imagen.
3.3.4. Clasificacin/Entrenamiento
miniOCR utiliza una red neuronal feedforward para la etapa de clasificacin. Se utiliza la librera para redes neuronales Encog para Java, desarrollada por Jeff Heaton. La red neuronal se compone por tantas neuronas en la capa de entrada como datos de caractersticas obtenidos, una capa oculta con tantas neuronas como la mitad de las neuronas de la capa de entrada y una capa de salida con tantas neuronas como la cantidad de caracteres a reconocer. Para miniOCR, se tiene: Capa de entrada: 2 x ancho + 2 x alto = 48 Capa oculta: neuronas de entrada / 2 = 24 Capa de salida: dgitos del cero al nueve = 10 La funcin de activacin utilizada es la tangencial, una de las ms comnmente aplicadas.
Previo a insertar los datos en la red neuronal es necesario escalarlos para que satisfagan el rango establecido por la funcin de activacin. En este caso, se opt por establecer el rango entre -0.5 y 0.5. Luego, la distancia 0 (asociada al caso especial en que no existe ningn pixel en la lnea) pasar a valer -0.5 y la distancia igual al ancho o al alto de la imagen pasar a valer 0.5. Para obtener estos valores se considera el mayor entre el ancho y el alto de la imagen. Cada neurona de salida est asociada a un caracter clasificable. Para el caso del entrenamiento, se asignan las caractersticas de la muestra a las neuronas de entrada. Luego, se inicializan todas las neuronas de salida en -0.5, correspondiente a una respuesta negativa. A la neurona de salida asociada al caracter que los datos de entrada representan se le asignar el valor 0.5, asociado a una respuesta positiva. Para ejecutar el entrenamiento se iteran tantas pocas como sean necesarias hasta que el valor del error sea igual o inferior al error deseado. Entendindose por poca al procesamiento sobre todo el set de muestras. Para el caso de la clasificacin, se asignan las caractersticas de la muestra a las neuronas de entrada. Luego, la red neuronal realiza su procesamiento y brinda un conjunto de valores en sus neuronas de salida. Estos valores no necesariamente tienen que ser -0.5 o 0.5. Los valores oscilarn entre -1 y 1, la neurona de salida ganadora, es decir la neurona con el mayor valor ser la que defina el caracter reconocido. En los casos de mayor certeza los valores de respuestas positivas tendern a acercarse a 0.5 y los valores de respuestas negativas tendern a -0.5. En los casos en que no haya tanta seguridad respecto a la respuesta es probable que los resultados aparezcan menos diferenciados.
3.4. Entrenamiento
Se realizaron diversos entrenamientos para miniOCR, definiendo distintas configuraciones de error deseado y cantidad de muestras. Todos los casos de entrenamiento para miniOCR se realizaron en una red neuronal configurada en 48 neuronas en la capa de entrada, 24 neuronas en la capa oculta y 10 neuronas en la capa de salida, con el fin de reconocer 10 clases. Se realizaron nueve casos de entrenamiento: Caso 1: 500 muestras, 0.25 error deseado Caso 2: 500 muestras, 0.15 error deseado Caso 3: 500 muestras, 0.09 error deseado Caso 4: 1000 muestras, 0.25 error deseado Caso 5: 1000 muestras, 0.15 error deseado Caso 6: 1000 muestras, 0.09 error deseado Caso 7: 1500 muestras, 0.25 error deseado Caso 8: 1500 muestras, 0.15 error deseado Caso 9: 1500 muestras, 0.09 error deseado Se gener la misma cantidad de muestras para cada caracter, siendo 50 muestras por caracter para los casos de 500 muestras totales, 100 muestras por caracter para el caso de 1000 muestras totales y 150 muestras por caracter para el caso de 1500 muestras totales.
Figura 3.10: Tiempos de Pre Procesamiento y Entrenamiento de miniOCR Los tiempos de pre procesamiento y entrenamiento variarn de acuerdo, no solo al entorno de ejecucin, cantidad de muestras y error deseado, si no tambin segn la aleatorizacin de los pesos de los vnculos de las neuronas en la red neuronal. Es por esto ltimo que no necesariamente hay una relacin proporcional entre pocas o tiempos y muestras y error deseado. Se puede apreciar en ambos grficos que el caso 9 requiri una cantidad considerablemente mayor de procesamiento que los dems casos. Figura 3.11: Medicin de Rendimiento de miniOCR
4. Calculadora
Calculadora es una aplicacin basada en miniOCR que permite dibujar operaciones aritmticas simples (suma, resta, multiplicacin y divisin) y obtener su resultado. Se tiene en consideracin la precedencia de los operadores y es posible modificarla utilizando parntesis.
4.3. Entrenamiento
Se realizaron diversos entrenamientos para Calculadora, definiendo distintas configuraciones de error deseado y cantidad de muestras, teniendo en consideracin la experiencia con el entrenamiento de miniOCR. Dado el incremento a 16 clases, la aplicacin configur automticamente la red neuronal a 16 neuronas en la capa de salida. Se realizaron cuatro casos de entrenamiento: Caso 1: 1680 muestras, 0.15 error deseado Caso 2: 1680 muestras, 0.09 error deseado Caso 3: 1860 muestras, 0.15 error deseado Caso 4: 1860 muestras, 0.09 error deseado Se utiliz el mismo conjunto de 1500 muestras con el que se entren miniOCR, y se le agregaron 180 muestras nuevas (30 por cada caracter nuevo) para el caso de 1680 muestras totales y 360 muestras nuevas (60 por cada caracter nuevo) para el caso de 1860 muestras totales. Los casos 2 y 4 requirieron una cantidad considerablemente mayor de procesamiento que los otros dos casos.
Para lograr esta tarea se implement un segmentador muy simple que divide la imagen en figuras individuales trazando lneas verticales. Cuando se encuentra una lnea vertical que no interseca con una figura, significa que se encontr una lnea divisoria. Este mtodo se aplica de izquierda a derecha teniendo especial cuidado con el primer y el ltimo caso. Se puede ver una clara limitacin en este mtodo simplista, no es posible escribir ms de una lnea, ni solapar caracteres. Pero dado que el objetivo de la aplicacin es realizar operaciones aritmticas simples, se considera despreciable. Una vez dividida la imagen en figuras individuales, cada una de ellas recibe el mismo procesamiento y clasificacin que se realiza en miniOCR, y se obtiene una secuencia de caracteres reconocidos.
5. Conclusiones
En la actualidad, los Sistemas OCR para reconocimiento de texto impreso son un tema prcticamente cerrado ya que, si bien no tienen un rendimiento del cien por ciento, existen diversos mtodos que compensan las situaciones de fallo. Por otro lado, los Sistemas OCR para reconocimiento de texto manuscrito son objeto de investigacin activa, y producto de ello se generan nuevas soluciones continuamente. En general, son populares las soluciones utilizando mtodos estadsticos simples, como el algoritmo K-NN, o redes neuronales especialmente aptas para la solucin de este tipo de problemas, como los mapas auto-organizados de Kohonen. El pilar del presente trabajo, sin embargo, fue una red neuronal feedforward de tres capas, convencional y de uso general, que pudo ser adaptada para lograr la implementacin de un Sistema OCR. Esta red neuronal permiti lograr la tarea de reconocimiento minimizando en gran medida el esfuerzo en cuanto a la implementacin y obteniendo resultados aceptables, e incluso superando considerablemente la tasa de rendimiento del 90% de aciertos que se defini como objetivo de este trabajo, con un rendimiento de 98% para miniOCR y de 96.6% para Calculadora. No obstante, su entrenamiento fue una tarea ardua que requiri la experimentacin con diversas configuraciones de error deseado y cantidad de muestras de entrenamiento. Es importante destacar que tambin fue de suma importancia la implementacin de los distintos algoritmos de pre procesamiento. Estos algoritmos permiten normalizar y reducir la dimensionalidad de la informacin, acentuando las caractersticas de cada caracter, sirviendo de soporte a la operatoria de la red neuronal.
Adems, se logr una arquitectura y un diseo de las aplicaciones que posibilita el crecimiento incremental y un fcil intercambio de mdulos, de manera tal que puedan ser utilizadas como base para futuras investigaciones.
6. Referencias
[1] "Character Recognition Systems: A Guide For Students And Practitioners" Wiley, 2007 Mohamed Cheriet, Nawwaf Kharma, Cheng-Lin Liu, Ching Y. Suen Pginas 34 a 36 y 45 a 50
7. Bibliografa
"A generic 2D approach of handwriting recognition"
Centre d'Expertise Parisien, Francia Sylvain Chevalier, Edouard Geoffrois, Lemaitre Francoise Preteux, Mlanie
"Reliable Recognition of Handwritten Digits Using A Cascade Ensemble Classifier System and Hybrid Features"
Concordia University, Canad, 2006 Ping Zhang
8.2. Entrenador
8.3. Clasificador
8.5. Calculadora
de
una
Comunes comunes.ayuda.gui AcercaDeGUI: ventana que muestra el 'Acerca de...' de la aplicacin. AyudaGUI: ventana que muestra la ayuda de la aplicacin. comunes.ayuda.listener LinkListener: listener para clicks en links de una pgina. comunes.ia Caracter: clase que gestiona los caracteres reconocibles por la aplicacin. comunes.ia RedNeuronal: red neuronal. NoPudoAbrirArchivoRedNeuronalException: excepcin lanzada al no poder abrir el archivo de una red neuronal. NoPudoCrearArchivoRedNeuronalException: excepcin lanzada al no poder crear el archivo de una red neuronal. comunes.ia.clasificador Clasificacion: almacn de datos de una clasificacin. Clasificador: clasificador. ParClasificacion: par compuesto por un caracter y un peso. comunes.lienzo.controlador
LienzoCtl: controlador de Lienzo. comunes.lienzo.gui Lienzo: componente en el que se puede dibujar a mano alzada. comunes.menu Iniciable: interfaz que indica que un objeto puede ser iniciado. BarraMenu: barra de men. comunes.menu.listener AcercaDeListener: listener para el tem 'Acerca de...'. AyudaListener: listener para el tem 'Ayuda'. IniciarListener: listener para el tem 'Iniciar'. SalirListener: listener para el tem 'Salir'. comunes.muestra ListaMuestras: lista de los archivos de Muestras. Muestra: muestra. MuestraEntrenamiento: Muestra a ser utilizada en el entrenamiento. NoPudoCargarImagenException: excepcin que se lanza cuando no se pudo cargar una imagen. SinMuestrasException: excepcin lanzada cuando se intenta procesar una lista sin muestras. comunes.muestra.extractor ExtractorCaracteristicas: extrae las caractersticas de una Muestra. Caractersticas: 1 4 2 3 comunes.muestra.procesador ProcesadorBoundingBox: ProcesadorImagen para obtener el bounding box de una imagen. ProcesadorEscala: ProcesadorImagen para obtener la versin escalada de una imagen. ProcesadorEsqueleto: ProcesadorImagen para obtener el esqueleto de una imagen. Pxeles: P7 P6 P5 P8 P1 P4 P9 P2 P3 ProcesadorImagen: ProcesadorImagen abstracto. ProcesadorInclinacion: ProcesadorImagen para corregir la inclinacin de una imagen. Rectas: 3/ \1 2\ /4 comunes.observacion Observable: interfaz que indica que un objeto es Observable. AccionObservable: clase que permite a un objeto ser Observable.
comunes.programacion Programable: interfaz que permite efectuar una accin programada sobre un objeto. AccionProgramada: clase que ejecuta la accin programada de un objeto Programable. comunes.progreso Progreso: objeto que representa el progreso de un proceso. ProgresoEntrenamiento: objeto que representa el progreso del entrenamiento de una red neuronal. resources/ayuda: documento de ayuda de miniOCR en HTML. resources/Iconos: conos utilizados en la aplicacin. resources/librerias: encog-core-2.2.0: librera de inteligencia artificial. slf4j-api-1.5.6: librera utilizada por Encog. slf4j-jdk14-1.5.6: librera utilizada por Encog. Entrenador entrenador Main: clase que da inicio a EntrenadorGUI. entrenador.controlador EntrenadorCtl: controlador de EntrenadorGUI. entrenador.entrenador Entrenador: entrenador de la RedNeuronal. entrenador.gui EntrenadorGUI: interfaz de usuario del entrenador. entrenador.temporizador Temporizador: temporizador. GeneradorMuestras generador Main: clase que da inicio a GeneradorMuestrasGUI. generador.controlador GeneradorMuestrasCtl: controlador de GeneradorMuestrasGUI. generador.gui GeneradorMuestrasGUI: interfaz de usuario del Generador de Muestras. MedidorRendimiento medidor Main: clase que da inicio a MedidorRendimientoGUI. medidor.controlador MedidorRendimientoCtl: controlador de MedidorRendimientoGUI. medidor.gui MedidorRendimientoGUI: interfaz de usuario del medidor de rendimiento. medidor.medidor
GrupoMedicionRendimiento: grupo compuesto por un caracter y la cantidad de aciertos y fallos en una medicin. MedicionRendimiento: una medicin de rendimiento. MedidorRendimiento: medidor de rendimiento. Calculadora calculadora Main: clase que da inicio a CalculadoraGUI. calculadora.ayuda.gui AcercaDeCalculadoraGUI: ventana que muestra el 'Acerca de...' de la aplicacin. AyudaCalculadoraGUI: ventana que muestra la ayuda de la aplicacin. calculadora.calculadora Calculadora: calculadora. calculadora.controlador CalculadoraCtl: controlador de CalculadoraGUI. calculadora.gui CalculadoraGUI: Interfaz de usuario de la calculadora. calculadora.notacion ConversorNotacion: conversor entre notacin infija y postfija. EvaluadorPostfija: evaluador de expresiones en notacin postfija. ExpresionInvalidaException: excepcin lanzada cuando se intenta procesar una expresin invlida. calculadora.segmentador Segmentador: segmentador de una imagen en Muestras. resources caracteres.txt: archivo de texto plano que contiene los caracteres reconocibles por la Calculadora. Red Neuronal.eg: archivo de red neuronal utilizado por la aplicacin. resources/ayuda: documento de ayuda de Calculadora en HTML. resources/librerias: miniOCR-comunes: librera comn de miniOCR.