如何提取账单线项目和结构表

如何提取账单线项目和结构表

从账单中提取线条项目和表是完全自动化可支付的账户、审计和支出分析的关键。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:将认可的文本分成桌面环/列

  • 使用 regex 或自定义逻辑,以按序列/列分数分离线元件。
// 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:错过或失去的列

** 解決方案:** 標準化、分裂或即時審查雙重情況。

绩效考虑

  • Batch 同时处理多个发票
  • 标志/旗帜投标问题为人类评论

最佳实践

  • 创建已知模板的雷格斯图书馆
  • 评论 样品输出 到 Tune Parsing
  • 安全的原始/处理文件进行审计
  • 更新提取逻辑作为供应商/模板变更

先进的场景

场景1:地图线项目直接到ERP/数据库

使用 ORM 或 API 通话来压缩提取的表数据。

场景2:处理多页表

将逻辑扩展到通过PDF/图像页面中断。

结论

Aspose.OCR Invoice to Text for .NET 允许提取详细的发票线项目和表格,从而从扫描/照片到结构化、可操作的数据进行完整的自动化。

查看更多结构化提取代码在 ASPOSE.OCR 为 .NET API 参考 .

 中文