Как да извлечем фактури и структурирани таблици

Как да извлечем фактури и структурирани таблици

Извличането на линейни елементи и таблици от фактури е ключът към пълната автоматизация на платените сметки, одити и разходи анализи. Aspose.OCR Invoice to Text for .NET ви позволява да разпределяте подробни, мулти-роу, много колони данни – дори от скенираните или фотографирани документи.

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

Сметките съдържат таблици на продукти/услуги – ръчно транскрипцията им е времетрайна и грешка.Полна автоматизация изисква солидно извличане на детайли.

Преглед на решението

Използвайте OCR, за да разпознаете регионите на таблицата, да разделите всеки ред и колона и да експортирате в структурирани формати за ERP, BI или по-нататъшен анализ.

Предупреждения

  • Visual Studio 2019 или по-късно
  • .NET 6.0 или по-късно (или .Net Framework 4.6.2+)
  • ASPOSE.OCR за .NET от NuGet
  • Пример за фактуриране изображения или PDF с линии елементи / таблици
PM> Install-Package Aspose.OCR

Стъпка по стъпка изпълнение

Стъпка 1: Подгответе снимка на фактурата / PDF

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: Експортиране на елементи / таблица към CSV

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

Използване на случаи и приложения

Анализ и AP автоматизация

Екстракт етикетирани разходи за докладване, прогнозиране и одобрение.

Счетоводен одит и преглед

Проверка / одобрение с износими, машинно-читаеми данни.

Интеграция на ERP/Финансови системи

Директно изтегляне на структурирани таблични данни в финансов или ERP софтуер.

Съвместни предизвикателства и решения

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

Решение: Направете регекс и парсинг логика за всеки доставчик / шаблон.

Предизвикателство 2: Грешки в признаването на OCR в колони

Решението: Използвайте колони, изисквайте скениране с по-високо качество или флаг за ръчен преглед.

Предизвикателство 3: Изчезнали или пропуснати колони

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

Преглед на изпълнението

  • Батч обработва няколко фактури паралелно
  • Log/Flag Parsing проблеми за човешки преглед

Най-добрите практики

  • Изграждане на регекс библиотека за известни шаблони
  • Проучване на изходите от проба за тунелен парсинг
  • Безопасни оригинални / обработени файлове за одит
  • Актуализиране на логиката на екстракцията като промяна на доставчиците / шаблоните

Разширени сценарии

Сценарий 1: Елементи от карта към ERP / база данни директно

Използвайте ORM или API повиквания, за да натиснете извлечените таблични данни.

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

Разширяване на логиката, за да преминат през фракциите на страницата на PDF/image.

заключение

Aspose.OCR Invoice to Text for .NET позволява извличане на подробни елементи и таблици от линията на фактурата – което дава възможност за пълна автоматизация от сканиране/фото до структурирани, действащи данни.

Вижте по-структуриран код за екстракция в Aspose.OCR за .NET API Референт .

 Български