Cum să extrageți elementele de linie de factură și tabelele structurate

Cum să extrageți elementele de linie de factură și tabelele structurate

Extractarea elementelor și tabelelor de linie din facturile este cheia pentru automatizarea completă a conturilor plătite, a auditurilor și a analizelor de cheltuieli. Aspose.OCR Invoice to Text for .NET vă permite să parsați date detaliate, multi-ro, multiple coloane – chiar și din documente scanate sau fotografiate.

Problema lumii reale

Facturile conțin tabele de produse/servicii – transcrierea manuală a acestora este timp-consumatoare și lipsită de eroare.

Soluție de ansamblu

Utilizați OCR pentru a recunoaște regiunile de tabel, parsați fiecare rând și coloană și exportați în formate structurate pentru ERP, BI sau analiza ulterioară.

Prevederile

  • Visual Studio 2019 sau mai târziu
  • .NET 6.0 sau mai târziu (sau .Net Framework 4.6.2+)
  • Aspose.OCR pentru .NET de la NuGet
  • Imagini de factură de eșantion sau PDF-uri cu elemente de linie / tabele
PM> Install-Package Aspose.OCR

Implementarea pas cu pas

Pasul 1: Pregătiți Imaginea de factură / PDF

string invoiceFile = "invoice_with_items.pdf";

Pasul 2: Recunoașteți regiunile tabelului / elementelor de linie

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;

Pasul 3: Parsați textul recunoscut în coloane de masă

  • Utilizați regex sau logica personalizată pentru a împărți elementele de linie prin delimitatori de rând / coloană
// 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.
    }
}

Pasul 4: Exportarea elementelor de linie / tabel la CSV

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

Pasul 5: Exemplu 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));
        }
    }
}

Folosește cazuri și aplicații

Analiza cheltuielilor și automatizarea AP

Extract de cheltuieli pentru raportare, previziune și aprobare.

Auditul și revizuirea facturilor

Audit / aprobare cu detalii exportabile, citite de mașină.

Integrarea sistemului ERP/finanțelor

Încărcați direct datele tabloului structurat în software-ul financiar sau ERP.

Provocări și soluții comune

Provocare 1: Formate de masă variate

Soluție: Tunează logica de regex și parsing pentru fiecare furnizor / templat.

Challenge 2: Erorile de recunoaștere a OCR în coloane

Soluție: Utilizați heuristică coloană, solicitați scanări de înaltă calitate sau steag pentru revizuirea manuală.

Sfârșitul 3: Columne pierdute sau dispărute

Soluție: Normalizează, dividează sau revizuiește rapid cazurile ambiguă.

Considerații de performanță

  • Batch procesează facturile multiple în paralel
  • Log/flag parsing probleme pentru revizuirea umană

Cele mai bune practici

  • Construiește o bibliotecă reggex pentru șabloane cunoscute
  • Revizuirea rezultatelor de eșantion pentru tune parsing
  • Fișierele originale/procesate securizate pentru audit
  • Actualizează logica extracției ca schimbare a furnizorilor / templatelor

Scenarii avansate

Scenariul 1: Elementele de linie de hartă către ERP / bază de date direct

Utilizați apelurile ORM sau API pentru a împinge datele de tabel extractate.

Scenariul 2: Gestionarea tabelelor multi-pagini

Extindeți logica la parse prin pauzele de pagină PDF/imaginea.

concluziile

Aspose.OCR Invoice to Text for .NET face posibilă extragerea detaliate a elementelor și tabelelor din linia de factură – permițând automatizarea completă de la scan/foto la date structurate, executabile.

Vezi mai multe coduri de extracție structurate în Aspose.OCR pentru .NET API Referință .

 Română