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