請求書ラインアイテムと構造テーブルを抽出する方法

請求書ラインアイテムと構造テーブルを抽出する方法

請求書からラインアイテムやテーブルを抽出することは、支払い可能なアカウント、監査、および費用分析の完全な自動化のための鍵です。

現実世界問題

請求書には製品/サービスのテーブルが含まれています - これらを手動で翻訳することは時間とエラーに耐えられます。

ソリューション概要

OCR を使用して、テーブル地域を認識し、それぞれの行と列をパルシュ、および ERP、BI、またはさらなる分析のための構造化されたフォーマットに輸出します。

原則

  • Visual Studio 2019 以降
  • .NET 6.0 またはそれ以降(または .Net Framework 4.6.2+)
  • ASPOSE.OCR for .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:コラムのOKR認証エラー

ソリューション: コラムヘウリスティックを使用し、高品質のスキャンを要求するか、手動レビューのためのフラッグを使用します。

チャレンジ3:失われたコラム

ソリューション: 曖昧なケースで正常化、分割、または即時レビュー。

パフォーマンス考慮

  • パラレルで複数の請求書を処理するバッチ
  • ログ/フラッグパルシング問題 人間レビュー

ベストプラクティス

  • 知られているテンプレートのためのレゲックス図書館を構築する
  • 検査 サンプル出力 Tune Parsing
  • 監査のための安全なオリジナル/処理ファイル
  • サプライヤー/テンプレートの変更として抽出論理を更新

高度なシナリオ

シナリオ1:地図線のアイテムをERP/データベースに直接

ORMまたはAPI通話を使用して、抽出されたテーブルデータを押します。

シナリオ2:マルチページテーブルの処理

論理を拡張して、PDF/イメージページのブレイクを通過します。

結論

Aspose.OCR Invoice to Text for .NET は、スキャン/写真から構造化され、実行可能なデータに完全な自動化を可能にする詳細な請求書ラインの項目とテーブルを抽出することができます。

より構造化された抽出コードを見る ASPOSE.OCR for .NET API リファレンス .

 日本語