Jak wyciągać elementy linii faktury i strukturowane tabele
Ekstrakcja elementów linii i tabel z faktur jest kluczem do pełnej automatyzacji płatnych rachunków, audytów i analizy wydatków. Aspose.OCR Faktura do tekstu dla .NET pozwala rozdzielić szczegółowe, wielokrotne, wiele kolumnowe dane – nawet z skanowanych lub fotografowanych dokumentów.
Problem świata rzeczywistego
Faktury zawierają tabele produktów/usług – ich ręcznie przepisywanie jest czasochłonne i błędne. pełna automatyzacja wymaga solidnej ekstrakcji elementowanych szczegółów.
Przegląd rozwiązania
Użyj OCR do rozpoznawania obszarów tabeli, pars każdego rzędu i kolumny i eksportować do strukturowanych formatów dla ERP, BI lub dalszej analizy.
Warunki
- Visual Studio 2019 lub później
- .NET 6.0 lub nowszy (lub .Net Framework 4.6.2+)
- Aspose.OCR dla .NET od NuGet
- Przykładowe obrazy faktury lub pliki PDF z elementami linii / tabelami
PM> Install-Package Aspose.OCR
Wdrażanie krok po kroku
Krok 1: Przygotuj obraz faktury / PDF
string invoiceFile = "invoice_with_items.pdf";
Krok 2: Rozpoznawanie obszarów tabeli / linii elementów
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;
Krok 3: Rozdzielenie rozpoznawanego tekstu w tabeli / kolumnach
- Użyj regex lub logiki dostosowanej, aby rozdzielić elementy linii przez rzędy / kolumny
// 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.
}
}
Krok 4: Eksportowanie elementów linii / tabeli do CSV
using (var writer = new StreamWriter("invoice_lineitems.csv"))
{
writer.WriteLine("SKU,Description,Qty,UnitPrice,Total");
// Loop and write line items parsed above
}
Krok 5: Pełny przykład
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));
}
}
}
Korzystanie z przypadków i aplikacji
Analityka i automatyzacja AP
Wyciąganie celowane wydatki na raportowanie, przewidywanie i zatwierdzenie.
Audyt faktury i przegląd
Audyt / zatwierdzenie linii strumieniowej z eksportowalnymi, czytelnymi szczegółami.
ERP/Integracja systemu finansowego
Bezpośrednio przesyłać strukturowane dane tabeli do oprogramowania finansowego lub ERP.
Wspólne wyzwania i rozwiązania
Wyzwanie 1: Zróżnicowane formaty stołu
Rozwiązanie: Tune regex i parsing logic dla każdego dostawcy/template.
Wyzwanie 2: Błędy rozpoznawania OCR w kolumnach
Rozwiązanie: Użyj heurystyki kolumny, żądaj skanowania wysokiej jakości lub flagi do przeglądu ręcznego.
Wyzwanie 3: Zaginione lub zagubione kolumny
**Rozwiązanie: ** Normalizuj, podziel lub natychmiastowy przegląd w niejasnych przypadkach.
uwzględnienie wydajności
- Podręcznik procesów wielokrotnych faktur równolegle
- Log/flag parsing problemów dla oceny ludzkiej
Najlepsze praktyki
- Buduj bibliotekę regex dla znanych szablonów
- Przegląd próbek wyjścia do tune parsing
- Bezpieczne oryginalne/przetworzone pliki do audytu
- Aktualizacja logiki ekstrakcji, jak zmieniają się dostawcy / szablony
Zaawansowane scenariusze
Scenariusz 1: Elementy linii mapowej do bazy danych bezpośrednio
Użyj połączeń ORM lub API, aby nacisnąć wyciągnięte dane tabeli.
Scenariusz 2: Porozmawiaj z wielokątnymi tabelami
Rozszerz logikę, aby przejść przez przerwy na stronie PDF/image.
konkluzja
Aspose.OCR Invoice to Text for .NET umożliwia wydobycie szczegółowych elementów i tabel linii faktury – umożliwiająca pełną automatyzację skanowania/fotografii do strukturowanych, wykonawczych danych.
Zobacz bardziej strukturowany kod ekstrakcji w Aspose.OCR dla .NET API Referencje .