如何自动发票数据提取和验证

如何自动发票数据提取和验证

在规模上自动发票数据提取有助于金融团队减少手动努力,加速可支付的账户,并尽量减少错误。

现实世界问题

数百或数千个账单的手动数据输入是缓慢的,昂贵的和错误的。

解决方案概述

包装处理账单文件夹,提取和验证结构化数据(如总,供应商,日期)和出口结果的ERP进口或审查 - 所有与高准确性。

原則

  • Visual Studio 2019 或以后
  • .NET 6.0 或更高版本(或 .Net Framework 4.6.2+)
  • Aspose.OCR 为 .NET 从 NuGet
  • 扫描或拍摄的发票图像文件夹(JPG、PNG、PDF)
PM> Install-Package Aspose.OCR

步骤实施

步骤1:准备一组账单

string[] invoiceFiles = Directory.GetFiles("./invoices", "*.pdf"); // or *.jpg, *.png

步骤2:设置发票识别和验证

using Aspose.OCR;
List<string> errors = new List<string>();
InvoiceRecognitionSettings settings = new InvoiceRecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();

步骤3:处理每个发票、提取和验证

using (var writer = new StreamWriter("invoice_results.csv"))
{
    writer.WriteLine("File,Vendor,Date,Total,Status,Error");
    foreach (var file in invoiceFiles)
    {
        try
        {
            OcrInput input = new OcrInput(InputType.SingleImage);
            input.Add(file);
            var results = ocr.RecognizeInvoice(input, settings);
            var text = results[0].RecognitionText;
            // Example: Extract fields with regex or parsing
            string vendor = ExtractField(text, "Vendor:");
            string date = ExtractField(text, "Date:");
            string total = ExtractField(text, "Total:");
            bool valid = ValidateInvoiceData(vendor, date, total);
            writer.WriteLine($"{file},{vendor},{date},{total},{(valid ? "Valid" : "Invalid")},");
        }
        catch (Exception ex)
        {
            writer.WriteLine($"{file},,,,Error,{ex.Message}");
        }
    }
}
// Helper methods to extract and validate fields (simplified)
string ExtractField(string text, string fieldName)
{
    // Implement regex or logic to extract field from text
    return ""; // Example stub
}
bool ValidateInvoiceData(string vendor, string date, string total)
{
    // Implement checks for expected formats, totals, required fields
    return !string.IsNullOrEmpty(vendor) && !string.IsNullOrEmpty(date) && !string.IsNullOrEmpty(total);
}

步骤4:出口/集成结果

  • 使用 CSV 进行审查、进口到 ERP/会计或进一步自动化

使用案例和应用程序

会计可支付自动化

处理和验证大量的供应商账单,以便及时支付。

ERP / 金融融资

将验证的发票数据输入到ERP或会计系统,以便简化运营。

审计与遵守

保持每个处理的发票包的详细记录和错误报告。

共同挑战与解决方案

挑战1:多种发票格式

** 解决方案:** Tune regex, field extraction, and OCR settings per supplier/template。

挑战2:扫描或图像中的错误

** 解决方案:** 使用预处理过滤器,要求更好的质量,旗帜进行审查。

挑战3:失去或不完整的领域

** 解决方案:** 确认和报告人体审查的失踪/残疾字段。

绩效考虑

  • 巴奇工作可以运行几个小时 - 时间表离职
  • 监测错误率,手动审查不良结果

最佳实践

  • 测试包工作在一个小样本首先
  • 定期审查和调节提取/验证逻辑
  • 记录所有错误和成功
  • 存储对审计的输入和输出数据

先进的场景

场景1:平行包装处理

使用 Parallel.ForEach 或 async 任务为非常大的发票集。

场景2:自动通知错误

发送电子邮件/警告,如果验证故障或错误出现。

结论

ASPOSE.OCR Invoice to Text for .NET 非常适合集合发票自动化,有助于金融团队规模、验证和准确整合账单数据。

寻找更先进的集成和分配提示在 ASPOSE.OCR 为 .NET API 参考 .

 中文