Cómo hacer fácilmente el reconocimiento de escritura a mano usando Machine Learning PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

¿Quieres hacer OCR escrito a mano? Este blog es una descripción general completa de los últimos métodos de reconocimiento de escritura a mano mediante el aprendizaje profundo. Hemos revisado las últimas investigaciones y documentos y también hemos creado un lector de escritura a mano desde cero.


Nanonetas API de OCR tiene muchos interesantes casos de uso. Habla con un experto en IA de Nanonets para obtener más información.


Introducción

Se espera que el tamaño del mercado del reconocimiento óptico de caracteres (OCR) sea de 13.38 2025 millones USD para 13.7, con un crecimiento interanual del XNUMX %. Este crecimiento está impulsado por la rápida digitalización de los procesos comerciales que utilizan OCR para reducir sus costos de mano de obra y ahorrar valiosas horas de trabajo. Aunque OCR se ha considerado un problema resuelto, hay un componente clave, el reconocimiento de escritura a mano (OCR de escritura a mano) o el reconocimiento de texto escrito a mano (HTR), que todavía se considera una declaración de problema desafiante. La gran variación en los estilos de escritura a mano entre las personas y la mala calidad del texto escrito a mano en comparación con el texto impreso plantean importantes obstáculos para convertirlo en texto legible por máquina. Sin embargo, es un problema crucial a resolver para múltiples industrias como la atención médica, los seguros y la banca.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático
Fuente :- https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

Los avances recientes en Deep Learning, como el advenimiento de las arquitecturas transformadoras, han acelerado nuestro progreso en descifrar el reconocimiento de texto escrito a mano. El reconocimiento de texto escrito a mano se denomina reconocimiento inteligente de caracteres (ICR) debido al hecho de que los algoritmos necesarios para resolver ICR necesitan mucha más inteligencia que resolver OCR genérico.

En este artículo, aprenderemos sobre la tarea del reconocimiento de texto escrito a mano, sus complejidades y cómo podemos resolverlo utilizando técnicas de aprendizaje profundo.


¿Quiere extraer datos de formularios escritos a mano? Dirigirse a Nanonetas ¡y comience a crear modelos OCR de escritura a mano de forma gratuita!


Desafíos en el reconocimiento de escritura a mano

  1. Gran variabilidad y ambigüedad de los trazos de una persona a otra.
  2. El estilo de escritura de una persona individual también varía de vez en cuando y es inconsistente
  3. Mala calidad del documento / imagen de origen debido a la degradación con el tiempo
  4. El texto de los documentos impresos se coloca en línea recta, mientras que los humanos no necesitan escribir una línea de texto en línea recta en papel blanco.
  5. La escritura cursiva dificulta la separación y el reconocimiento de caracteres
  6. El texto escrito a mano puede tener una rotación variable hacia la derecha, lo que contrasta con el texto impreso, donde todo el texto se coloca recto.
  7. Recopilar un buen conjunto de datos etiquetado para aprender no es barato en comparación con los datos sintéticos

Use cases

Salud y productos farmacéuticos

La digitalización de las recetas de los pacientes es un problema importante en la industria farmacéutica y de la salud. Por ejemplo, Roche maneja millones de petabytes de archivos PDF médicos a diario. Otra área donde la detección de texto escrito a mano tiene un impacto clave es la inscripción de pacientes y la digitalización de formularios. Al agregar el reconocimiento de escritura a mano a su conjunto de herramientas de servicios, los hospitales / productos farmacéuticos pueden mejorar significativamente la experiencia del usuario

Seguros

Una gran industria de seguros recibe más de 20 millones de documentos al día y un retraso en el procesamiento de la reclamación puede afectar terriblemente a la empresa. El documento de reclamos puede contener varios estilos de escritura a mano diferentes y la automatización manual pura del procesamiento de reclamos ralentizará completamente el proceso.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático
Fuente: - https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Bancario

Las personas emiten cheques de manera regular y los cheques aún juegan un papel importante en la mayoría de las transacciones que no son en efectivo. En muchos países en desarrollo, el procedimiento actual de procesamiento de cheques requiere que un empleado del banco lea e ingrese manualmente la información presente en un cheque y también verifique las entradas como la firma y la fecha. Dado que una gran cantidad de cheques deben procesarse todos los días en un banco, un sistema de reconocimiento de texto escrito a mano puede ahorrar costos y horas de trabajo humano.

Biblioteca en línea

Se están digitalizando enormes cantidades de conocimiento histórico mediante la carga de imágenes escaneadas para acceder a todo el mundo. Pero este esfuerzo no es de gran utilidad hasta que se pueda identificar el texto de las imágenes que se pueda indexar, consultar y navegar. El reconocimiento de la escritura juega un papel clave para dar vida a los documentos, postales, estudios de investigación, etc. medievales y del siglo XX.

Métodos

Los métodos de reconocimiento de escritura a mano se pueden clasificar en los dos tipos siguientes

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático
  1. Métodos en línea : - Los métodos en línea involucran un lápiz / lápiz digital y tienen acceso a la información del trazo, la ubicación del lápiz mientras se escribe el texto como se ve en la figura de la derecha arriba. Dado que tienden a tener mucha información con respecto al flujo del texto que se escribe, se pueden clasificar con una precisión bastante alta y la demarcación entre diferentes caracteres en el texto se vuelve mucho más clara
  2. Métodos sin conexión :- Los métodos sin conexión implican el reconocimiento del texto una vez que está escrito y, por lo tanto, no tendrán información sobre los trazos/direcciones involucradas durante la escritura con la posible adición de algún ruido de fondo de la fuente, es decir, el papel.

En el mundo real no siempre es posible/escalable llevar un lápiz digital con sensores para capturar información de trazo y por lo tanto la tarea de reconocer texto sin conexión es un problema mucho más relevante. Por lo tanto, ahora discutiremos varias técnicas para resolver el problema de reconocer texto sin conexión.

Técnicas

Los enfoques iniciales para resolver el reconocimiento de escritura a mano involucraron métodos de aprendizaje automático como modelos ocultos de Markov (HMM), SVM, etc. Una vez que el texto inicial se procesa previamente, se realiza la extracción de características para identificar información clave como bucles, puntos de inflexión, relación de aspecto, etc. de carácter individual. Estas características generadas ahora se envían a un clasificador, digamos HMM, para obtener los resultados. El rendimiento de los modelos de aprendizaje automático es bastante limitado debido a la fase de extracción manual de características y su limitada capacidad de aprendizaje. El paso de extracción de características varía para cada idioma individual y, por lo tanto, no es escalable. Con el advenimiento del aprendizaje profundo se produjeron enormes mejoras en la precisión del reconocimiento de escritura a mano. Analicemos algunas de las investigaciones destacadas en el área del aprendizaje profundo para el reconocimiento de escritura a mano.

Redes neuronales recurrentes multidimensionales

RNN/LSTM, como sabemos, puede manejar datos secuenciales para identificar patrones temporales y generar resultados. Pero se limitan a tratar con datos 1D y, por lo tanto, no se aplicarán directamente a los datos de imágenes. Para resolver este problema, los autores de este artículo propusieron una estructura RNN/LSTM multidimensional como se puede ver en la siguiente figura.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

La siguiente es la diferencia entre un RNN general y un RNN multidimensional. En un RNN general, la capa oculta dice que i recibe el estado de una capa oculta anterior en el tiempo i-1. En RNN multidimensional, por ejemplo, un RNN bidimensional, la capa oculta (i, j) recibe estados de múltiples capas ocultas anteriores, es decir (i-2, j) y (i, j-1) y, por lo tanto, captura el contexto de ambas alto y ancho en una imagen que es fundamental para obtener una comprensión clara de la región local mediante una red. Esto se amplía aún más para obtener información no solo de capas anteriores, sino también de capas futuras de forma similar a cómo un BI-LSTM recibe información de t-1 y t + 1. De manera similar, una capa oculta MDRNN 1D ahora puedo recibir información (i-2, j), (i, j-1), (i + 1, j), (i, j + 1) capturando así el contexto en todas las direcciones

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

La estructura de la red completa se muestra arriba. Se usa MDLSTM, que no es más que reemplazar el bloque RNN con un bloque LSTM de la discusión anterior de MDRNN. La entrada se divide en bloques de tamaño 3 × 4 que ahora se alimentan en capas MDSTM. La red tiene una estructura jerárquica de capas MDLSTM seguidas de capas de alimentación hacia adelante (ANN) en tándem. Luego, la salida final se convierte en un vector 1D y se le da a la función CTC para generar la salida

Clasificación temporal conexionista (CTC) es un algoritmo que se usa para manejar tareas como reconocimiento de voz, reconocimiento de escritura a mano, etc. donde solo están disponibles los datos de entrada y la transcripción de salida, pero no se proporcionan detalles de alineación, es decir, cómo una región particular en audio para voz o región particular en imágenes para escritura a mano está alineado con un carácter específico. Las heurísticas simples, como dar a cada carácter la misma área, no funcionarán, ya que la cantidad de espacio que ocupa cada carácter varía en la escritura a mano de una persona a otra y de un momento a otro.

Para nuestro caso de uso de reconocimiento de escritura a mano, considere las regiones de imagen de entrada para una oración en particular como entrada X=[x1,x2,…,x ** T] mientras que la salida esperada como Y=[y1,y2,…,Yu] . Dado X, se supone que debemos encontrar Y exacto. El algoritmo CTC funciona tomando la entrada X y dando una distribución sobre todas las Y posibles con las que podemos hacer una predicción para el resultado final.

CTC usa un carácter base, por ejemplo, para diferenciar entre caracteres duplicados y caracteres repetidos en una región de entrada. Por ejemplo, un carácter en particular puede abarcar varias regiones de entrada y, por lo tanto, CTC generaría el mismo carácter de forma consecutiva. Ejemplo: - Entrada james y Salida de CTC es jjaammmees. La salida final se obtiene colapsando las salidas repetidas y, por lo tanto, obtenemos james. Pero ahora, para presentar caracteres duplicados, diga 'l' en hola, necesitamos tener una separación en su lugar y, por lo tanto, todas las salidas están separadas por un guión (-). Ahora, la salida para hola podría ser h-ee-ll-lll-oo, que si se colapsa se convertirá en hola y no en hola. Puede ver más información sobre cómo funciona CTC aquí CTC.

Al decodificar la salida de CTC en función de la heurística simple de mayor probabilidad para cada posición, es posible que obtengamos resultados que no tengan ningún sentido en el mundo real. Para resolver esto, podríamos emplear un decodificador diferente para mejorar los resultados. Analicemos los diferentes tipos de decodificación.

  1. Decodificación de la mejor ruta : - Esta es la decodificación genérica que hemos comentado hasta ahora. En cada posición, tomamos la salida del modelo y encontramos el resultado con la mayor probabilidad.
  2. Decodificación de búsqueda de haz : - En lugar de tomar una única salida de la red cada vez, la búsqueda del haz sugiere mantener múltiples rutas de salida con las probabilidades más altas y expandir la cadena con nuevas salidas y eliminar rutas que tengan menores probabilidades para mantener constante el tamaño del haz. Los resultados obtenidos mediante este enfoque son más precisos que con el enfoque codicioso.
  3. Haz búsqueda con modelo de lenguaje :- La búsqueda de haz proporciona resultados más precisos que la búsqueda de cuadrícula, pero aún así no resolverá el problema de obtener resultados significativos. Para resolver esto, podemos usar un modelo de lenguaje junto con la búsqueda de haz usando las probabilidades del modelo y el modelo de lenguaje para generar los resultados finales.

Más detalles en la generación de resultados de decodificación precisos se pueden ver en este artículo

Redes codificadoras-decodificadoras y de atención

Los modelos Seq2Seq que tienen redes de codificador-decodificador han sido populares recientemente para resolver las tareas de reconocimiento de voz, traducción automática, etc. y, por lo tanto, se han extendido para resolver el caso de uso del reconocimiento de escritura a mano mediante el despliegue de un mecanismo de atención adicional. Analicemos algunas investigaciones fundamentales en esta área.

Escanear, asistir y leer

En este trabajo fundamental, Scan, Attend and Read (SAR), los autores proponen el uso de un modelo basado en la atención para el reconocimiento de escritura a mano de un extremo a otro. La principal contribución de la investigación es la transcripción automática de texto sin segmentar en líneas como paso previo al procesamiento y así poder escanear una página completa y dar resultados.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

SAR utiliza una arquitectura basada en MDLSTM similar a la que discutimos anteriormente con un pequeño cambio en la capa final. Después de la última capa lineal, es decir, el bloque Sum final en la figura anterior, los mapas de características se contraen en la dimensión vertical y se aplica una función softmax final para obtener los resultados.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

La arquitectura SAR consta de una arquitectura MDLSTM que actúa como extractor de características. El módulo de colapso final con una salida softmax y pérdida de CTC se reemplaza por un módulo de atención y un decodificador LSTM. El modelo de atención utilizado es una combinación híbrida de atención basada en el contenido y atención basada en la ubicación, que se explica con más detalle en el próximo artículo. Los módulos del decodificador LSTM toman el estado anterior, el mapa de atención anterior y las características del codificador para generar el carácter de salida final y el vector de estado para la próxima predicción.

Convolucionar, asistir y deletrear

Este artículo propone un modelo de secuencia a secuencia basado en la atención para el reconocimiento de palabras escritas a mano. La arquitectura propuesta tiene tres partes principales: un codificador, que consta de una CNN y un GRU bidireccional, un mecanismo de atención dedicado a centrarse en las características pertinentes y un decodificador formado por un GRU unidireccional, capaz de deletrear la palabra correspondiente, personaje a personaje.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

El codificador usa una CNN para extraer características visuales. Se utiliza una arquitectura VGG-19-BN preentrenada como extractor de características. La imagen de entrada se convierte en el mapa de características X, que luego se transforma en X' dividiendo todos los canales en columnas y combinándolos para obtener la información secuencial. X' se convierte además en H mediante el uso de una GRU bidireccional. GRU es una red neuronal de naturaleza similar a LSTM y puede capturar información temporal.

Además, se emplea un modelo de atención mientras se predice la salida del decodificador. El artículo analiza dos tipos diferentes de mecanismos de atención explorados.

  1. Atención basada en contenido : - La idea detrás de esto es encontrar la similitud entre el estado oculto actual del decodificador y el mapa de características del codificador. Podemos encontrar los vectores de características más correlacionados en el mapa de características del codificador, que se puede usar para predecir el carácter actual en el paso de tiempo actual. Se pueden ver más detalles sobre cómo funciona el mecanismo de atención aquí. Atención
  2. Atención basada en la ubicación :- La principal desventaja de los mecanismos de ubicación basados ​​en contenido es que existe una suposición implícita de que la información de ubicación está incrustada en la salida del codificador. De lo contrario, no hay forma de diferenciar entre las salidas de caracteres que se repiten desde el decodificador. Por ejemplo, considere una palabra Charmander, el carácter a se repite dos veces y sin información de ubicación, el decodificador no podrá predecirlos como caracteres separados. Para aliviar esto, el carácter actual y su alineación se predicen utilizando tanto la salida del codificador como la alineación anterior. Se pueden ver más detalles sobre cómo funciona la asistencia basada en la ubicación esta página.

El decodificador es un GRU multicapa unidireccional. En cada paso de tiempo t, recibe información del paso de tiempo anterior y el vector de contexto del módulo de atención. La decodificación multinomial y el suavizado de etiquetas se exploran durante el entrenamiento para mejorar la capacidad de generalización.

Modelos de transformadores

Aunque las redes de codificador-decodificador han sido bastante buenas para lograr resultados para el reconocimiento de escritura a mano, tienen un cuello de botella en el entrenamiento debido a las capas LSTM involucradas y, por lo tanto, no se pueden paralelizar. Recientemente, los transformadores han tenido bastante éxito y reemplazaron a LSTM para resolver varias tareas relacionadas con el lenguaje. Analicemos ahora cómo se pueden aplicar los modelos basados ​​en transformadores para el reconocimiento de escritura a mano.

Preste atención a lo que lee

En este trabajo, los autores propusieron el uso de una arquitectura basada en transformadores utilizando capas de atención de auto-atención de múltiples cabezas en las etapas visual y de texto y, por lo tanto, pueden aprender tanto el reconocimiento de caracteres como las dependencias relacionadas con el lenguaje de las secuencias de caracteres a decodificar. Dado que el conocimiento del idioma está integrado en el modelo en sí, no hay necesidad de ningún paso adicional de procesamiento posterior utilizando un modelo de idioma y, por lo tanto, tiene la capacidad de predecir resultados que no forman parte del vocabulario. Para lograr esta codificación de texto ocurre a nivel de carácter y no a nivel de palabra. Como la arquitectura del transformador permite entrenar el modelo en paralelo para cada región o personaje, el proceso de entrenamiento se simplifica mucho.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

La arquitectura de la red consta de los siguientes componentes

  1. Codificador visual : - Para extraer características relevantes y aplicar auto-atención visual de múltiples cabezas en diferentes ubicaciones de personajes
  2. Transcriptor de texto : - Realiza la tarea de tomar la entrada de texto, codificarla, aplicar la auto-atención del lenguaje de múltiples cabezas y aplicar la atención mutua en las características visuales y del texto.
Codificador visual

La red troncal Resnet50 se utiliza para funciones adicionales, como se puede ver en la figura anterior. La salida del mapa de características tridimensionales de Resnet3 Fc se pasa al módulo de codificación temporal que cambia su forma a 50d manteniendo el mismo ancho y, por lo tanto, la forma de (fxh, w). Esto se introduce en una capa completamente conectada para reducir la forma a (f, w) y la salida resultante es Fc'. Además, se agrega una codificación posicional TE a Fc' para retener la información de posición como se menciona en el artículo de Transformador de Vaswani. Se puede ver más información de cómo se diseña la arquitectura del transformador. esta página. La salida se pasa a través de una capa completamente conectada para obtener el mapa de características final con forma (f, w). La salida final se pasa a través de un módulo de atención de múltiples cabezas con 8 cabezas para obtener un mapa de características rico en visual

Transcriptor de texto

El texto de entrada se pasa a través de un codificador que genera incrustaciones a nivel de carácter. Estas incrustaciones se combinan con una ubicación temporal similar a la forma en que Visual Encoder utiliza un módulo de Codificador temporal. Este resultado luego se pasa a un módulo de Auto-Atención de Lenguaje de Cabeceras Múltiples que es similar al módulo de atención en el Codificador Visual. Las características de texto generadas a lo largo de las características visuales del codificador visual se pasan a un módulo de atención mutua cuya tarea es alinear y combinar las características aprendidas de las imágenes y las entradas de texto. La salida se pasa a través de una función softmax para obtener el resultado final.

Al evaluar los datos de la prueba, las transcripciones no están disponibles. Por lo tanto, solo se pasa como entrada el token de inicio <S> y el primer carácter predicho se retroalimenta al sistema, que genera el segundo carácter predicho. Este proceso de inferencia se repite en un bucle hasta que se produce el símbolo de fin de secuencia <E> o cuando se alcanza la longitud máxima de salida N.

Generación de texto de escritura a mano

La generación de texto escrito a mano es la tarea de generar texto escrito a mano de aspecto real y, por lo tanto, se puede utilizar para aumentar los conjuntos de datos existentes. Como sabemos, el aprendizaje profundo requiere una gran cantidad de datos para entrenar, mientras que la obtención de un gran corpus de imágenes de escritura a mano etiquetadas para diferentes idiomas es una tarea engorrosa. Para resolver esto, podemos usar Redes adversarias generativas para generar datos de entrenamiento. Analicemos una de esas arquitecturas aquí.

ScrabbleGAN

ScrabbleGAN sigue un enfoque semi-supervisado para sintetizar imágenes de texto escrito a mano que son versátiles tanto en estilo como en léxico. Tiene la capacidad de generar imágenes de diferente longitud. El generador también puede manipular el estilo de texto resultante, lo que nos permite decidir si el texto debe ser cursivo o decir qué tan grueso / delgado debe ser el trazo del lápiz.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

La arquitectura consta de un generador totalmente convolucional basado en BigGAN. Para cada carácter en la entrada se elige un filtro correspondiente y todos los valores se concatenan juntos, que luego se multiplica por un vector de ruido z que controla el estilo de texto generado. Como se puede ver arriba, las regiones generadas para cada carácter individual se superponen, lo que ayuda a generar texto recursivo conectado y permite la flexibilidad de diferentes tamaños de caracteres. Por ejemplo, m ocupa gran parte del espacio, mientras que eyt ocupan un área limitada. Para mantener el mismo estilo para toda la palabra u oración, el vector de estilo z se mantiene constante para todos los caracteres.

Se utiliza un discriminador convolucional basado en la arquitectura BigGAN para clasificar si el estilo generado de las imágenes parece falso o real. El discriminador no se basa en anotaciones a nivel de carácter y, por lo tanto, no se basa en una GAN condicional de clase. La ventaja de esto es que no hay necesidad de datos etiquetados y, por lo tanto, los datos de corpus invisibles que no forman parte de los datos de entrenamiento pueden usarse para entrenar el discriminador. Junto con el discriminador, se entrena un reconocedor de texto R para clasificar si el texto generado tiene sentido en el mundo real o si es un galimatías. El reconocedor se basa en arquitecturas CRNN con la cabeza recurrente eliminada para hacer que el reconocedor sea un poco más débil y no reconozca el texto, incluso si no está claro. El texto generado en la salida de R se compara con el texto de entrada dado al generador y se agrega la penalización correspondiente a la función de pérdida.

Los resultados generados por ScrabbleGAN se muestran a continuación

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

Conjuntos de datos: -

  1. AMI : - El conjunto de datos de IAM contiene aproximadamente 100 imágenes de palabras del idioma inglés con palabras escritas por 657 autores diferentes. El conjunto de entrenamiento, prueba y validación contiene palabras escritas por autores mutuamente excluyentes. Enlace: - http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL : - El conjunto de datos CVL consta de siete documentos escritos a mano por unos 310 participantes, lo que da como resultado aproximadamente 83 recortes de palabras, divididos en conjuntos de prueba y de tren. https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. ESCARCHAS : - Contiene palabras del idioma francés de unas 60k imágenes y escritas por 1300 autores correspondientes a unos 5 mails escritos por cada persona. http://www.a2ialab.com/doku.php?id=rimes_database:start

Métricas: -

Tasa de error de caracteres : - Se calcula como la distancia de Levenshtein, que es la suma de las sustituciones de caracteres (Sc), inserciones (Ic) y eliminaciones (Dc) que se necesitan para transformar una cadena en otra, dividida por el número total de caracteres en la verdad fundamental (Nc)

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

Tasa de error de palabras : - Se calcula como la suma de las sustituciones de palabras (Sw), inserciones (Iw) y eliminaciones (Dw) que se requieren para transformar una cadena en otra, dividida por el número total de palabras en la verdad básica (Nw)

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

Entrena tu propio modelo de reconocimiento de escritura a mano

Ahora veamos cómo podemos entrenar nuestro propio modelo de reconocimiento de texto escrito a mano. Estaremos entrenando en el conjunto de datos de IAM, pero también puede entrenar el modelo en su propio conjunto de datos. Analicemos los pasos necesarios para configurar esto

Datos

Para descargar el registro de conjunto de datos de IAM desde esta página. Una vez registrado, descargue words.tgz de esta página. Contiene un conjunto de datos de imágenes de palabras escritas a mano. También descargue el archivo de anotaciones words.txt de esta página.

Si desea utilizar su propio conjunto de datos, debe seguir la estructuración de datos del conjunto de datos de IAM.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

Lo anterior muestra cómo se ve la estructura de carpetas del conjunto de datos de AIM. Aquí a01, a02, etc. representan las carpetas principales, cada una de las cuales tiene subcarpetas de datos. Cada subcarpeta tiene un conjunto de imágenes con el nombre de la carpeta agregado como prefijo del nombre del archivo.

Además, necesitamos un archivo de anotaciones para mencionar las rutas a los archivos de imágenes y las transcripciones correspondientes. Considere, por ejemplo, la imagen de arriba con nominación de texto, la siguiente sería la representación en el archivo de anotaciones words.txt

a01-000u-01-00 ok 156 VBG nominado

  1. a01-000u-01-00 -> id de palabra para una línea en el formulario a01-000u
  2. ok / err -> Indicador de calidad de salida de segmentación
  3. 156 -> nivel de gris para binarizar la línea que contiene esta palabra
  4. 395 -> cuadro delimitador alrededor de esta palabra en formato x, y, w, h
  5. VBG -> la etiqueta gramatical de esta palabra. Aquí está el gerundio verbal
  6. nominando -> la transcripción de esta palabra

Arquitectura: -

Entrenaremos una arquitectura basada en CRNN con pérdida de CTC. Se utiliza una CNN para extraer las características visuales que se pasan a una RNN y se aplica una pérdida de CTC al final con un decodificador codicioso para obtener la salida.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

Formación

Usaremos el código CRNN de esta página para entrenar nuestro modelo. Siga los pasos a continuación para preparar los datos

python checkDirs.py

Ejecute el comando anterior y debería ver un resultado como el siguiente

[OK] palabras /
[OK] palabras / a01 / a01-000u /
[Aceptar] words.txt
[OK] prueba.png
[OK] words/a01/a01-000u/a01-000u-00-00.png

Ahora estás listo para empezar a entrenar.

Vaya al directorio raíz y ejecute

python main.py --train

Resultados

Después de entrenar durante aproximadamente 50 épocas, la tasa de errores de caracteres (CER) es del 10.72%, mientras que la tasa de errores de palabras (WER) es del 26.45% y, por lo tanto, la precisión de las palabras es del 73.55%. Algunas de las predicciones se pueden ver en la siguiente figura.

Cómo hacer fácilmente el reconocimiento de escritura a mano usando el aprendizaje automático

El modelo es capaz de predecir los personajes con precisión en gran medida, pero sufre en pocos casos, ya que se predice terriblemente, y las historias se predice como estrellas. Estos problemas se pueden resolver empleando un modelo de lenguaje como paso de posprocesamiento junto con el decodificador que puede generar palabras significativas y rectificar errores simples.

Resumen

Aunque ha habido avances significativos en la tecnología que ayudan a un mejor reconocimiento del texto escrito a mano, HTR está lejos de ser un problema resuelto en comparación con OCR y, por lo tanto, aún no se utiliza ampliamente en la industria. Sin embargo, con el ritmo de la evolución de la tecnología y con la introducción de modelos como transformadores, podemos esperar que los modelos HTR se conviertan pronto en un lugar común.

Para obtener más información sobre este tema, puede comenzar desde esta página

OTRAS LECTURAS

Sello de tiempo:

Mas de IA y aprendizaje automático