Kaip ištraukti sąskaitos linijos elementus ir struktūrines lenteles

Kaip ištraukti sąskaitos linijos elementus ir struktūrines lenteles

Linijos elementų ir lentelių ištraukimas iš sąskaitų yra raktas visiškai automatizuoti mokamų sąrašų, auditus ir išlaidų analitiką. Aspose.OCR Sąskaita į tekstą .NET leidžia jums atskleisti išsamius, daugiapakopinius, daugiakolumbinius duomenis – net iš skanintų ar fotografuotų dokumentų.

Realaus pasaulio problemos

Sąskaitose yra produktų / paslaugų lentelių - rankiniu būdu jų perrašymas yra laiko ir klaidų priežastis.

Sprendimo apžvalga

Naudokite OCR, kad atpažintumėte lentelės regionus, suskirstykite kiekvieną eilutę ir stulpelį ir eksportuokite į struktūrizuotus formatus ERP, BI ar tolesnio analizės tikslais.

Prerequisites

  • „Visual Studio 2019“ arba vėliau
  • .NET 6.0 arba naujesnė (arba .Net Framework 4.6.2+)
  • ASPOSE.OCR už .NET iš NuGet
  • Pavyzdžiui, sąskaitos nuotraukos arba PDF su eilutėmis / lentelėmis
PM> Install-Package Aspose.OCR

Žingsnis po žingsnio įgyvendinimas

1 žingsnis: paruoškite sąskaitos nuotrauką / PDF

string invoiceFile = "invoice_with_items.pdf";

2 žingsnis: atpažinti lentelės / linijos elementų regionus

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;

3 žingsnis: Pažymėkite pripažintą tekstą į lentelių ratus / stulpelius

  • Naudokite regex arba pritaikytą logiką, kad atskirtumėte eilutės elementus pagal eilės / stulpelio apribojimus
// 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.
    }
}

4 žingsnis: eksporto linijos elementai / lentelė į CSV

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

5 žingsnis: pilnas pavyzdys

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

Naudokite atvejus ir paraiškas

Apžvalga ir AP automatizavimas

Ekstraktas išdėstytas sąnaudas ataskaitoms, prognozavimui ir patvirtinimui.

Sąskaitos auditas ir peržiūra

Streamline auditas / patvirtinimas su eksportuojamais, mašinų skaitymo duomenimis.

ERP / finansų sistemos integracija

Tiesiogiai įkrauti struktūrizuotus lentelės duomenis į finansinę arba ERP programinę įrangą.

Bendrieji iššūkiai ir sprendimai

Iššūkis 1: Įvairios lentelės formatos

Išsprendimas: Kiekvienam tiekėjui / šablonui pateikiama regex ir parsing logika.

2 iššūkis: OCR atpažinimo klaidos kolonose

Išsprendimas: Naudokite stulpelio heuristiką, prašome aukštos kokybės skenavimo arba vėliavos rankiniu būdu peržiūrėti.

3 iššūkis: dingusios ar prarastos kolonos

Išsprendimas: Normalizuoti, suskirstyti arba skubiai peržiūrėti abejingus atvejus.

Veiksmingumo apžvalgos

  • Batch procesas kelis sąskaitas lygiagrečiai
  • Log/flag parsing klausimai žmogaus apžvalga

Geriausios praktikos

  • Sukurkite regex biblioteką žinomų šablonų
  • Apžvalga mėginių išeitis tune parsing
  • Saugūs originalūs / tvarkomi failai auditui
  • Atnaujinkite ekstrakcijos logiką, kai keičiasi tiekėjai / šablonai

Išplėstiniai scenarijai

1 scenarijus: žemėlapio linijos elementai į ERP / duomenų bazę tiesiogiai

Naudokite ORM arba API skambučius, kad paspaustumėte išvestus lentelės duomenis.

2 scenarijus: tvarkykite daugialypę lentelę

Išplėskite logiką per PDF / vaizdo puslapio lūkesčius.

Conclusion

Aspose.OCR Invoice to Text for .NET leidžia išgauti išsamius sąskaitos eilutės elementus ir lenteles, leidžiančias visiškai automatizuoti nuo skenavimo / nuotraukos iki struktūrizuotų, veiksmingų duomenų.

Žiūrėti daugiau struktūrizuotą ekstrakcijos kodą ASPOSE.OCR už .NET API nuorodą .

 Lietuvių