Pregunta

Estoy creando una aplicación de escritorio/winform que lee facturas pagaderas en tif/pdf y extrae toda la información de la factura para almacenarla en la base de datos.

Puedo leer los códigos de barras estándar (Código QR, Código 39, etc.) y algunos de los campos estándar de la factura pagadera (Fecha de la factura, Nombre de la empresa, Dirección) con OCR (región específica de la imagen de OCR), pero no puedo capturar artículos en línea ni el monto correctamente. .

Extraigo información en dos fases:
1.Lea regiones específicas basadas en la plantilla (región mapeada del usuario para campos específicos)
2.Página completa de OCR y buscar nombres y valores de campo estándar de factura pagaderos

Tengo una idea sobre los siguientes 3 enfoques:
1.Cree una plantilla para un tipo de factura y procese todas las facturas.
2.Motor basado en redes neuronales que debe entrenarse con datos de muestra para funcionar en función de patrones.
3.Procesamiento de formularios, una especie de OMR.El OCR para observar exactamente las mismas coordenadas donde se colocaron los campos en el formulario (durante el diseño del formulario)

Pregunta:
¿Cómo extraer una factura pagadera mediante OCR o algún lector inteligente?
Principalmente busco algún algoritmo (motor C# + OCR)/filosofía de captura de facturas pagaderas, pero también sería útil hacer referencia a algún SDK con la misma característica o tipo sólido de producto comercial.

Busqué en Google y encontré que Abbyy FlexiCapture Engine, IRIS Capture & Extract son algo prometedores, pero en su mayoría se basan en plantillas o capacitación.Afirman que no se requiere plantilla ni capacitación, pero nada parece 100% de captura automática.

Por favor, consulte algún producto (al menos con prueba gratuita), SDK o ejemplo/muestra.

¿Fue útil?

Solución 2

Hice I+D y concluí que:No existe un SDK especializado para la captura de facturas que pueda automatizarla entre un 95 y un 100 %.Solo existen OCR/ICR y SDK de imágenes que pueden ayudar a convertir imágenes en texto/documentos legibles, pero el resto de la captura/extracción de datos se basa únicamente en algoritmos de búsqueda personalizados (como ilya-evdokimov Como se mencionó anteriormente, necesita una combinación de pasos (OCR zonal, OCR de texto completo y luego extracción inteligente de datos).Había estudiado algunos de productos muy populares, pero solo afirman captura automática, pero en última instancia simplemente extraen los campos de factura estándar automáticamente, pero el resto del trabajo es el mismo, ya sea ocr zonal o manual.Esto es lo que sugiero, pero hay muchas más mejoras dependiendo de la aplicación de la naturaleza:

  1. Almacene el campo clave (por ejemplo, información del número de IVA para los clientes en la base de datos/archivo xml
  2. Realice OCR de página completa, busque el campo clave, haga coincidir con la lista de clientes e identifique/clasifica el tipo de documento/imagen.
  3. Una vez identificado el tipo de documento (Factura por pagar/por cobrar, etc.), busque los campos estándar
  4. Permita al usuario crear plantillas predefinidas para cada tipo de documento para cada empresa (el remitente de las facturas).
  5. Compare los resultados de ambos algoritmos (ocr de texto completo y zonal) y mantenga el que tenga mayor precisión.

Otros consejos

Eso sí, para 2018 la situación mejoró un poco.Permítanme recapitular los principales enfoques actuales:

  • Sigue siendo un motor de OCR sin formato (tesseract, Abbyy, Google OCR, etc.) y expresiones regulares (esto aún puede funcionar bien para algunos casos de uso muy limitados)
  • Motor Abbyy FlexiCapture - sigue siendo fuerte, pero todavía basado en plantillas, si está dispuesto a definir una nueva plantilla para cada formato de factura específico
  • Rossum Elis (facturas), pistola de etiquetas (recibos), ...- API basadas en modelos de aprendizaje automático previamente entrenados, es decir.utilizable y funcionando inmediatamente, con volúmenes mensuales gratuitos
  • LucidTech, Detallar, ...- API menos accesibles con una funcionalidad similar (debe pasar por un proceso de demostración y venta)
  • datamolino, NubeFábrica, ...- API con humanos detrás de escena que realizan la transcripción de datos manualmente (diferente estructura de latencia, precios y precisión)

Después de más I+D (*), ahora existen SDK especializados con API:

Primero, para empezar, hay una demostración en https://rossum.ai/developers

Todo el proceso de extracción ahora se puede automatizar con API (https://docs.api.rossum.ai/) como esto:

para cargar una factura:

invoice_file=$1
endpoint='https://all.rir.rossum.ai'
curl -H "Authorization: secret_key $ELIS_API_KEY" -X POST -F file="@$invoice_file;type=application/pdf" $endpoint/document

para descargar los resultados:

invoice_id=$1
endpoint='https://all.rir.rossum.ai'
curl -H "Authorization: secret_key $ELIS_API_KEY" $endpoint/document/$invoice_id

Estos ejemplos de bash son de https://github.com/rossumai/elis-client-examples/

(* para añadir, la API es una consecuencia directa de mi propio trabajo de I+D en la compañia ;) )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top