請求書ラインアイテムと構造テーブルを抽出する方法
請求書ラインアイテムと構造テーブルを抽出する方法
請求書からラインアイテムやテーブルを抽出することは、支払い可能なアカウント、監査、および費用分析の完全な自動化のための鍵です。
現実世界問題
請求書には製品/サービスのテーブルが含まれています - これらを手動で翻訳することは時間とエラーに耐えられます。
ソリューション概要
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 リファレンス .