Come estrarre gli articoli della linea di fattura e le tabelle strutturate

Come estrarre gli articoli della linea di fattura e le tabelle strutturate

L’estrazione di articoli e tabelle di linea dalle bollette è la chiave per l’automazione completa dei conti pagabili, gli audit e le analisi delle spese. Aspose.OCR Invoice to Text per .NET consente di parsire dettagliati, multi-ro, dati multi colonne - anche da documenti scansionati o fotografati.

Il problema del mondo reale

Le bollette contengono tabelle di prodotti/servizi – la trascrizione manuale di questi è tempo-consumo e errore-prote.

Soluzione Overview

Utilizzare OCR per riconoscere le regioni di tabella, parsi ogni riga e colonna, ed esportare a formati strutturati per ERP, BI, o ulteriori analisi.

Prerequisiti

  • Visual Studio 2019 o successivo
  • .NET 6.0 o successivo (o .Net Framework 4.6.2+)
  • Aspose.OCR per .NET da NuGet
  • Immagini di fattura di campione o PDF con elementi di linea / tabelle
PM> Install-Package Aspose.OCR

Implementazione passo dopo passo

Passo 1: Preparazione Immagine di fatturazione/PDF

string invoiceFile = "invoice_with_items.pdf";

Passo 2: Riconoscere le regioni di tabella / linea

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: Parsa il testo riconosciuto in rami/colonne da tavolo

  • Utilizzare regex o logica personalizzata per separare gli articoli di linea con delimitatori di riga/colonna
// 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: Elementi di linea di esportazione/Tabella a 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: Un esempio 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));
        }
    }
}

Utilizzare casi e applicazioni

Spend Analytics e AP Automation

L’estratto è destinato alle spese per la segnalazione, la previsione e l’approvazione.

Audit e revisione della fattura

Audit/approvazione di linea con dettagli esportabili e leggibili dalla macchina.

Integrazione del sistema ERP/Finanza

Caricare direttamente i dati di tabella strutturati in software finanziario o ERP.

Sfide e soluzioni comuni

Challenge 1: vari formati di tavolo

Soluzione: Tune reggex e parsing logica per ciascun fornitore/template.

Challenge 2: errori di riconoscimento OCR nelle colonne

Soluzione: Utilizzare l’euristica della colonna, richiedere scansioni di alta qualità o bandiera per la revisione manuale.

Challenge 3: Colonne scomparse o perdute

**Soluzione: ** Normalizzare, dividere o ripetere la revisione in casi ambigui.

Considerazioni di prestazioni

  • Batch processa più fatturazioni in parallelo
  • Log/flag parsing questioni per la revisione umana

Migliori pratiche

  • Costruisci una biblioteca regex per i modelli conosciuti
  • Recensione delle uscite di campione per tune parsing
  • File originali/processate sicure per l’audit
  • Aggiornare la logica di estrazione come cambiano fornitori/template

Scenari avanzati

Scenario 1: Map Line Items to ERP/Database Directly

Utilizzare chiamate ORM o API per premere i dati di tabella estratti.

Scenario 2: Gestire tabelle multi-pagine

Estendere la logica a parsi attraverso le interruzioni di pagina PDF/immagine.

conclusione

Aspose.OCR Invoice to Text per .NET consente di estrarre dettagliati articoli e tabelle della linea di fatturazione – consentendo l’automazione completa dalla scansione/foto ai dati strutturati e attivabili.

Vedi il codice di estrazione più strutturato nel Aspose.OCR per .NET API Reference .

 Italiano