Како извући ставке линије рачуна и структуриране табеле

Како извући ставке линије рачуна и структуриране табеле

Екстракција линијских предмета и табела из рачуна је кључ за потпуну аутоматизацију налога плаћања, ревизије и анализе трошења.Аппосе.ОЦР Извод на текст за .НЕТ вам омогућава да поделите детаљне, мулти-роу, више колона података – чак и из скенираних или фотографисаних докумената.

Реал светски проблем

Рачуни садрже табеле производа/услуга – ручно их транскриптирање је времетрајно и погрешно.

Преглед решења

Користите ОЦР да бисте препознали површине табеле, парасирали сваку реду и колону и извозили у структуриране формати за ЕРП, БИ или даље анализе.

Принципи

  • Visual Studio 2019 или касније
  • .NET 6.0 или новији (или .Net Framework 4.6.2+)
  • Aspose.OCR za .NET od NuGet
  • Примерне слике или ПДФ-а са линијама / табелама
PM> Install-Package Aspose.OCR

Корак по корак спровођење

Корак 1: Припремите слику рачуна / ПДФ

string invoiceFile = "invoice_with_items.pdf";

Корак 2: Препознавање табела / лине елемената региона

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: Поделите препознатљив текст у табелне кругове / колоне

  • Користите регекс или прилагођену логику да бисте раздвојили линије по редовима / колонама
// 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: Експорт линије / табела у ЦСВ

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

Корак 5: Потпуни пример

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

Коришћење случајева и апликација

Анализа и АП аутоматизација

Екстракт објектирани трошкови за извештавање, предвиђање и одобрење.

Ревизија и ревизија рачуна

Аудит / одобрење струје са извозним, машински читавим детаљима.

Интеграција ЕРП / Финансијског система

Директно преузимање структурираних табела података у финансијску или ЕРП софтвер.

Заједнички изазови и решења

Проблем 1: Разноврсни формати стола

Решење: Тун регекс и парсинг логике за сваког добављача / шаблона.

Проблем 2: ОКР препознавање грешака у колонама

Решење: Користите хеуристику колоне, затражите скенирање високог квалитета или знаме за ручну ревизију.

Izazov 3: Izgubljeni ili izgubljeni stolpci

Решење: Нормализује, раздваја или брзо прегледа у недвосмисленим случајевима.

Размишљање о перформанси

  • Батцх процесира више рачуна паралелно
  • Log/flag parsing pitanja za ljudsku recenziju

Најбоља пракса

  • Изградња регекс библиотеке за познате шаблоне
  • Преглед излаза узорка за туне парсинг
  • Безбедни оригинални / обрађени датотеке за ревизију
  • Ажурирајте логику екстракције као промена добављача / шаблона

Напредни сценарио

Сценарио 1: Мапа линије Елементи на ЕРП / Базе података Директно

Користите ОРМ или АПИ позиве да притиснете извучене табелне податке.

Сценарио 2: Управљање мулти-страница табела

Проширите логику да прође кроз ПДФ / слике странице прекида.

Закључак

Aspose.OCR Invoice to Text for .NET омогућава извлачење детаљних елемената и табела линије фактурисања - омогућивајући потпуну аутоматизацију од скенирања / фотографије до структурираних, могућих података.

Види више структурираног екстракционог кода у Aspose.OCR за .NET API референце .

 Српски