このページでは AP 照合 (買掛金照合)を業務シナリオとして、ワークスペース作成、カテゴリ設定、ファイルアップロード、抽出結果取得、スマートレビューまでの一連の流れを API で実行する方法を説明します。
DocFlow を初めて利用する場合は、このページを読む前に Web ページ で基本機能を確認することをおすすめします。
01 シナリオ概要
AP(買掛金)照合業務では、支払前に一連の購買書類をクロスチェックする必要があります。典型的な書類構成は次のとおりです。
請求書(含電子インボイス、紙の増値税専用インボイス/普通インボイスなど):記録します販売者/購入者情報、発行金額和税率
発注書(PDF/Word):取り決めますサプライヤー情報、契約書金額、税率和プロダクト明细
入荷伝票(PDF):記録します実際受領数量、品目情報及関連的発注書号
DocFlow では、分類とフィールドを一度設定するだけで、その後アップロードされる書類の分類認識 と構造化情報抽出 を自動化できます。レビュー規則リポジトリを設定すると、複数文書をまたいだスマートレビュー により、サプライヤー一致しません、金額超過、数量異常などを自動検出できます。
02 業務フロー
ワークスペース、ファイルカテゴリ、レビュー規則リポジトリは一度だけ設定すれば継続利用できます 。以降は新しい処理対象ファイルをアップロードし、新しいレビュータスクを作成するだけです。このサンプルでは全体の流れを示すため、設定手順と処理手順を同じコード内で実行します。
03 前提条件
TextIn コンソール にログインし、x-ti-app-id と x-ti-secret-code を取得します
サンプルファイル 、または自社の書類ファイルを使用します
04 カテゴリとフィールド設定
この例では 4 つのファイルカテゴリを設定します。いずれも category/create API で作成し、フィールドを設定します。
国内票-電子インボイス(サンプル:sample_invoice.pdf)
電子インボイス、含む請求書番号、発行日付、購入者/販売者名称及税番号、税込合計など基本情報フィールド、以及商品明细テーブルフィールド: フィールド名 タイプ 請求書番号 基本情報フィールド 発行日付 基本情報フィールド 税込合計 基本情報フィールド 税抜金額 基本情報フィールド 税額 基本情報フィールド 販売者名称 基本情報フィールド 販売者納税者識別番号 基本情報フィールド 購入者名称 基本情報フィールド 購入者納税者識別番号 基本情報フィールド 請求書備考 基本情報フィールド 商品名称 テーブルフィールド 規格型番 テーブルフィールド 単位 テーブルフィールド 数量 テーブルフィールド 単価 テーブルフィールド 金額 テーブルフィールド 税率 テーブルフィールド 税額 テーブルフィールド
購買契約書(サンプル:sample_contract.pdf)
購買契約書是取り決めます取引条項的核心ファイル、含む契約書番号、甲乙情報、金額、税率和プロダクト明细。フィールド設定同时使用基本情報フィールド 和テーブルフィールド : フィールド名 タイプ 番号 基本情報フィールド 甲 基本情報フィールド 乙 基本情報フィールド 締結日 基本情報フィールド 契約期間 基本情報フィールド 支払条項 基本情報フィールド 乙銀行口座情報 基本情報フィールド 発行情報 基本情報フィールド 違約金条項 基本情報フィールド 購買品目/サービス数量 基本情報フィールド 契約書タイプ 基本情報フィールド 購買金額 基本情報フィールド 購買単価 基本情報フィールド 税率 基本情報フィールド 乙税番号 基本情報フィールド 購買品目/サービス 基本情報フィールド プロダクト型番 テーブルフィールド プロダクト説明 テーブルフィールド 単価 テーブルフィールド 数量 テーブルフィールド 金額 テーブルフィールド
入荷伝票(サンプル:sample_inbound.pdf)
入荷伝票是倉庫受領的凭证、記録します实收数量、品目情報和サプライヤー情報。フィールド設定同时使用基本情報フィールド 和テーブルフィールド : フィールド名 タイプ 入荷伝票番号 基本情報フィールド 受領日付 基本情報フィールド 对应契約書号 基本情報フィールド サプライヤー名称 基本情報フィールド 倉庫/库位 基本情報フィールド 物流单号 基本情報フィールド 入荷合計金額 基本情報フィールド 受領結論 基本情報フィールド 備考 基本情報フィールド 倉庫受領人 基本情報フィールド 倉庫受領人日付 基本情報フィールド 质检確認 基本情報フィールド 质检確認日付 基本情報フィールド サプライヤー送货人 基本情報フィールド サプライヤー送货人日付 基本情報フィールド サプライヤー税番号 基本情報フィールド 受領入荷明细-品目编码 テーブルフィールド 受領入荷明细-品目描述 テーブルフィールド 受領入荷明细-単位 テーブルフィールド 受領入荷明细-应收 テーブルフィールド 受領入荷明细-实收 テーブルフィールド 受領入荷明细-差异 テーブルフィールド 受領入荷明细-质检 テーブルフィールド 受領入荷明细-签收人 テーブルフィールド
検収書(サンプル:sample_acceptance.pdf)
検収書是確認货物/サービス交付品質的凭证、仅含む基本情報フィールド: フィールド名 タイプ プロジェクト名 基本情報フィールド 契約書番号 基本情報フィールド 甲単位名称 基本情報フィールド 乙単位名称 基本情報フィールド 甲検収人 基本情報フィールド 乙施工人 基本情報フィールド 納品内容 基本情報フィールド 検収説明 基本情報フィールド 検収結論 基本情報フィールド 検収数量 基本情報フィールド 検収日付 基本情報フィールド 乙税番号 基本情報フィールド
05 レビュー規則設定
この例のレビュー規則リポジトリには 2 つの規則グループ、12 のレビュー規則 が含まれます。複数書類間の業務整合性チェックと、文書完全性の事前チェックをカバーします。
規則グループ 1:業務整合性レビュー(跨書類クロス照合)
規則名 リスクレベル レビュー条件 サプライヤー整合性 ● 高リスク若均存在税番号、则請求書販売者税番号 = 契約書乙税番号 = 入荷伝票サプライヤー税番号。否则比对名称 金額照合 ● 高リスク請求書税込合計金額 ≤ 購買契約書合計金額。框架协议(金額空或 0)时不チェック 数量整合性(入荷伝票维度) ● 中リスク若請求書含商品明细、则請求書数量合計 ≤ 入荷伝票实收数量合計 対象整合性 ● 低リスク契約書取り決めます的規格型番须と入荷伝票、請求書中的規格型番一致。未取り決めます規格型番时チェック対象物描述是否指向同一商品 税率整合性 ● 中リスク請求書各行税率须と契約書取り決めます税率一致。契約書未取り決めます税率时スキップ 検収結論チェック ● 中リスク検収書的検収結論须为合格/合格/検収合格/同意検収或类似认可ステータス 数量整合性(検収書维度) ● 中リスク若請求書含商品明细且検収書有合格数量、则請求書数量合計 ≤ 検収書合格数量 契約書関連性 ● 中リスク入荷伝票契約書番号 = 購買契約書番号。検収書契約書番号 = 購買契約書番号
複数文書規則的 category_ids 含む複数の分類 ID、只有当レビュータスク覆盖所有関連分類时、この規則才会被触发执行。
規則名 リスクレベル レビュー条件 情報完全性チェック ● 中リスクチェック四类文書齐全性并照合各文書必須フィールド非空(详见レビュー点説明) 請求書日付コンプライアンス性 ● 中リスク請求書発行日付 ≥ 契約書締結日 購入者情報照合 ● 高リスク請求書購入者名称 = 上海合合情報科技股份有限公司。購入者税番号 = 91310110791485269J 税率コンプライアンス性チェック ● 中リスク货物类税率应为 13%、サービス类应为 6%、小规模纳税人应为 1% 或 3%
06 コード構成
例コード将完全な七步フローまとめて実行、便于理解端到端的调用链路。在実際本番中、ステップ 1、2、5(ワークスペースを作成、設定ファイルカテゴリ、設定レビュー規則リポジトリ)必要なのは一度だけ実行 。以降処理新書類时、必要なのは繰り返すステップ 3、4、6、7(ファイルをアップロード → 抽出結果を取得 → 送信レビュータスク → 取得レビュー結果) 、直接再利用既存の的設定即可。参照: AP 照合シナリオ(完了済み設定) 。
例コード中的関数分为两类、理解この一点有助于照合 API 文書进行デバッグ和拡張。
2 種類の関数
REST API 呼び出し関数 — 各関数は API エンドポイントを直接ラップします、関数パラメータとAPI文書対応:
関数(Python) メソッド(Java) 対応する API エンドポイント 説明 create_workspacecreateWorkspacePOST /workspace/createワークスペースを作成、workspace_id を返す create_categorycreateCategoryPOST /category/createファイルカテゴリを作成し、サンプルをアップロード、category_id を返す batch_add_category_fieldsbatchAddCategoryFieldsPOST /category/fields/batch_add为既存のカテゴリ追加フィールド(用于添加テーブルフィールド) upload_fileuploadFilePOST /file/upload非同期でファイルをアップロードし、batch_number を返します。結果取得にはポーリングが必要です upload_file_syncuploadFileSyncPOST /file/upload/sync同期でファイルをアップロードし、抽出結果を直接返します。ポーリングは不要です create_rule_repocreateRuleRepoPOST /review/rule_repo/createレビュー規則リポジトリを作成、repo_id を返す create_rule_groupcreateRuleGroupPOST /review/rule_group/create在規則リポジトリ内規則グループを作成、group_id を返す create_rulecreateRulePOST /review/rule/create在規則グループ内レビュー規則を作成、適用カテゴリを紐付け submit_review_tasksubmitReviewTaskPOST /review/task/submitレビュータスクを送信し、レビュー task_id を返します
補助関数 — 直接対応しない API エンドポイント、共通処理やポーリング/表示ロジック:
関数(Python) メソッド(Java) 役割 _headersauthHeaders認証リクエストヘッダーを構築 _checkcheckResponseレスポンス code を検証し、例外処理を統一 _mimemimeType拡張子から MIME タイプを推定 wait_for_resultwaitForResultループでポーリング file/fetch、抽出完了を待機 display_resultdisplayResult抽出結果を整形して出力 wait_for_reviewwaitForReviewループでポーリング review/task/result、レビュー完了を待機 display_review_resultdisplayReviewResultレビュー結果を整形して出力
ステップ別コード説明
ステップ 2:作成含テーブルフィールド的ファイルカテゴリ
国内票-電子インボイス、購買契約書和入荷伝票均含むテーブルフィールド、需先作成カテゴリ(設定基本情報フィールド)、再合格 batch_add_category_fields 追加テーブルフィールド。table_id=-1 表示挂载到デフォルトテーブル。 # 国内票-電子インボイス(基本情報フィールド + 明细テーブルフィールド)
invoice_id = create_category(
workspace_id = workspace_id,
name = "国内票-電子インボイス" ,
sample_file_path = "sample_invoice.pdf" ,
fields = [
{ "name" : "請求書番号" }, { "name" : "発行日付" }, { "name" : "税込合計" },
# ... 其余基本情報フィールド
],
)
batch_add_category_fields(workspace_id, invoice_id, table_id =- 1 , fields = [
{ "name" : "商品名称" }, { "name" : "規格型番" }, { "name" : "単位" },
{ "name" : "数量" }, { "name" : "単価" }, { "name" : "金額" }, { "name" : "税率" }, { "name" : "税額" }
])
# 購買契約書(基本情報フィールド + テーブルフィールド)
contract_id = create_category(
workspace_id = workspace_id,
name = "購買契約書" ,
sample_file_path = "sample_contract.pdf" ,
fields = [{ "name" : "番号" }, { "name" : "甲" }, { "name" : "乙" }, ... ],
)
batch_add_category_fields(workspace_id, contract_id, table_id =- 1 , fields = [
{ "name" : "プロダクト型番" }, { "name" : "プロダクト説明" }, { "name" : "単価" }, { "name" : "数量" }, { "name" : "金額" }
])
// 国内票-電子インボイス
String invoiceId = createCategory (workspaceId, "国内票-電子インボイス" ,
SAMPLE_DIR + "/sample_invoice.pdf" , invoiceFields, "電子インボイス..." );
batchAddCategoryFields (workspaceId, invoiceId, "-1" ,
List . of ( "商品名称" , "規格型番" , "単位" , "数量" , "単価" , "金額" , "税率" , "税額" ));
// 購買契約書
String contractId = createCategory (workspaceId, "購買契約書" ,
SAMPLE_DIR + "/sample_contract.pdf" , contractFields, "" );
batchAddCategoryFields (workspaceId, contractId, "-1" ,
List . of ( "プロダクト型番" , "プロダクト説明" , "単価" , "数量" , "金額" ));
ファイルアップロード対応两种モード、可根据業務シナリオ选择:
非同期アップロード (file/upload):アップロード后立即返す batch_number、需配合ステップ 4 ポーリング file/fetch 抽出結果を取得。適しています大一括ファイル并发処理。
同期アップロード (file/upload/sync):アップロード后待機処理完了、抽出結果を直接返す、ポーリング不要。適しています单ファイル或少量ファイル的リアルタイムシナリオ。
方法 1:非同期アップロード(需配合ステップ 4 ポーリング) batch_numbers = []
for file_path in [
os.path.join( SAMPLE_DIR , "sample_invoice.pdf" ),
os.path.join( SAMPLE_DIR , "sample_contract.pdf" ),
os.path.join( SAMPLE_DIR , "sample_inbound.pdf" ),
os.path.join( SAMPLE_DIR , "sample_acceptance.pdf" ),
]:
batch_number = upload_file(workspace_id, file_path)
batch_numbers.append(batch_number)
List < String > batchNumbers = new ArrayList <>();
for ( String path : new String []{
SAMPLE_DIR + "/sample_invoice.pdf" ,
SAMPLE_DIR + "/sample_contract.pdf" ,
SAMPLE_DIR + "/sample_inbound.pdf" ,
SAMPLE_DIR + "/sample_acceptance.pdf" }) {
batchNumbers . add ( uploadFile (workspaceId, path));
}
方法 2:同期アップロード(抽出結果を直接返す、スキップステップ 4) def upload_file_sync ( workspace_id : str , file_path : str ) -> dict :
"""同期アップロード:抽出結果を直接返す、ポーリング不要。"""
url = f " { BASE_URL } /api/app-api/sip/platform/v2/file/upload/sync"
with open (file_path, "rb" ) as f:
resp = requests.post(url,
params = { "workspace_id" : workspace_id},
files = { "file" : (os.path.basename(file_path), f, _mime(file_path))},
headers = _headers(), timeout = 300 )
data = _check(resp, "ファイルを同期アップロード" )
return data[ "result" ][ "files" ][ 0 ] # 戻り値構造は file/fetch と同じ
# 呼び出し例:アップロード即得到抽出結果、可直接用于レビュー
raw_results = [upload_file_sync(workspace_id, p) for p in [
os.path.join( SAMPLE_DIR , "sample_invoice.pdf" ),
os.path.join( SAMPLE_DIR , "sample_contract.pdf" ),
os.path.join( SAMPLE_DIR , "sample_inbound.pdf" ),
os.path.join( SAMPLE_DIR , "sample_acceptance.pdf" ),
]]
public static JsonObject uploadFileSync ( String workspaceId, String filePath) throws IOException {
File file = new File (filePath);
HttpUrl url = HttpUrl . parse (BASE_URL + "/api/app-api/sip/platform/v2/file/upload/sync" )
. newBuilder (). addQueryParameter ( "workspace_id" , workspaceId). build ();
MultipartBody body = new MultipartBody. Builder (). setType ( MultipartBody . FORM )
. addFormDataPart ( "file" , file . getName (),
RequestBody . create (file, MediaType . get ( mimeType ( file . getName ()))))
. build ();
Request req = new Request. Builder (). url (url). headers ( authHeaders ()). post (body). build ();
try ( Response resp = HTTP . newCall (req). execute ()) {
return checkResponse ( resp . body (). string (), "ファイルを同期アップロード" )
. getAsJsonObject ( "result" ). getAsJsonArray ( "files" )
. get ( 0 ). getAsJsonObject ();
}
}
// 呼び出し例
List < JsonObject > rawResults = new ArrayList <>();
for ( String path : new String []{
SAMPLE_DIR + "/sample_invoice.pdf" ,
SAMPLE_DIR + "/sample_contract.pdf" ,
SAMPLE_DIR + "/sample_inbound.pdf" ,
SAMPLE_DIR + "/sample_acceptance.pdf" }) {
rawResults . add ( uploadFileSync (workspaceId, path));
}
ステップ 4:抽出結果を取得(同期アップロード使用時は省略可能)
若ステップ 3 使用了同期アップロード file/upload/sync、则已直接获得抽出結果、可スキップ本ステップ。
非同期アップロード后、需ポーリング file/fetch API待機処理完了: raw_results = []
for batch_number in batch_numbers:
result = wait_for_result(workspace_id, batch_number)
raw_results.append(result)
display_result(result)
List < JsonObject > rawResults = new ArrayList <>();
for ( String batchNumber : batchNumbers) {
JsonObject result = waitForResult (workspaceId, batchNumber);
rawResults . add (result);
displayResult (result);
}
複数文書規則在 category_ids 中传入複数の分類 ID。DocFlow 会从各分類已抽出的結果中提取規則関連フィールド、交由 AI 统一判断。 # サプライヤー整合性——関連請求書、契約書、入荷伝票三个分類
create_rule(workspace_id, repo_id, group1_id,
"サプライヤー整合性" ,
"若均存在税番号フィールド、则請求書【販売者納税者識別番号】= 契約書【乙納税者識別番号】"
"= 入荷伝票【サプライヤー税番号】。否则比对名称" ,
[invoice_id, contract_id, inbound_id], 10 )
createRule (workspaceId, repoId, group1Id, "サプライヤー整合性" ,
"若均存在税番号フィールド、则請求書【販売者納税者識別番号】= 契約書【乙納税者識別番号】"
+ "= 入荷伝票【サプライヤー税番号】。否则比对名称" ,
Arrays . asList (invoiceId, contractId, inboundId), 10 );
抽出結果の例
レビュー結果の例
07 完全なサンプルコードのダウンロード
完全な実行可能コード(Python 版、Java 版)は、ドキュメントリポジトリの examples/ ディレクトリに同梱されています:
examples/
├── python/
│ ├── ap_review.py # Python 完全な例
│ ├── requirements.txt
│ └── README.md
├── java/
│ ├── src/main/java/com/docflow/ApReview.java
│ ├── pom.xml
│ └── README.md
└── sample_files/
└── ap_review/
├── sample_invoice.pdf
├── sample_contract.pdf
├── sample_inbound.pdf
└── sample_acceptance.pdf
Python 例 確認 Python 完全な例コード
08 サンプルの実行
環境要件 :Python 3.8+1. 依存関係をインストール cd examples/python
pip install -r requirements.txt
2. 入力設定 開き ap_review.py、入力ファイル上部的設定項目: APP_ID = "your-app-id" # x-ti-app-id
SECRET_CODE = "your-secret-code" # x-ti-secret-code
3. 実行 環境要件 :JDK 11+、Maven 3.6+1. 入力設定 開き src/main/java/com/docflow/ApReview.java、入力ファイル上部的設定項目: private static final String APP_ID = "your-app-id" ;
private static final String SECRET_CODE = "your-secret-code" ;
2. ビルドして実行 cd examples/java
mvn compile -q
mvn exec:java -Dexec.mainClass= "com.docflow.ApReview"
実行に成功したら、DocFlow Web ページ にログインし、対象ワークスペースで各ファイルの分類結果、フィールド抽出結果、スマートレビュー結果を確認できます。コードの出力結果との照合にも役立ちます。
想定されるコンソール出力
成功実行后、コンソール将出力如下内容(workspace_id、category_id など ID 因実行环境不同而变化):
============================================================
DocFlow AP 照合シナリオ例
============================================================
[ステップ1] ワークスペース作成成功 workspace_id=<workspace_id>
[ステップ2] ファイルカテゴリ作成成功 name=国内票-電子インボイス category_id=<category_id>
追加フィールド成功 name=商品名称 field_id=<field_id>
追加フィールド成功 name=規格型番 field_id=<field_id>
追加フィールド成功 name=単位 field_id=<field_id>
追加フィールド成功 name=数量 field_id=<field_id>
追加フィールド成功 name=単価 field_id=<field_id>
追加フィールド成功 name=金額 field_id=<field_id>
追加フィールド成功 name=税率 field_id=<field_id>
追加フィールド成功 name=税額 field_id=<field_id>
[ステップ2] ファイルカテゴリ作成成功 name=購買契約書 category_id=<category_id>
追加フィールド成功 name=プロダクト型番 field_id=<field_id>
追加フィールド成功 name=プロダクト説明 field_id=<field_id>
追加フィールド成功 name=単価 field_id=<field_id>
追加フィールド成功 name=数量 field_id=<field_id>
追加フィールド成功 name=金額 field_id=<field_id>
[ステップ2] ファイルカテゴリ作成成功 name=入荷伝票 category_id=<category_id>
追加フィールド成功 name=受領入荷明细-品目编码 field_id=<field_id>
追加フィールド成功 name=受領入荷明细-品目描述 field_id=<field_id>
追加フィールド成功 name=受領入荷明细-単位 field_id=<field_id>
追加フィールド成功 name=受領入荷明细-应收 field_id=<field_id>
追加フィールド成功 name=受領入荷明细-实收 field_id=<field_id>
追加フィールド成功 name=受領入荷明细-差异 field_id=<field_id>
追加フィールド成功 name=受領入荷明细-质检 field_id=<field_id>
追加フィールド成功 name=受領入荷明细-签收人 field_id=<field_id>
[ステップ2] ファイルカテゴリ作成成功 name=検収書 category_id=<category_id>
設定完了 workspace_id=<workspace_id>
国内票-電子インボイス: category_id=<category_id>
購買契約書: category_id=<category_id>
入荷伝票: category_id=<category_id>
検収書: category_id=<category_id>
開始処理対象ファイルをアップロード...
[ステップ3] ファイルアップロード成功 name=sample_invoice.pdf batch_number=<batch_number>
[ステップ3] ファイルアップロード成功 name=sample_contract.pdf batch_number=<batch_number>
[ステップ3] ファイルアップロード成功 name=sample_inbound.pdf batch_number=<batch_number>
[ステップ3] ファイルアップロード成功 name=sample_acceptance.pdf batch_number=<batch_number>
開始処理結果を取得...
[ステップ4] 待機処理結果(batch_number=<batch_number>)..... 完了
============================================================
ファイル名 : sample_invoice.pdf
分類結果 : 国内票-電子インボイス
── 普通フィールド ──────────────────────────
請求書番号 : 25442000000012345678
発行日付 : 2025-01-15
税込合計 : 50,900.00
税抜金額 : 48,000.00
税額 : 2,900.00
販売者名称 : 上海某某科技有限公司
販売者納税者識別番号 : 91310000XXXXXXXXXX
購入者名称 : 合合情報科技(上海)有限公司
購入者納税者識別番号 : 91310000YYYYYYYYYY
── テーブル行データ ────────────────────────
第1行: 商品名称=スマート硬件设备 | 規格型番=XH-2000 | 単位=台 | 数量=10 | 単価=4,800.00 | 金額=48,000.00 | 税率=6% | 税額=2,880.00
[ステップ4] 待機処理結果(batch_number=<batch_number>)......... 完了
============================================================
ファイル名 : sample_contract.pdf
分類結果 : 購買契約書
── 普通フィールド ──────────────────────────
番号 : HT-2025-001
甲 : 合合情報科技(上海)有限公司
乙 : 上海某某科技有限公司
締結日 : 2025-01-10
購買金額 : 50,900.00
税率 : 6%
乙税番号 : 91310000XXXXXXXXXX
[ステップ4] 待機処理結果(batch_number=<batch_number>)...... 完了
============================================================
ファイル名 : sample_inbound.pdf
分類結果 : 入荷伝票
── 普通フィールド ──────────────────────────
入荷伝票番号 : RK-2025-0115
受領日付 : 2025-01-20
对应契約書号 : HT-2025-001
サプライヤー名称 : 上海某某科技有限公司
入荷合計金額 : 50,900.00
サプライヤー税番号 : 91310000XXXXXXXXXX
[ステップ4] 待機処理結果(batch_number=<batch_number>).... 完了
============================================================
ファイル名 : sample_acceptance.pdf
分類結果 : 検収書
── 普通フィールド ──────────────────────────
契約書番号 : HT-2025-001
甲単位名称 : 合合情報科技(上海)有限公司
乙単位名称 : 上海某某科技有限公司
検収結論 : 検収合格
開始設定レビュー規則リポジトリ...
[ステップ5] 規則リポジトリ作成成功 name=AP照合シナリオレビュー規則リポジトリ repo_id=<repo_id>
規則グループ作成成功 name=サプライヤー整合性チェック group_id=<group_id>
規則作成成功 name=サプライヤー整合性 rule_id=<rule_id>
規則作成成功 name=請求書と契約書金額照合 rule_id=<rule_id>
規則作成成功 name=請求書購入者と契約書甲一致 rule_id=<rule_id>
規則グループ作成成功 name=入荷と契約書整合性 group_id=<group_id>
規則作成成功 name=入荷数量と契約書数量照合 rule_id=<rule_id>
規則作成成功 name=入荷伝票号関連契約書号 rule_id=<rule_id>
規則グループ作成成功 name=検収コンプライアンス性 group_id=<group_id>
規則作成成功 name=検収書と入荷伝票品目一致 rule_id=<rule_id>
[ステップ6] レビュータスク送信成功 task_id=<task_id>
[ステップ7] 待機レビュー結果(task_id=<task_id>)................. 完了
============================================================
レビュータスクステータス : レビュー合格
規則合格数 : 6
規則不合格数 : 0
── 規則グループ:サプライヤー整合性チェック ───────────────────
✓ [高リスク] サプライヤー整合性: レビュー合格
根拠: 請求書販売者納税者識別番号と購買契約書乙税番号均为 91310000XXXXXXXXXX、一致。
✓ [高リスク] 請求書と契約書金額照合: レビュー合格
根拠: 請求書税込合計 50,900.00 と購買契約書購買金額 50,900.00 完全一致。
✓ [中リスク] 請求書購入者と契約書甲一致: レビュー合格
根拠: 請求書購入者"合合情報科技(上海)有限公司"と契約書甲一致。
── 規則グループ:入荷と契約書整合性 ───────────────────
✓ [高リスク] 入荷数量と契約書数量照合: レビュー合格
根拠: 入荷伝票实收数量 10 台と購買契約書取り決めます数量 10 台一致。
✓ [中リスク] 入荷伝票号関連契約書号: レビュー合格
根拠: 入荷伝票对应契約書号 HT-2025-001 と購買契約書番号一致。
── 規則グループ:検収コンプライアンス性 ───────────────────
✓ [中リスク] 検収書と入荷伝票品目一致: レビュー合格
根拠: 検収書契約書番号と入荷伝票对应契約書号均为 HT-2025-001、品目関連一致。
============================================================
例実行完了
============================================================
09 結果の説明
抽出結果
処理完了後、各ファイルの分類結果とフィールド抽出結果が返されます。フィールド抽出結果は data.fields[]、テーブルフィールドは data.items[][] に格納され、各フィールドには key、value、座標情報 position が含まれます(原文のハイライト表示に利用できます)。
以下は、請求書サンプルファイルに対する実際の API レスポンス例です(file/fetch から取得。一部の position 座標は省略しています)。
{
"id" : "2029124607672344576" ,
"name" : "sample_invoice.pdf" ,
"format" : "pdf" ,
"category" : "国内票-電子インボイス" ,
"recognition_status" : 1 ,
"duration_ms" : 4832 ,
"data" : {
"fields" : [
{ "key" : "請求書番号" , "value" : "25442000000012345678" },
{ "key" : "発行日付" , "value" : "2025-01-15" },
{ "key" : "税込合計" , "value" : "50900.00" },
{ "key" : "税抜金額" , "value" : "48000.00" },
{ "key" : "税額" , "value" : "2900.00" },
{ "key" : "販売者名称" , "value" : "上海某某科技有限公司" },
{ "key" : "販売者納税者識別番号" , "value" : "91310000XXXXXXXXXX" },
{ "key" : "購入者名称" , "value" : "合合情報科技(上海)有限公司" },
{ "key" : "購入者納税者識別番号" , "value" : "91310000YYYYYYYYYY" },
{ "key" : "請求書備考" , "value" : "" }
],
"items" : [
[
{ "key" : "商品名称" , "value" : "スマート硬件设备" },
{ "key" : "規格型番" , "value" : "XH-2000" },
{ "key" : "単位" , "value" : "台" },
{ "key" : "数量" , "value" : "10" },
{ "key" : "単価" , "value" : "4800.00" },
{ "key" : "金額" , "value" : "48000.00" },
{ "key" : "税率" , "value" : "6%" },
{ "key" : "税額" , "value" : "2880.00" }
]
],
"stamps" : [],
"handwritings" : []
}
}
レビュー結果
レビュー完了後、review/task/result API から次の情報を取得できます:
status :タスク全体のステータス(1=レビュー合格、4=レビュー不合格、2=レビュー失敗)
statistics :規則合格数、不合格数汇总
groups[].review_tasks[] :各規則的詳細レビュー結果、含む:
review_result:この規則的レビュー結論(1=合格、4=不合格)
reasoning:AI によるレビュー根拠の説明
anchors:原文内で根拠となる座標位置(ハイライト表示に利用できます)
{
"task_id" : "31415926" ,
"task_name" : "APレビュー" ,
"status" : 1 ,
"statistics" : { "pass_count" : 6 , "failure_count" : 0 , "error_count" : 0 },
"groups" : [
{
"group_name" : "サプライヤー整合性チェック" ,
"review_tasks" : [
{
"rule_name" : "サプライヤー整合性" ,
"risk_level" : 10 ,
"review_result" : 1 ,
"reasoning" : "請求書販売者納税者識別番号と購買契約書乙税番号均为 91310000XXXXXXXXXX、一致、レビュー合格。"
},
{
"rule_name" : "請求書と契約書金額照合" ,
"risk_level" : 10 ,
"review_result" : 1 ,
"reasoning" : "請求書税込合計 50900.00 と購買契約書購買金額 50900.00 完全一致、レビュー合格。"
},
{
"rule_name" : "請求書購入者と契約書甲一致" ,
"risk_level" : 20 ,
"review_result" : 1 ,
"reasoning" : "請求書購入者" 合合情報科技(上海)有限公司 "と購買契約書甲一致、レビュー合格。"
}
]
},
{
"group_name" : "入荷と契約書整合性" ,
"review_tasks" : [
{
"rule_name" : "入荷数量と契約書数量照合" ,
"risk_level" : 10 ,
"review_result" : 1 ,
"reasoning" : "入荷伝票实收数量 10 台と購買契約書取り決めます数量 10 台一致、レビュー合格。"
},
{
"rule_name" : "入荷伝票号関連契約書号" ,
"risk_level" : 20 ,
"review_result" : 1 ,
"reasoning" : "入荷伝票对应契約書号 HT-2025-001 と購買契約書番号一致、レビュー合格。"
}
]
},
{
"group_name" : "検収コンプライアンス性" ,
"review_tasks" : [
{
"rule_name" : "検収書と入荷伝票品目一致" ,
"risk_level" : 20 ,
"review_result" : 1 ,
"reasoning" : "検収書契約書番号と入荷伝票对应契約書号均为 HT-2025-001、品目関連一致、レビュー合格。"
}
]
}
]
}