Hoe factuurlijn items en gestructureerde tabellen te extraheren

Hoe factuurlijn items en gestructureerde tabellen te extraheren

Het extraheren van lijn items en tabellen uit facturen is de sleutel voor de volledige automatisering van betaalbare accounts, audits en uitgevende analyses. Aspose.OCR Invoice to Text for .NET stelt u in staat om gedetailleerde, multi-row, multicolumn gegevens te parsen – zelfs van gescannuleerde of gefotografeerde documenten.

Real-wereld probleem

De facturen bevatten tabellen van producten/diensten – het handmatig transcrieren van deze is tijd- en fout-vrij. Volledige automatisering vereist een robuste extractie van geïdentificeerde details.

Overzicht oplossingen

Gebruik OCR om tabelregio’s te herkennen, elke rij en kolom te parsen en naar gestructureerde formaten te exporteren voor ERP, BI of verdere analyse.

Voorwaarden

  • Visual Studio 2019 of later
  • .NET 6.0 of hoger (of .Net Framework 4.6.2+)
  • Aspose.OCR voor .NET van NuGet
  • Voorbeeld factuurbeelden of PDF’s met lijn items/tables
PM> Install-Package Aspose.OCR

Stap voor stap implementatie

Stap 1: Bereid de factuur afbeelding/PDF

string invoiceFile = "invoice_with_items.pdf";

Stap 2: Herken tabel/lijn itemregio’s

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;

Stap 3: Verwijder geïdentificeerde tekst in tabellen/kolommen

  • Gebruik regex of aangepaste logica om lijn items uit te splitsen door ronde/column delimiters
// 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.
    }
}

Stap 4: Exportlijn items / tabel naar CSV

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

Stap 5: Complete voorbeeld

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

Gebruik Cases en Applicaties

Gebruik Analytics en AP Automation

Extract itemized uitgaven voor rapportage, voorspelling en goedkeuring.

Factuurbeoordeling en evaluatie

Streamline audit / goedkeuring met exportable, machine-readable details.

Integratie van het ERP/financiële systeem

Direct laden gestructureerde tabelgegevens in financiële of ERP-software.

Gemeenschappelijke uitdagingen en oplossingen

Challenge 1: Variëteerde tabelformaten

Solutie: Tune regex en parsing logica voor elke leverancier/template.

Challenge 2: OCR-recognition fouten in kolommen

Oplossing: Gebruik kolomheuristiek, vraagt om hogere kwaliteit scans of vlag voor handmatige beoordeling.

Challenge 3: verloren of verdwenen kolommen

Solutie: Normaliseren, splitsen of snel beoordelen op ambiguïte gevallen.

Performance overwegingen

  • Batch verwerkt meerdere facturen in parallel
  • Log/vlagparsing problemen voor menselijke beoordeling

Beste praktijken

  • Build regex bibliotheek voor bekende templates
  • Review sample output naar tune parsing
  • Veilige originele/verwerkte bestanden voor audit
  • Update extractie logica als leveranciers / templates veranderen

Geavanceerde scenario’s

Scenario 1: Kaartlijn items naar ERP/database Direct

Gebruik ORM of API-oproepen om geïntroduceerde tabelgegevens te drukken.

Scenario 2: Handelen met meerdere tabellen

Uitbreid de logica naar parse over PDF/image pagina breuken.

Conclusie

Aspose.OCR Invoeren naar tekst voor .NET maakt het mogelijk om gedetailleerde factuurlijn items en tabellen te extraheren – waardoor volledige automatisering van scan/foto tot gestructureerde, handhaafbare gegevens mogelijk is.

Zie meer gestructureerde extractcode in de Aspose.OCR voor .NET API Referentie .

 Nederlands