Como extrair itens de linha de fatura e tabelas estruturadas
A extração de itens de linha e tabelas das contas é a chave para a automação completa da conta pagável, auditorias e análises de gastos. Aspose.OCR Invoice to Text for .NET permite que você compartilhe dados detalhados, múltiplos, multi-colunas – mesmo de documentos escaneados ou fotografados.
Problemas do mundo real
As faturas contêm tabelas de produtos/serviços – a transcrição manual é de tempo e erro.A automação completa exige uma robusta extração de detalhes itemizados.
Solução Overview
Use OCR para reconhecer regiões de tabela, parse cada linha e coluna, e exportar para formatos estruturados para ERP, BI, ou análise adicional.
Pré-requisitos
- Visual Studio 2019 ou posterior
- .NET 6.0 ou posterior (ou .Net Framework 4.6.2+)
- Aspose.OCR para .NET de NuGet
- Imagens de fatura de amostra ou PDFs com itens de linha / tabelas
PM> Install-Package Aspose.OCR
Implementação passo a passo
Passo 1: Prepare a imagem de fatura/PDF
string invoiceFile = "invoice_with_items.pdf";
Passo 2: Reconheça as Regiões de Itens de Tabela/Linha
using Aspose.OCR;
InvoiceRecognitionSettings settings = new InvoiceRecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();
OcrInput input = new OcrInput(InputType.PDF);
input.Add(invoiceFile);
List<RecognitionResult> results = ocr.RecognizeInvoice(input, settings);
string fullText = results[0].RecognitionText;
Passo 3: Partilhe o texto reconhecido em colunas/colunas de mesa
- Use regex ou lógica personalizada para dividir itens de linha por delimitadores de ordem/coluna
// Example: Split into lines, then columns (simplified)
string[] lines = fullText.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
if (Regex.IsMatch(line, @"\d+\s+[A-Za-z].*\s+\d+[.,]\d{2}")) // crude line item match
{
string[] columns = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
// Map columns: SKU, description, qty, price, total, etc.
}
}
Passo 4: Exportar itens de linha / tabela para CSV
using (var writer = new StreamWriter("invoice_lineitems.csv"))
{
writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
// Loop and write line items parsed above
}
Passo 5: Exemplo completo
using Aspose.OCR;
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
string invoiceFile = "invoice_with_items.pdf";
InvoiceRecognitionSettings settings = new InvoiceRecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();
OcrInput input = new OcrInput(InputType.PDF);
input.Add(invoiceFile);
List<RecognitionResult> results = ocr.RecognizeInvoice(input, settings);
string fullText = results[0].RecognitionText;
var lineItems = new List<string[]>();
string[] lines = fullText.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
if (Regex.IsMatch(line, @"\d+\s+[A-Za-z].*\s+\d+[.,]\d{2}"))
lineItems.Add(line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
}
using (var writer = new StreamWriter("invoice_lineitems.csv"))
{
writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
foreach (var item in lineItems)
writer.WriteLine(string.Join(",", item));
}
}
}
Use Casos e Aplicações
Análise e AP Automation
Extrato itemizado gastos para relatório, previsão e aprovação.
Auditoria e revisão de contas
Auditoria/aprovação da linha de fluxo com detalhes exportáveis e de leitura por máquina.
ERP/Integração de Sistemas Financeiros
Carregar diretamente dados de tabela estruturados em software financeiro ou ERP.
Desafios comuns e soluções
Título 1: Formatos de mesa variados
** Solução:** Tune a lógica regex e parsing para cada fornecedor/template.
Desafios 2: Erros de reconhecimento do OCR em colunas
Solução: Use a heurística de coluna, solicite escaneamento de alta qualidade ou bandeira para revisão manual.
3o desafio: colunas perdidas ou desaparecidas
** Solução: ** Normalize, divida ou revisão rápida em casos ambíguos.
Considerações de desempenho
- Batch processando várias faturas em paralelo
- Log/flag parsing questões para avaliação humana
Melhores Práticas
- Construa uma biblioteca regex para modelos conhecidos
- Revisão de saídas de amostra para tune parsing
- Arquivos originais/processados seguros para auditoria
- Atualização da lógica de extracção como os fornecedores/templates mudam
Os cenários avançados
Scenário 1: Map Line Items to ERP/Database Diretamente
Use chamadas ORM ou API para empurrar dados de tabela extraídos.
Scenário 2: Manejar tabelas multi-páginas
Estende a lógica para parse através das pausas da página PDF/Imaça.
Conclusão
Aspose.OCR Invoice to Text for .NET permite extrair itens e tabelas de linha de fatura detalhados – permitindo a automação completa de scan/foto para dados estruturados e executáveis.
Veja o código de extração mais estruturado no Aspose.OCR para .NET API Referência .