Necesito ayuda con un proyecto de ML que estoy tratando de crear actualmente.
Recibo muchas facturas de muchos proveedores diferentes, todos en su propio diseño único. Necesito extraer 3 elementos clave de las facturas. Estos 3 elementos están ubicados en una tabla / partidas individuales para todas las facturas.
Los 3 elementos son:
- 1 : número de tarifa (dígito)
- 2 : Cantidad (siempre un dígito)
- 3 : Importe total de la línea (valor monetario)
Consulte la siguiente captura de pantalla, donde he marcado estos campos en una factura de muestra.
Comencé este proyecto con un enfoque de plantilla, basado en expresiones regulares . Sin embargo, esto no era escalable en absoluto y terminé con toneladas de reglas diferentes.
Espero que el aprendizaje automático pueda ayudarme aquí, ¿o tal vez una solución híbrida?
El común denominador
En todas mis facturas, a pesar de los diferentes diseños, cada línea de pedido siempre constará de un número de tarifa . Este número de tarifa siempre tiene 8 dígitos y siempre está formateado de una de las formas siguientes:
- xxxxxxxx
- xxxx.xxxx
- xx.xx.xx.xx
(Donde "x" es un dígito de 0 a 9).
Además , como puede ver en la factura, hay un precio unitario y un monto total por línea. La cantidad que necesitaré siempre es la más alta para cada línea.
La salida
Para cada factura como la anterior, necesito la salida para cada línea. Esto podría ser, por ejemplo, algo como esto:
{
"line":"0",
"tariff":"85444290",
"quantity":"3",
"amount":"258.93"
},
{
"line":"1",
"tariff":"85444290",
"quantity":"4",
"amount":"548.32"
},
{
"line":"2",
"tariff":"76109090",
"quantity":"5",
"amount":"412.30"
}
A dónde ir desde aquí?
No estoy seguro de qué es lo que estoy buscando hacer en el aprendizaje automático y, de ser así, en qué categoría. ¿Es visión por computadora? PNL? Reconocimiento de entidad con nombre?
Mi pensamiento inicial fue:
- Convierta la factura en texto. (Todas las facturas están en archivos PDF con texto, por lo que puedo usar algo como
pdftotext
obtener los valores textuales exactos) - Crear personalizada entidades nombradas para
quantity
,tariff
yamount
- Exportar las entidades encontradas.
Sin embargo, siento que me podría estar perdiendo algo.
¿Alguien puede ayudarme en la dirección correcta?
Editar:
Vea a continuación algunos ejemplos más de cómo puede verse una sección de la tabla de facturas:
Edición 2:
Consulte a continuación las tres imágenes de muestra, sin los bordes / cuadros delimitadores:
Tariff No.:
or $
) o la columna a la que pertenece (aquí puede ayudarlo a guardar la información espacial de las letras, si alguna herramienta de OCR hace eso). Creo que no necesita entrar en el aprendizaje automático con este problema (aparte del OCR prefabricado), ni PNL (no es lenguaje natural). Sin embargo, sin ver qué tan bien funcionan estas herramientas con sus datos, solo podemos especular cuál es el siguiente paso y qué es necesario: D