Как извлечь линию счета и структурированные таблицы

Как извлечь линию счета и структурированные таблицы

Извлечение линейных элементов и таблиц из счетов является ключом к полной автоматизации оплачиваемой счета, аудита и расходной аналитики. 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

Step-by-Step реализация

Шаг 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 Automation

Экстракт объектизированные расходы на отчёт, прогнозирование и одобрение.

Счетный аудит и обзор

Аудит / одобрение потока с экспортируемыми, машиночитаемым деталями.

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

Прямо загружать структурированные табличные данные в финансовое или ERP программное обеспечение.

Общие вызовы и решения

Проблема 1: Разнообразие таблиц

Решение: Используйте логику регекса и парсинга для каждого поставщика / шаблона.

Проблема 2: ОКР признание ошибок в колоннах

Решение: Используйте хюристику колонны, попросите сканирование более высокого качества или флаг для ручного обзора.

Проблема 3: Затерянные или пропавшие колонны

**Решение: ** Нормализовать, разделить или немедленно рассмотреть двусмысленные случаи.

Рассмотрим производительность

  • Батч обрабатывает многочисленные счета параллельно
  • Запись/флаг-парсинг проблемы для человеческого обзора

Лучшие практики

  • Создание регекс-библиотеки для известных шаблонов
  • Отзывы о выходах образца для тунне парсинг
  • Безопасные оригинальные/обработанные файлы для аудита
  • Обновление логики экстракции, как меняются поставщики / шаблоны

Развитые сценарии

Сценарий 1: Картовая линия элементов в ERP / базу данных прямо

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

Сценарий 2: Управляйте множественными таблицами

Расширяйте логику, чтобы пересекать перерывы на странице PDF/изображения.

Заключение

ASPOSE.OCR Invoice to Text for .NET позволяет извлечь подробные элементы и таблицы линии счета — позволяя полной автоматизации от сканирования/фото до структурированных, действующих данных.

Посмотреть более структурированный экстракционный код в ASPOSE.OCR для .NET API .

 Русский