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