Preciso de assistência com um projeto de ML que atualmente estou tentando criar.
Recebo muitas faturas de vários fornecedores diferentes - tudo em um layout exclusivo. Preciso extrair três elementos-chave das faturas. Esses três elementos estão todos localizados em uma tabela / itens de linha para todas as faturas.
Os 3 elementos são:
- 1 : Número da tarifa (dígito)
- 2 : Quantidade (sempre um dígito)
- 3 : valor total da linha (valor monetário)
Consulte a captura de tela abaixo, onde eu marquei esses campos em uma amostra da fatura.
Comecei este projeto com uma abordagem de modelo, com base em expressões regulares . Isso, no entanto, não era escalável e acabei com toneladas de regras diferentes.
Espero que o aprendizado de máquina possa me ajudar aqui - ou talvez uma solução híbrida?
O denominador comum
Em todas as minhas faturas, apesar dos diferentes layouts, cada item de linha sempre será composto por um número de tarifa . Esse número de tarifa é sempre de 8 dígitos e é sempre formatado da seguinte maneira:
- xxxxxxxx
- xxxx.xxxx
- xx.xx.xx.xx
(Onde "x" é um dígito de 0 a 9).
Além disso , como você pode ver na fatura, existe um preço unitário e um valor total por linha. A quantidade que precisarei é sempre a mais alta para cada linha.
A saída
Para cada fatura como a acima, preciso da saída de cada linha. Por exemplo, isso pode ser algo como isto:
{
"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"
}
Para onde ir daqui?
Não sei ao certo o que estou procurando fazer se enquadra no aprendizado de máquina e, em caso afirmativo, em qual categoria. É visão computacional? PNL? Reconhecimento de entidade nomeada?
Meu pensamento inicial era:
- Converta a fatura em texto. (As faturas são todas em PDFs com texto, para que eu possa usar algo como
pdftotext
para obter os valores textuais exatos) - Criar personalizado entidades nomeadas para
quantity
,tariff
eamount
- Exporte as entidades encontradas.
No entanto, sinto que posso estar perdendo alguma coisa.
Alguém pode me ajudar na direção certa?
Editar:
Veja abaixo mais alguns exemplos de como pode ser uma seção da tabela de faturas:
Edição 2:
Veja abaixo as três imagens de exemplo, sem as caixas de bordas / bordas:
Tariff No.:
ou $
) ou a coluna à qual ele pertence (aqui pode ajudar a salvar as informações espaciais das letras, se alguma ferramenta de OCR fizer isso). Eu acredito que você não precisa entrar no aprendizado de máquina com esse problema (além do OCR pré-fabricado), nem da PNL (não é uma linguagem natural). No entanto, sem ver como essas ferramentas funcionam com seus dados, podemos apenas especular qual é o próximo passo e o que é necessário: D