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ță .