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