Jak wyciągać elementy linii faktury i strukturowane tabele

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 .

 Polski