Як витягти облікові лінії і структуровані таблиці

Як витягти облікові лінії і структуровані таблиці

Витяг лінійних елементів і таблиць з рахунків є ключовим для повної автоматизації оплачуваних облікових записів, аудитів і витрат аналітиків. 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/Financial System

Негайно завантажувати структуровані табличні дані в фінансовий або 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 Референт .

 Українська