Como extrair itens de linha de fatura e tabelas estruturadas

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 .

 Português