Automatización de la digitalización de recibos con OCR y Deep Learning PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

¿Quiere automatizar la extracción de datos de los recibos? Echa un vistazo a los preentrenados de Nanonets Recibo OCR or construye tu propio OCR de recibo personalizado. Tú también puedes programa una demostración para obtener más información sobre nuestros casos de uso de AP!


Recibo OCR o la digitalización de recibos aborda el desafío de extraer información automáticamente de un recibo. En este artículo, cubro la teoría detrás de la digitalización de recibos e implemento una tubería de extremo a extremo usando OpenCV y Tesseract. También reviso algunos documentos importantes que hacen Digitalización de recibos usando Deep Learning.

¿Qué es la digitalización de recibos?

Los recibos contienen la información necesaria para que se produzcan intercambios entre empresas y gran parte de ella está en papel o en formatos semiestructurados, como archivos PDF e imágenes en papel o copias impresas. Para gestionar esta información de forma eficaz, las empresas extraen y almacenan la información relevante contenida en estos documentos. Tradicionalmente, esto se ha logrado extrayendo manualmente la información relevante e ingresándola en una base de datos que es un proceso costoso y que requiere mucha mano de obra.

La digitalización de recibos aborda el desafío de extraer información automáticamente de un recibo.

Extraer información clave de los recibos y convertirlos en documentos estructurados puede servir para muchas aplicaciones y servicios, como un archivo eficiente, una indexación rápida y análisis de documentos. Desempeñan funciones fundamentales en la optimización de los procesos de documentación intensiva y la automatización de oficinas en muchas áreas financieras, contables y fiscales.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Necesita un robusto recibo OCR or escáner de recibos Cómo extraer datos de los recibos? Echa un vistazo a las nanoredes recibo OCR API!


¿Quién encontrará útil la digitalización de recibos?

Aquí hay algunas áreas en las que la digitalización de recibos puede tener un gran impacto:

Automatización de cuentas por pagar y por cobrar

Calcular las cuentas por pagar (AP) y las cuentas por cobrar (AR) manualmente es costoso, requiere mucho tiempo y puede generar confusión entre gerentes, clientes y proveedores. Con la digitalización, las empresas pueden eliminar estos inconvenientes y pueden tener más ventajas: mayor transparencia, análisis de datos, capital de trabajo mejorado y seguimiento más fácil.

Optimización de la cadena de suministro

Las cadenas de suministro son la columna vertebral del correcto funcionamiento de muchas empresas. La gestión de tareas, flujos de información y flujos de productos es la clave para garantizar un control completo del suministro y la producción. Esto es fundamental para que las organizaciones cumplan los plazos de entrega y controlen los costes de producción.

Las empresas que realmente están prosperando en estos días tienen algo importante en común: una cadena de suministro digitalizada. 89% de empresas con cadenas de suministro digitales recibe pedidos perfectos de proveedores internacionales, lo que garantiza la entrega a tiempo. Uno de los elementos clave para realizar la cadena de suministro digital 4.0 de próxima generación es la automatización de la captura y gestión de datos, y muchos de estos datos son en forma de recibos y facturas . La entrada manual de recibos actúa como un cuello de botella en toda la cadena de suministro y provoca retrasos innecesarios. Si este procesamiento de recibos se digitaliza, puede generar ganancias sustanciales en tiempo y eficiencia.


¿Tiene un problema de OCR en mente? quiero digitalizar facturas , PDF o matrículas? Dirigirse a Nanonetas y crea modelos OCR gratis!


¿Por qué es un problema difícil?

La digitalización de recibos es difícil porque los recibos tienen muchas variaciones y, a veces, son de baja calidad. El escaneo de recibos también introduce varios artefactos en nuestra copia digital. Estos artefactos plantean muchos desafíos de legibilidad.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Aquí hay una lista de algunas cosas que hacen que sea un problema difícil de resolver

  • Texto escrito a mano
  • Fuentes pequeñas
  • Imágenes de ruido
  • Imágenes desvaídas
  • Movimiento y vibración de la cámara
  • Marcas de agua
  • Arrugas
  • Texto descolorido

Un canal de digitalización de recibos tradicional

Una canalización típica para este tipo de enfoque de extremo a extremo implica:

  • preprocesamiento
  • Reconocimiento óptico de caracteres
  • Extracción de información
  • Volcado de datos
Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Profundicemos en cada parte de la tubería. El primer paso del proceso es el preprocesamiento.

preprocesamiento

La mayoría de los recibos escaneados son ruidosos y tienen artefactos y, por lo tanto, para que el OCR y los sistemas de extracción de información funcionen bien, es necesario preprocesar los recibos. Los métodos de preprocesamiento comunes incluyen: escala de grises, umbralización (binarización) y eliminación de ruido.

La escala de grises es simplemente convertir una imagen RGB en una imagen en escala de grises.

La eliminación de ruido generalmente implica eliminar el ruido de sal y pimienta o el ruido gaussiano.

La mayoría de los motores de OCR funcionan bien con imágenes en blanco y negro. Esto se puede lograr mediante el establecimiento de un umbral, que es la asignación de valores de píxeles en relación con el valor de umbral proporcionado. Cada valor de píxel se compara con el valor umbral. Si el valor de píxel es menor que el umbral, se establece en 0; de lo contrario, se establece en un valor máximo (generalmente 255).

OpenCV proporciona varias opciones de umbralización: umbralización simple, umbralización adaptativa

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Reconocimiento óptico de caracteres

El siguiente paso en la tubería es OCR. Se utiliza para leer texto de imágenes como un documento escaneado o una imagen. Esta tecnología se utiliza para convertir prácticamente cualquier tipo de imágenes que contengan texto escrito (mecanografiado, manuscrito o impreso) en datos de texto legibles por máquina.. OCR consta de 2 pasos: detección de texto y reconocimiento de texto.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Hay varios enfoques para OCR. El enfoque convencional de la visión por computadora es

  • Usar filtros para separar los personajes del fondo
  • Aplicar detección de contorno para reconocer los caracteres filtrados
  • Usa la clasificación de magos para identificar a los personajes.

Aplicar filtros y clasificación de imágenes es bastante sencillo (piense en la clasificación MNIST usando SVN), pero la coincidencia de contornos es un problema muy difícil y requiere mucho esfuerzo manual y no es generalizable.

Luego vienen los enfoques de Deep Learning. El aprendizaje profundo generaliza muy bien. Uno de los enfoques más populares para la detección de texto es EAST. EAST (detector de texto de escena eficiente y preciso) es un enfoque simple pero poderoso para la detección de texto. La red EAST es en realidad una versión de la conocida U-Net, que es buena para detectar características de diferentes tamaños.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

CRNN y STN-OCR (Spatial Transformer Networks) son otros documentos populares que realizan OCR.

Extracción de información

El enfoque más común del problema de la extracción de información se basa en reglas, donde las reglas se escriben después del OCR para extraer la información requerida. Este es un enfoque poderoso y preciso, pero requiere que escriba nuevas reglas o plantillas para un nuevo tipo de documento.

Varios basados ​​en reglas factura sistemas de análisis existen en la literatura.

Los métodos basados ​​en reglas se basan en gran medida en las reglas de plantilla predefinidas para extraer información de diseños de facturas específicos.

Un enfoque que se ha vuelto muy común en los últimos años es utilizar un marco de detección de objetos estándar como YOLO, Faster R-CNN para reconocer campos. Entonces, en lugar de la detección de texto pura, el reconocimiento de campo y la detección de texto se realizan simultáneamente. Esto hace que la tubería sea más pequeña (Detección de texto → Reconocimiento → Extracción a detección → Reconocimiento). No es necesario escribir ninguna regla, ya que el detector de objetos aprende a reconocer estos campos.

Volcado de datos

Una vez que haya extraído su información, el volcado de datos se puede realizar según lo requiera nuestro caso de uso. A menudo, es conveniente un formato JSON para almacenar la información de los campos. Estos archivos JSON se pueden convertir fácilmente en archivos XML, hojas de Excel, archivos CSV o archivos de texto sin formato, dependiendo de quién quiera trabajar con los datos y cómo.

Digitalización de recibos usando Tesseract

Ahora que tenemos una idea de la canalización, impleméntela en un recibo de ejemplo. Este es el recibo con el que trabajaremos. Nuestro objetivo al final de esto es extraer el nombre del restaurante, los artículos comprados con su cantidad y costo, la fecha de compra y el total.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

preprocesamiento

Dado que nuestro recibo ya está en escala de grises y no hay mucho ruido, solo haré un umbral aplicando un umbral de 210. Puede ajustar el valor para obtener la salida correcta. Demasiado menos y se perderá mucho. Demasiado cerca de 255 hará que todo sea negro.

Primero necesitaremos instalar OpenCV.

pip install opencv-python

Aquí está el código para el umbral.

import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,’gray’)

Así es como se ve la salida.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Detección de texto

Para la detección de texto, usaré una biblioteca de código abierto llamada Tesseract. Es la biblioteca de OCR definitiva y ha sido desarrollada por Google desde 2006. La última versión de Tesseract (v4) admite OCR basado en aprendizaje profundo que es significativamente más preciso. El motor de OCR subyacente en sí mismo utiliza una red de memoria a corto plazo (LSTM).

Primero instalemos la última versión de Tesseract.

Para ubuntu

sudo apt install tesseract-ocr

Para macOS

brew install tesseract --HEAD

Para Windows, puede descargar los binarios de este página

Verifica tu versión de tesseract.

tesseract -v

Salida -

tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE

Instale sus enlaces Tesseract + Python

Ahora que tenemos el binario Tesseract instalado, necesitamos instalar los enlaces Tesseract + Python para que nuestros scripts de Python puedan comunicarse con Tesseract. También necesitamos instalar el paquete de idioma alemán ya que el recibo está en alemán.

pip install pytesseract
sudo apt-get install tesseract-ocr-deu

Ahora que hemos instalado Tesseract, comencemos a detectar los cuadros de texto.Tesseract tiene una funcionalidad incorporada para detectar cuadros de texto.

import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')

Aquí está la salida del código de detección de texto.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Reconocimiento de texto

Vamos a Tesseract para realizar OCR. Tesseract 4 utiliza un enfoque de aprendizaje profundo que funciona significativamente mejor que la mayoría de las otras implementaciones de código abierto.

Aquí está el código de reconocimiento de texto. Aunque es una frase muy simple, hay muchas cosas que se esconden debajo del capó.

extracted_text = pytesseract.image_to_string(img, lang = 'deu')

Aquí está la salida sin procesar.

'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MüllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &ä 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel ä 22.00 CHF 22.00nIxChässpätz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'

Aquí está la salida formateada

Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Müller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &ä 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch

Necesita digitalizar documentos, recibos o facturas pero demasiado perezoso para codificar? Dirigirse a Nanonetas y crea modelos OCR gratis!


Extracción de información

Como mencioné antes, la forma más común de extraer información es mediante un enfoque basado en reglas.

Todos los recibos de este hotel seguirán una estructura fija y la información aparecerá en diferentes líneas. Esto se refleja en la salida de OCR donde las nuevas líneas están representadas por 'n'. Usando estos, escribamos un conjunto de reglas para extraer información. Este conjunto de reglas se puede aplicar a cualquier recibo de este hotel, ya que seguirán el mismo formato.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Extraeré el nombre del restaurante, la fecha de la transacción, los artículos comprados, su cantidad, los costos totales por artículo y la cantidad total usando comandos simples de Python y expresiones regulares.

Este es un diccionario donde almacenaré la información extraída.

receipt _ocr = {}

El primer paso es extraer el nombre del restaurante. La ubicación del nombre del restaurante será constante en todos los recibos y está en las primeras 2 líneas. Usemos esto para crear una regla.

splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]

A continuación, extraemos la fecha de la transacción. Date regex es bastante sencillo.


import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)

Salida -

‘30.10.2007’

A continuación extraemos toda la información relacionada con los artículos y el costo.

Los artículos contienen un CHF que es el franco suizo. Detectemos todas las ocurrencias de CHF. Ahora podemos detectar líneas reconociendo los caracteres entre 2 ny que contienen un CHF. Estoy detectando el total aquí también.

# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)

Salida -

2xLatte Macchiato &ä 4.50 CHF 9,00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85

Si nota, Tesseract omitió un elemento porque detectó CH en lugar de CHF. Cubriré los desafíos en los sistemas tradicionales de OCR en la siguiente sección.

# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[‘total’] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)

Imprimiendo nuestra salida JSON -

{'date': '30.07.2007', 'items': {'Chässpätz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}

Toda la información clave se ha extraído y se ha volcado en receiver_json ..

Problemas con el enfoque convencional

Aunque extrajimos la información, la canalización anterior pierde algunas cosas y no es óptima. Para cada nuevo recibo, necesitamos escribir un nuevo conjunto de reglas y, por lo tanto, no es escalable.

Puede haber muchas variaciones en los diseños, fuentes y tamaños de fuente, documentos escritos a mano, etc. Las diferencias en los diseños afectarán los enfoques basados ​​en reglas y estos deben tenerse en cuenta, lo que se vuelve muy tedioso. Las diferencias en los tamaños de fuente y fuente dificultan el reconocimiento y la extracción de información.

¿Por qué es mejor una canalización de aprendizaje profundo de un extremo a otro?

Uno de los mayores problemas del enfoque estándar es la falta de generalización. Los enfoques basados ​​en reglas no pueden generalizarse y es necesario escribir nuevas reglas para cualquier plantilla nueva. Además, también es necesario tener en cuenta cualquier cambio o variación en una plantilla existente.

Un enfoque de aprendizaje profundo podrá aprender estas reglas y podrá generalizar fácilmente en diferentes diseños, siempre que las tengamos en nuestro conjunto de datos de entrenamiento.

Extracción de información y aprendizaje profundo

Aquí reviso algunos artículos que utilizan enfoques de aprendizaje profundo de extremo a extremo.

CHICA

CUTIE: Aprender a entender documentos con el extractor de información de texto universal convolucional

Este trabajo propone un método de extracción de información clave basado en el aprendizaje con un requisito limitado de recursos humanos. Combina la información tanto del significado semántico como de la distribución espacial de los textos en los documentos. Su modelo propuesto, Extractor de información de texto universal convolucional (CUTIE), aplica redes neuronales convolucionales en textos cuadriculados donde los textos están incrustados como características con connotaciones semánticas.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

El modelo propuesto, aborda el problema de la extracción de información clave

  • Primero creando textos cuadriculados con la propuesta método de mapeo posicional de cuadrícula. Para generar los datos de la cuadrícula para la red neuronal convolucional, la imagen del documento escaneado es procesada por un motor de OCR para adquirir los textos y sus posiciones absolutas / relativas. Los textos se mapean desde la imagen del documento escaneado original a la cuadrícula de destino, de modo que la cuadrícula mapeada conserva la relación espacial original entre los textos, aún más adecuada para ser utilizada como entrada para la red neuronal convolucional.
  • Luego se aplica el modelo CUTIE sobre los textos cuadriculados. La rica información semántica se codifica a partir de los textos cuadriculados en la etapa inicial de la red neuronal convolucional con una capa de incrustación de palabras.

El CUTIE permite buscar simultáneamente tanto la información semántica como la información espacial de los textos en la imagen del documento escaneado y puede alcanzar un nuevo resultado de vanguardia para la extracción de información clave.

Modelo CUTIE

Disponen de 2 modelos CUTIE-A y CUTIE-B. La CUTIE-A propuesta es una red neuronal convolucional de alta capacidad que fusiona funciones de resolución múltiple sin perder las funciones de alta resolución. CUTIE-B es una red convolucional con una convolución atroz para ampliar el campo de visión y el módulo Atrous Spatial Pyramid Pooling (ASPP) para capturar contextos de múltiples escalas. Tanto CUTIE-A como CUITE-B llevan a cabo un proceso de codificación de significado semántico con una capa de incrustación de palabras en la etapa inicial.

La tarea de CUTIE se asemeja a la tarea de segmentación semántica. La cuadrícula mapeada contiene puntos de datos dispersos (tokens de texto) en contraste con las imágenes llenas de píxeles. Los textos clave mapeados posicionales de la cuadrícula están cerca o distantes entre sí debido a los diferentes tipos de diseños de documentos. Por lo tanto, la incorporación de la capacidad de procesamiento de contexto de múltiples escalas beneficia a la red.

Conjunto de datos

El método propuesto se evalúa en el desafío de lectura robusto de ICDAR 2019 en el conjunto de datos SROIE y también en un conjunto de datos autoconstruido con 3 tipos de imágenes de documentos escaneados.

El Conjunto de datos ICDAR 2019 SROIE se utiliza, que contiene 1000 imágenes de recibos escaneados completos. Cada imagen de recibo contiene alrededor de cuatro campos de texto clave, como el nombre de la mercancía, el precio unitario, la fecha y el costo total. El texto anotado en el conjunto de datos consta principalmente de dígitos y caracteres en inglés.

El conjunto de datos autoconstruido contiene 4 documentos de recibos en español escaneados y anotados, incluidos recibos de taxi, recibos de comidas y entretenimiento (ME) y recibos de hotel, con 484 clases de información clave diferentes.

Resultados

El desempeño general se evalúa utilizando precisión promedio (AP - y se mide en términos de precisión por clase en las 9 clases) y precisión promedio suave (softAP) donde la predicción de una clase de información clave se determina como correcta si hay verdades de terreno positivas se predicen correctamente incluso si se incluyen algunos falsos positivos en la predicción final. El análisis conjunto de AP y softAP proporciona una mejor comprensión del rendimiento del modelo.

Puede ver los resultados en la siguiente tabla.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

GCN para VRD

Convolución de gráficos para la extracción de información multimodal de documentos visualmente ricos

Este artículo presenta un modelo basado en convolución de gráficos para combinar información textual y visual presentada en documentos visualmente enriquecidos (VRD). Las incrustaciones de gráficos se entrenan para resumir el contexto de un segmento de texto en el documento y, además, se combinan con incrustaciones de texto para la extracción de entidades.

En este artículo, llaman a un documento un VRD y me quedaré con él.

Cada documento se modela como un gráfico de segmentos de texto, donde cada segmento de texto está compuesto por la posición del segmento y el texto dentro de él. El gráfico se compone de nodos que representan segmentos de texto y bordes que representan dependencias visuales, como formas relativas y distancia, entre dos nodos.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Las incrustaciones de gráficos producidas por convolución de gráficos resumen el contexto de un segmento de texto en el documento, que se combinan además con incrustaciones de texto para la extracción de entidades utilizando un modelo BiLSTM-CRF estándar.

Modelo

El modelo primero codifica cada segmento de texto en el documento en la incrustación de gráficos, utilizando múltiples capas de convolución de gráficos. La incrustación representa la información en el segmento de texto dado su contexto visual y textual. El contexto visual es el diseño del documento y las posiciones relativas del segmento individual a otros segmentos. El contexto textual es el conjunto de información de texto en el documento en general; El modelo aprende a asignar mayor peso a los textos de los segmentos vecinos. Luego, el documento combina las incrustaciones de gráficos con incrustaciones de texto y aplica un modelo BiLSTM-CRF estándar para la extracción de entidades.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Conjunto de datos

Se utilizan dos conjuntos de datos del mundo real. Se trata de Facturas con Impuestos con Valor Agregado (VATI) y Recibos de Compra Internacionales (IPR). VATI consta de 3000 imágenes subidas por el usuario y tiene 16 entidades exactas. Las entidades de ejemplo son los nombres del comprador / vendedor, la fecha y el monto del impuesto. Las facturas están en chino y tiene una plantilla fija ya que es una factura estándar nacional.

IPR es un conjunto de datos de 1500 documentos de recibos escaneados en inglés que tiene 4 entidades exactas (número de factura, nombre del proveedor, nombre del pagador y monto total). Existen 146 plantillas para los recibos.

Resultados

La puntuación F1 se utiliza para evaluar el rendimiento del modelo en todos los experimentos. La siguiente tabla tiene los resultados de tres conjuntos de datos.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Baseline I aplica BiLSTM-CRF a cada segmento de texto, donde cada segmento de texto es una oración individual.

Baseline II aplica el modelo de etiquetado a los segmentos de texto concatenados.

Más rápido-RCNN + AED

Enfoque de aprendizaje profundo para el reconocimiento de recibos

Este documento presenta un enfoque de aprendizaje profundo para reconocer recibos escaneados. El sistema de reconocimiento tiene dos módulos principales: detección de texto basada en la red de propuesta de texto conexionista y reconocimiento de texto basado en codificador-decodificador basado en la atención. El sistema alcanzó el 71.9% de la puntuación F1 para la tarea de detección y reconocimiento.

Detección de texto

La estructura CTPN es similar a Faster R-CNN, con la adición de la capa LSTM. El modelo de red consta principalmente de tres partes: extracción de características por VGG16, LSTM bidireccional y regresión de cuadro delimitador

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Reconocimiento de texto

El DEA se utiliza para reconocer líneas de texto. El AED tiene dos módulos principales: DenseNet para extraer características de una imagen de texto y un LSTM combinado con un modelo de atención para predecir el texto de salida.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Conjunto de datos

Se utiliza el conjunto de datos de SROIE 2019. Dividieron los datos de capacitación en capacitación, validación y pruebas y seleccionaron al azar el 80% de los recibos para capacitación, el 10% de los recibos para validación y el resto para pruebas. Dando como resultado 500 recibos para capacitación, 63 recibos para validación y 63 para pruebas.

Resultados

Para la detección de texto, el papel utiliza Intersección sobre Unión (TIoU) consciente de la estanqueidad. Para el reconocimiento de texto, el papel utiliza F1, Precisión y Recuperación.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

La Tabla I muestra el resultado de CTPN con tres condiciones: CTPN en imágenes originales; preprocesamiento + CTPN, preprocesamiento + CTPN + verificación OCR. La Tabla 2 muestra los resultados de la red AED.

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Por supuesto, hay una forma más fácil e intuitiva de hacer esto.


Necesita un robusto recibo OCR Cómo extraer datos de los recibos? Echa un vistazo a las nanoredes recibo OCR API!


OCR con nanonetas

Actualización #1: Acabamos de lanzar nuestro recibo OCR modelo pre-entrenado. ¡Dirígete a https://app.nanonets.com y comienza a probar!

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

El API de OCR de nanonetas le permite construir modelos de OCR con facilidad. No tiene que preocuparse por el preprocesamiento de sus imágenes o preocuparse por las plantillas coincidentes o construir motores basados ​​en reglas para aumentar la precisión de su modelo de OCR.

Puede cargar sus datos, anotarlos, configurar el modelo para entrenar y esperar a obtener predicciones a través de una interfaz de usuario basada en navegador sin escribir una sola línea de código, preocuparse por las GPU o encontrar las arquitecturas adecuadas para sus modelos de aprendizaje profundo. También puede adquirir las respuestas JSON de cada predicción para integrarla con sus propios sistemas y crear aplicaciones con tecnología de aprendizaje automático basadas en algoritmos de última generación y una infraestructura sólida.

Usando la GUI: https://app.nanonets.com/

También puede usar la API Nanonets-OCR siguiendo los pasos a continuación:

Paso 1: Clone el repositorio, instale dependencias

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

Paso 2: Obtenga su clave API gratuita
Obtenga su clave API gratuita de http://app.nanonets.com/#/keys

Automatización de la digitalización de recibos con OCR y aprendizaje profundo

Paso 3: establezca la clave API como una variable de entorno

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Paso 4: crea un nuevo modelo

python ./code/create-model.py

Nota: Esto genera un MODEL_ID que necesita para el siguiente paso

Paso 5: Agregar ID de modelo como variable de entorno

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Nota: obtendrá YOUR_MODEL_ID del paso anterior

Paso 6: cargue los datos de entrenamiento
Los datos de entrenamiento se encuentran en images (archivos de imagen) y annotations (anotaciones para los archivos de imagen)

python ./code/upload-training.py

Paso 7: modelo de tren
Una vez que se hayan cargado las imágenes, comience a entrenar al modelo

python ./code/train-model.py

Paso 8: Obtenga el estado del modelo
El modelo tarda ~ 2 horas en entrenar. Recibirá un correo electrónico una vez que el modelo esté capacitado. Mientras tanto, verifica el estado del modelo

python ./code/model-state.py

Paso 9: Hacer predicción
Una vez que el modelo está entrenado. Puedes hacer predicciones usando el modelo

python ./code/prediction.py ./images/151.jpg

OTRAS LECTURAS

Actualizar:
‌ Se agregó más material de lectura sobre los últimos avances en la automatización de la digitalización de recibos mediante OCR y Deep Learning.

Sello de tiempo:

Mas de IA y aprendizaje automático