01 シナリオ概要
経費精算業務では、財務担当者が毎日さまざまな種類の精算書類を処理します。例:- 経費申請書(XLS 形式):記録します申請者、出張目的、費用明細など情報
- ホテル明細(画像):チェックイン日、チェックアウト日、利用明細を記録します
- 支払記録(PDF):取引番号、取引金額、支払元/受取先情報を記録します
02 業務フロー

ワークスペース、ファイルカテゴリ、レビュー規則リポジトリは一度だけ設定すれば継続利用できます。以降は新しい処理対象ファイルをアップロードし、新しいレビュータスクを作成するだけです。このサンプルでは全体の流れを示すため、設定手順と処理手順を同じコード内で実行します。
03 前提条件
- TextIn コンソール にログインし、
x-ti-app-idとx-ti-secret-codeを取得します - サンプルファイル、または自社の精算書類を使用します
04 カテゴリとフィールド設定
この例では 3 つのファイルカテゴリを設定します。フィールド設計は次のとおりです。ホテル明細(サンプル:sample_hotel_receipt.png)
ホテル明細(サンプル:sample_hotel_receipt.png)
ホテル明細は宿泊費の証憑で、通常はチェックイン/チェックアウト日などの全体情報と、日別課金の利用明細テーブルを含みます。フィールド設定では基本情報フィールド(全体情報)とテーブルフィールド(明細行)を併用し、書類内の構造化データを網羅的に抽出します。

| フィールド名 | タイプ |
|---|---|
| チェックイン日付 | 基本情報フィールド |
| チェックアウト日付 | 基本情報フィールド |
| 合計金額 | 基本情報フィールド |
| 日付 | テーブルフィールド |
| 費用タイプ | テーブルフィールド |
| 金額 | テーブルフィールド |
| 備考 | テーブルフィールド |
支払記録(サンプル:sample_payment_record.pdf)
支払記録(サンプル:sample_payment_record.pdf)
支払記録は銀行または決済機関が発行する電子控えで、取引番号、取引当事者、金額などの詳細を含みます。フィールド抽出により、精算金額や支払先/支払元が申請書と一致しているかをすばやく確認できます。

| フィールド名 | タイプ |
|---|---|
| 取引番号 | 基本情報フィールド |
| 取引承認コード | 基本情報フィールド |
| 支払カード種別 | 基本情報フィールド |
| 受取人名義 | 基本情報フィールド |
| 支払人名義 | 基本情報フィールド |
| 取引日時 | 基本情報フィールド |
| 備考 | 基本情報フィールド |
| 受取方口座 | 基本情報フィールド |
| 受取方銀行 | 基本情報フィールド |
| 取引金額 | 基本情報フィールド |
| 取引説明 | 基本情報フィールド |
| 支払銀行 | 基本情報フィールド |
| 通貨 | 基本情報フィールド |
| 取引口座/支払方法 | 基本情報フィールド |
経費申請書(サンプル:sample_expense_form.xls)
経費申請書(サンプル:sample_expense_form.xls)
経費申請書は出張経費精算のメイン書類で、Excel 表形式で申請者情報、出張行程、各種費用明細を記録します。フィールド抽出により、申請者、金額、税率などの重要データを自動入力でき、手入力ミスを減らせます。
| フィールド名 | タイプ |
|---|---|
| 申請者 | 基本情報フィールド |
| 出張目的 | 基本情報フィールド |
| 精算期間 | 基本情報フィールド |
| 目的地 | 基本情報フィールド |
| 費用発生日 | 基本情報フィールド |
| 費用項目 | 基本情報フィールド |
| 出張費金額 | 基本情報フィールド |
| 税率 | 基本情報フィールド |
| 仮払金精算額 | 基本情報フィールド |
| 支払申請額 | 基本情報フィールド |
| 備考 | 基本情報フィールド |
| 税額 | 基本情報フィールド |
05 レビュー規則設定
この例のレビュー規則リポジトリには 3 つの規則グループ、8 つのレビュー規則 が含まれます。書類内のコンプライアンスチェック、出張規程との照合、複数書類間のクロスチェックをカバーします。規則グループ 1:経費申請書コンプライアンス性チェック(適用カテゴリ:経費申請書)
規則グループ 1:経費申請書コンプライアンス性チェック(適用カテゴリ:経費申請書)
| 規則名 | リスクレベル | レビュー条件 |
|---|---|---|
| 行精算金額チェック | ● 高リスク | 行支払申請額 ≤ 行出張費金額(税込)- 行仮払金精算額、仮払金精算額空时视为 0 |
| 精算合計金額チェック | ● 高リスク | 申してください支払合計金額 ≤ Σ 行支払申請額 |
| 精算期間と費用日付照合 | ● 中リスク | ”費用発生日”应在”精算期間”所覆盖的日付范围内 |
| 必須フィールド完全性チェック | ● 高リスク | ”申請者”、“費用発生日”、“費用項目”、“支払申請額”均不空 |
規則グループ 2:出張費用政策照合レビュー(適用カテゴリ:ホテル明細)
規則グループ 2:出張費用政策照合レビュー(適用カテゴリ:ホテル明細)
| 規則名 | リスクレベル | レビュー条件 |
|---|---|---|
| 城市差标照合 | ● 中リスク | 酒店住宿単価 ≤ 目的地城市出張基準:一线城市(北京/上海/广州/深圳)≤ 800 元/晚、省会及计划单列市 ≤ 500 元/晚、其他城市 ≤ 300 元/晚 |
| 酒店明细合計金額チェック | ● 中リスク | すべての明細行”金額”合計 = “合計金額” |
規則グループ 3:複数文書クロスレビュー(適用カテゴリ:経費申請書 + ホテル明細 + 支払記録)
規則グループ 3:複数文書クロスレビュー(適用カテゴリ:経費申請書 + ホテル明細 + 支払記録)
| 規則名 | リスクレベル | レビュー条件 |
|---|---|---|
| 複数文書金額照合 | ● 高リスク | 経費申請書出張費金額 = ホテル明細合計金額 = 支払記録取引金額、許容 ±0.1 元誤差 |
| 支払人身份と申請者整合性 | ● 中リスク | 支払記録”支払人名義”と経費申請書”申請者”为同一人物 |
06 コード構成
例コード将完全な七步フローまとめて実行、便于理解端到端的调用链路。在実際本番中、ステップ 1、2、5(ワークスペースを作成、設定ファイルカテゴリ、設定レビュー規則リポジトリ)必要なのは一度だけ実行。以降処理新書類时、必要なのは繰り返すステップ 3、4、6、7(ファイルをアップロード → 抽出結果を取得 → 送信レビュータスク → 取得レビュー結果)、直接再利用既存の的ワークスペース、カテゴリ和規則リポジトリ即可。 例コード中的関数分为两类、理解この一点有助于照合 API 文書进行デバッグ和拡張。2 種類の関数
REST API 呼び出し関数 — 各関数は API エンドポイントを直接ラップします、関数パラメータとAPI文書対応:| 関数(Python) | メソッド(Java) | 対応する API エンドポイント | 説明 |
|---|---|---|---|
create_workspace | createWorkspace | POST /workspace/create | ワークスペースを作成、workspace_id を返す |
create_category | createCategory | POST /category/create | ファイルカテゴリを作成し、サンプルをアップロードファイル、category_id を返す |
batch_add_category_fields | batchAddCategoryFields | POST /category/fields/batch_add | 为既存のカテゴリ追加フィールド(用于添加テーブルフィールド) |
upload_file | uploadFile | POST /file/upload | 非同期でファイルをアップロードし、batch_number を返します。結果取得にはポーリングが必要です |
upload_file_sync | uploadFileSync | POST /file/upload/sync | 同期でファイルをアップロードし、抽出結果を直接返します。ポーリングは不要です |
create_rule_repo | createRuleRepo | POST /review/rule_repo/create | レビュー規則リポジトリを作成、repo_id を返す |
create_rule_group | createRuleGroup | POST /review/rule_group/create | 在規則リポジトリ内規則グループを作成、group_id を返す |
create_rule | createRule | POST /review/rule/create | 在規則グループ内レビュー規則を作成、適用カテゴリを紐付け |
submit_review_task | submitReviewTask | POST /review/task/submit | レビュータスクを送信し、レビュー task_id を返します |
| 関数(Python) | メソッド(Java) | 役割 |
|---|---|---|
_headers | authHeaders | 認証リクエストヘッダーを構築 |
_check | checkResponse | レスポンス code を検証し、例外処理を統一 |
_mime | mimeType | 拡張子から MIME タイプを推定 |
wait_for_result | waitForResult | ループでポーリング file/fetch、抽出完了を待機 |
display_result | displayResult | 抽出結果を整形して出力 |
wait_for_review | waitForReview | ループでポーリング review/task/result、レビュー完了を待機 |
display_review_result | displayReviewResult | レビュー結果を整形して出力 |
ステップ別コード説明
ステップ 1:ワークスペースを作成
ステップ 1:ワークスペースを作成
ワークスペース名称中加入时间戳、确保每次実行都会作成独立的新スペース、避免重名错误。
- Python
- Java
ステップ 2:設定ファイルカテゴリ
ステップ 2:設定ファイルカテゴリ
create_category 合格 multipart 表单一度だけの完了カテゴリ作成、サンプルアップロード和フィールド設定。对于必要テーブルフィールド的カテゴリ(如ホテル明細)、在作成后再调用 batch_add_category_fields 追加。- Python
- Java
ステップ 3:処理対象ファイルをアップロード
ステップ 3:処理対象ファイルをアップロード
DocFlow 提供两种アップロード方法:方法 2:同期アップロード(抽出結果を直接返す、スキップステップ 4)
- 非同期アップロード
file/upload:立即返すbatch_number、需配合ステップ 4 ポーリングfile/fetch取得結果、適しています一括并行アップロード - 同期アップロード
file/upload/sync: 処理完了まで待機し、抽出結果を直接返します(構造はfile/fetchと同じ)。ポーリングは不要で、シンプルな連携や少数ファイルのリアルタイム処理に適しています。
- Python
- Java
- Python
- Java
ステップ 4:抽出結果を取得(同期アップロード使用時は省略可能)
ステップ 4:抽出結果を取得(同期アップロード使用時は省略可能)
若ステップ 3 使用了同期アップロード
file/upload/sync、则已直接获得抽出結果、可スキップ本ステップ。wait_for_result ポーリングロジックをラップし、3 秒ごとに照会します file/fetch、まで recognition_status が 1(成功)。返す的ファイル对象中含む task_id、後続のレビューステップで使用します。- Python
- Java
ステップ 5:設定レビュー規則リポジトリ
ステップ 5:設定レビュー規則リポジトリ
規則リポジトリ采用三层構造:規則リポジトリ → 規則グループ → 規則。
create_rule 的 category_ids パラメータ指定規則适用的分類、使用ステップ 2 中获得的 category_id。- Python
- Java
ステップ 6:送信レビュータスク
ステップ 6:送信レビュータスク
从ステップ 4 的抽出結果中提取
task_id、传入レビューAPI。レビュータスク是异步执行的、送信后必要ポーリング結果。- Python
- Java
ステップ 7:取得レビュー結果
ステップ 7:取得レビュー結果
wait_for_review ポーリング review/task/result API、まで任务ステータスが终态(1=レビュー合格、2=レビュー失敗、4=レビュー不合格、7=認識失敗)。- Python
- Java
抽出結果の例

レビュー結果の例

07 完全なサンプルコードのダウンロード
完全な実行可能コード(Python 版、Java 版)は、ドキュメントリポジトリのexamples/ ディレクトリに同梱されています:
Python 例
確認 Python 完全な例コード
Java 例
確認 Java 完全な例コード
08 サンプルの実行
- Python
- Java
環境要件:Python 3.8+1. 依存関係をインストール2. 入力設定開き 3. 実行
expense_reimbursement.py、入力ファイル上部的設定項目:想定されるコンソール出力
成功実行后、コンソール将出力如下内容(workspace_id、category_id など ID 因実行环境不同而变化):09 結果の説明
抽出結果
処理完了後、各ファイルの分類結果とフィールド抽出結果が返されます。フィールド抽出結果はdata.fields[] に格納され、各フィールドには key、value、座標情報 position が含まれます(原文のハイライト表示に利用できます)。
以下は、3 つのサンプルファイルに対する実際の API レスポンス例です(file/fetch から取得。一部の position 座標は省略しています)。
sample_expense_form.xls
sample_expense_form.xls
sample_hotel_receipt.png
sample_hotel_receipt.png
sample_payment_record.pdf
sample_payment_record.pdf
レビュー結果
レビュー完了後、review/task/result API から次の情報を取得できます:
status:タスク全体のステータス(1=レビュー合格、4=レビュー不合格、2=レビュー失敗)statistics:規則合格数、不合格数汇总groups[].review_tasks[]:各規則的詳細レビュー結果、含む:review_result:この規則的レビュー結論reasoning:AI によるレビュー根拠の説明anchors:原文内で根拠となる座標位置(ハイライト表示に利用できます)

