Com extreure els articles de línia de factura i taules estructurades

Com extreure els articles de línia de factura i taules estructurades

L’extracció d’articles de línia i taules de les factures és clau per a la completa automatització de comptes pagables, audits i anàlisis de despeses. Aspose.OCR Invoice to Text per .NET li permet parsejar dades detallades, multi-rous, múltiples columnes - fins i tot de documents escanats o fotografiats.

El problema del món real

Les factures contenen taules de productes / serveis - la transcripció manual d’aquests és de temps i per error. l’automatització completa requereix una robusta extracció de detalls esmentats.

Revisió de solucions

Utilitzeu OCR per reconèixer regions de taula, parseu cada ronda i columna, i exportar a formats estructurats per a ERP, BI, o anàlisi addicional.

Prerequisits

  • Visual Studio 2019 o posterior
  • .NET 6.0 o posterior (o .Net Framework 4.6.2+)
  • Aspose.OCR per a .NET des de NuGet
  • Mostra imatges de factura o PDFs amb elements de línia / taules
PM> Install-Package Aspose.OCR

Implementació de pas a pas

Pas 1: Prepareu la imatge de factura/PDF

string invoiceFile = "invoice_with_items.pdf";

Pas 2: Reconèixer les regions de taula / línia d’articles

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;

Pas 3: Parseu el text reconegut en runes de taula/columnes

  • Utilitza la lògica regex o personalitzada per separar els elements de línia per delimitors de ronda/columna
// 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.
    }
}

Pas 4: Línia d’exportació dels elements / taula a CSV

using (var writer = new StreamWriter("invoice_lineitems.csv"))
{
    writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
    // Loop and write line items parsed above
}

Pas 5: Exemple complet

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));
        }
    }
}

Utilitzar casos i aplicacions

Gestió d’anàlisi i automatització AP

L’extracte es destina a les despeses per a la informació, la previsió i l’aprovació.

Auditoria i revisió de la factura

Audit / aprovació de la línia de flux amb detalls exportables i llegibles per màquina.

Integració del sistema ERP/Financial

Carregar directament les dades de taula estructurades en el programari financer o ERP.

Els reptes i les solucions comunes

Títol 1: Diversos formats de taula

Solució: Tuneu la lògica de regx i pars per a cada proveïdor/templat.

Challenge 2: Errors de reconeixement OCR en columnes

Solució: Utilitzeu les heurístiques de columnes, sol·liciteu escans d’alta qualitat, o bandera per a la revisió manual.

Títol 3: Columnes perdudes o desaparegudes

** Solució: ** Normalitzar, dividir o revisar ràpidament en els casos ambigüos.

Consideracions de rendiment

  • Batch processar múltiples factures en paral·lel
  • Log/flag parsing problemes per a la revisió humana

Les millors pràctiques

  • Construcció de la biblioteca de regx per a temples coneguts
  • Revisió de les sortides de mostra per a tune parsing
  • Arxius originals i processats segurs per a auditoria
  • Actualitza la lògica d’extracció com els proveïdors/templates canvien

Escenaris avançats

Escenari 1: Map Line Items a ERP / Base de dades directament

Utilitzeu les trucades ORM o API per empènyer les dades de taula extraïdes.

Escenari 2: Gestió de taules multipàgines

Extensió de la lògica a parse a través de les pauses de pàgina PDF/imatge.

Conclusió

Aspose.OCR Invoice to Text for .NET permet extreure detallats elements i taules de la línia de factura - permetent la completa automatització de l’escaneig/foto a dades estructurades i executables.

Veure el codi d’extracció més estructurat a la Aspose.OCR per a .NET API Referència .

 Català