メインコンテンツへスキップ
このページでは購買契約書レビュー为業務シナリオ、演示如何API で 完了从作成スペース、設定カテゴリ、アップロード契約書ファイル、抽出結果を取得到スマートレビュー的完全なフロー。 DocFlow を初めて利用する場合は、このページを読む前に Web ページ で基本機能を確認することをおすすめします。

01 シナリオ概要

在企業契約書管理業務中、法務部门必要对每一份契約書进行系统性レビュー、主要关注以下三个维度:
  • 財務条項レビュー:金額计算と大小写整合性、税率コンプライアンス性、支払条件と比例明確性、違約金/滞纳金妥当性など。
  • 法務コンプライアンスレビュー:必备条項完全性、締結当事者情報整合性、权力义务明確性、知的財産権归属など。
  • 文面品質レビュー:数字计算チェック、条項間ロジック整合性、誤字と意味の曖昧さチェックなど。
DocFlow により、您必要なのは将契約書ファイル(PDF 或 Word)アップロード到ワークスペース、系统即可自動完了構造化フィールド抽出、并根拠预设規則リポジトリ进行全面スマートレビュー、显著降低人工逐条审阅的时间成本。
契約書レビューシナリオ必要なのは設定1 つのファイルカテゴリ(購買契約書)、但規則较多(3 个規則グループ、22 条規則)、覆盖契約書レビュー的常见风险点。

02 業務フロー

契約書レビュー業務フロー
ワークスペース、ファイルカテゴリレビュー規則リポジトリ必要なのは設定一次、以降可持续再利用——直接アップロード新的契約書ファイル并作成新的レビュータスク即可。本例为演示完全なフロー、将設定ステップ和処理ステップ放在同一段コード中実行。

03 前提条件

  1. TextIn コンソール にログインし、x-ti-app-idx-ti-secret-code を取得します
  2. サンプルファイル、或使用自己的購買契約書ファイル

04 カテゴリとフィールド設定

本例只設定1 つのファイルカテゴリ:購買契約書。契約書是複雑的长文書、フィールド较多、建议使用 Model 2(複雑文書理解) 以获得更准确的抽出效果。

購買契約書(サンプル:sample_contract.docx)

購買契約書含む当事者情報、対象条項、財務条項、法務条項など複数の维度的フィールド、全部为基本情報フィールド:
例サンプルファイル(Word 文書)、可クリックダウンロード確認
フィールド名タイプ
契約書番号基本情報フィールド
契約書名称基本情報フィールド
締結日基本情報フィールド
発効条件基本情報フィールド
甲正式名称基本情報フィールド
甲統一社会信用コード基本情報フィールド
甲連絡先基本情報フィールド
甲住所基本情報フィールド
乙正式名称基本情報フィールド
乙統一社会信用コード基本情報フィールド
乙連絡先基本情報フィールド
乙住所基本情報フィールド
乙法定代表者/委任代理人基本情報フィールド
対象名称基本情報フィールド
対象規格型番/基準基本情報フィールド
対象技術/品質基準基本情報フィールド
対象数量/サービス范围基本情報フィールド
税込合計金額(大文字表記)基本情報フィールド
不税込金額基本情報フィールド
税額基本情報フィールド
税率基本情報フィールド
請求書条項基本情報フィールド
支払方法基本情報フィールド
支払条件基本情報フィールド
支払比例基本情報フィールド
支払サイト基本情報フィールド
受取口座情報基本情報フィールド
履行期限基本情報フィールド
履行地点基本情報フィールド
交付/検収基準とフロー基本情報フィールド
違約責任基本情報フィールド
免责条項基本情報フィールド
紛争解決方法基本情報フィールド
契約書解除と终止条件基本情報フィールド
秘密保持条項基本情報フィールド
知的財産権声明基本情報フィールド
契約書部数基本情報フィールド
添付資料一覧基本情報フィールド
締結人签字/盖章基本情報フィールド

05 レビュー規則設定

本例的レビュー規則リポジトリ含む 3 个規則グループ、22 条レビュー規則、全面覆盖契約書レビュー的常见风险:

規則グループ 1:財務条項レビュー(12 条規則)

規則名リスクレベルレビュー条件
连带责任条項 中リスク若存在三方关系(発行方/支払方/締結当事者一致しません)、契約書须明确各方债权债务关系
履行保证金条項 中リスク若取り決めます保证金/质保金、须明确退还条件、时间节点及不予退还的情形
滞纳金/違約金妥当性 中リスク逾期支払或逾期交付的違約金日费率 ≤ 0.05%
検収/交付基準明確性 中リスク契約書须明确交付完了的判定基準
币别整合性 中リスク契約書全文涉及金額的币别须前后一致
支払方法明確性 中リスク支払方法须为銀行转账、承兑汇票或第三方支付之一
支払条件明確性 中リスク支払节点和期限须明确
税率妥当性 高リスク税率须为有效值(6%/9%/13%/1%/3%/免税/0%)且と契約書対象タイプ照合
支払比例合計 高リスク分阶段支払比例合計须など于 100%
プロダクト明细合計と合計金額整合性 高リスク各明细行単価×数量=金額、すべての明細行金額合計=契約書合計金額(許容±0.01元)
金額コンプライアンスチェック 高リスク不税込金額×税率=税額。不税込金額+税額=税込合計金額(許容±0.01元尾差)
契約書金額大小写整合性 高リスク大小写金額须一致。仅有大文字表記时チェック中文金額书写规范

規則グループ 2:法務コンプライアンスレビュー(9 条規則)

規則名リスクレベルレビュー条件
不可抗力条項 低リスク须含む不可抗力条項且定義清晰(范围、通知时限、责任豁免方法)
秘密保持条項完全性 低リスク保密情報定義、保密期限、違約責任三要素齐全
知的財産権归属 低リスク涉及技術开发/软件开发时、须有明确的知的財産権归属条項
違約金上限妥当性 低リスク違約金须設定上限(如不超過契約書合計金額的 20%)
违约对など性チェック 低リスク甲乙双方逾期違約金比例差异不超過设定阈值(如 ≥50% 时标记)
契約書日付妥当性 中リスク締結日 ≤ 生效日付 ≤ 到期日付。生效日付不得早于当前日付
締結当事者名称整合性 高リスク契約書首部、尾部署名・押印处、正文中的締結当事者名称须完全一致
締結当事者情報完全性 高リスク甲乙双方的名称、住所、連絡先均不空
必备条項完全性 高リスク须含む当事者情報、対象、数量、价款、履行期限、違約責任、紛争解決など必备条項

規則グループ 3:文面品質と整合性レビュー(3 条規則)

規則名リスクレベルレビュー条件
数字计算チェック 低リスク単価×数量=金額(每行)。各分项金額合計=契約書合計金額
内部整合性チェック 中リスク条項間ロジック无矛盾:支払条件と交付条項不冲突、金額前后一致、期限起止合理
誤字/语义错误チェック 低リスクチェック誤字、用词不当、意味の曖昧さ

06 コード構成

例コード将完全な七步フローまとめて実行。在実際本番中、ステップ 1、2、5 必要なのは一度だけ実行。以降レビュー新契約書时、必要なのは繰り返すステップ 3、4、6、7、直接再利用既存の設定即可。参照: 契約書レビューシナリオ(完了済み設定) 例コード中的関数分为两类、理解この一点有助于照合 API 文書进行デバッグ和拡張。

2 種類の関数

REST API 呼び出し関数 — 各関数は API エンドポイントを直接ラップします、関数パラメータとAPI文書対応:
関数(Python)メソッド(Java)対応する API エンドポイント説明
create_workspacecreateWorkspacePOST /workspace/createワークスペースを作成、workspace_id を返す
create_categorycreateCategoryPOST /category/createファイルカテゴリを作成し、サンプルをアップロード、category_id を返す
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:作成購買契約書カテゴリ

契約書フィールド较多、直接在 create_categoryfields パラメータ中一度だけの传入所有フィールド、不要额外调用 batch_add_category_fields
contract_id = create_category(
    workspace_id=workspace_id,
    name="購買契約書",
    sample_file_path=os.path.join(SAMPLE_DIR, "sample_contract.docx"),
    fields=[
        {"name": "契約書番号"}, {"name": "契約書名称"}, {"name": "締結日"},
        {"name": "甲正式名称"}, {"name": "乙正式名称"},
        # ... 其余フィールド
    ],
)

ステップ 3:処理対象ファイルをアップロード

DocFlow 提供两种アップロード方法:
  • 非同期アップロード file/upload:立即返す batch_number、需配合ステップ 4 ポーリング file/fetch 取得結果、適しています一括并行アップロード
  • 同期アップロード file/upload/sync: 処理完了まで待機し、抽出結果を直接返します(構造は file/fetch と同じ)。ポーリングは不要で、シンプルな連携や少数ファイルのリアルタイム処理に適しています。
两者的リクエストパラメータ完全一致、仅 URL 路径不同。方法 1:非同期アップロード(需配合ステップ 4 ポーリング)
batch_number = upload_file(workspace_id, os.path.join(SAMPLE_DIR, "sample_contract.docx"))
方法 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 と同じ

# 呼び出し例:アップロード即得到抽出結果、可直接用于レビュー
file_result = upload_file_sync(workspace_id, os.path.join(SAMPLE_DIR, "sample_contract.docx"))

ステップ 4:抽出結果を取得(同期アップロード使用時は省略可能)

若ステップ 3 使用了同期アップロード file/upload/sync、则已直接获得抽出結果、可スキップ本ステップ。
契約書文書较长、処理时间可能比普通票据更长(建议タイムアウト时间设为 180s)。結果中的 fields 数组含む所有抽出到的フィールド和值。
# タイムアウト时间设为 180s(契約書文書较长)
file_result = wait_for_result(workspace_id, batch_number, timeout=180)
display_result(file_result)

抽出結果の例

抽出結果例

レビュー結果の例

レビュー結果例

07 完全なサンプルコードのダウンロード

完全な実行可能コード(Python 版、Java 版)は、ドキュメントリポジトリの examples/ ディレクトリに同梱されています:
examples/
├── python/
│   ├── contract_review.py         # Python 完全な例
│   ├── requirements.txt
│   └── README.md
├── java/
│   ├── src/main/java/com/docflow/ContractReview.java
│   ├── pom.xml
│   └── README.md
└── sample_files/
    └── contract_review/
        └── sample_contract.docx

Python 例

確認 Python 完全な例コード

Java 例

確認 Java 完全な例コード

08 サンプルの実行

環境要件:Python 3.8+1. 依存関係をインストール
cd examples/python
pip install -r requirements.txt
2. 入力設定開き contract_review.py、入力ファイル上部的設定項目:
APP_ID        = "your-app-id"      # x-ti-app-id
SECRET_CODE   = "your-secret-code" # x-ti-secret-code
3. 実行
python contract_review.py
実行に成功したら、DocFlow Web ページ にログインし、対象ワークスペースで契約書のフィールド抽出結果とスマートレビュー結果を確認できます。コードの出力結果との照合にも役立ちます。

想定されるコンソール出力

成功実行后、コンソール将出力如下内容(workspace_id、category_id など ID 因実行环境不同而变化):
============================================================
  DocFlow 契約書レビューシナリオ例
============================================================
[ステップ1] ワークスペース作成成功  workspace_id=<workspace_id>
[ステップ2] ファイルカテゴリ作成成功  name=購買契約書  category_id=<category_id>

設定完了  workspace_id=<workspace_id>
  購買契約書: category_id=<category_id>

開始処理対象ファイルをアップロード...
[ステップ3] ファイルアップロード成功  name=sample_contract.docx  batch_number=<batch_number>

開始処理結果を取得...
[ステップ4] 待機処理結果(batch_number=<batch_number>)......... 完了

============================================================
ファイル名   : sample_contract.docx
分類結果 : 購買契約書

── 普通フィールド ──────────────────────────
  契約書番号                : HT-2025-001
  契約書名称                : スマート硬件设备購買契約書
  締結日                : 2025-01-10
  甲正式名称                : 合合情報科技(上海)有限公司
  乙正式名称                : 上海某某科技有限公司
  契約書金額                : 50,900.00
  税率                   : 6%
  乙税番号                : 91310000XXXXXXXXXX
  支払条項                : 検収合格后 30 日内支払
  違約金条項               : 延迟交货每日按契約書总价 0.1% 计算違約金
  ...(共 22 个フィールド)

開始設定レビュー規則リポジトリ...
[ステップ5] 規則リポジトリ作成成功  name=契約書レビューシナリオ規則リポジトリ  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=締結日有効性  rule_id=<rule_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=不可抗力条項存在性  rule_id=<rule_id>
[ステップ6] レビュータスク送信成功  task_id=<task_id>
[ステップ7] 待機レビュー結果(task_id=<task_id>)................... 完了

============================================================
レビュータスクステータス  : レビュー合格
規則合格数    : 11
規則不合格数  : 0

── 規則グループ:基本条項完全性 ───────────────────
  ✓ [高リスク] 必須条項完全性チェック: レビュー合格
    根拠: 契約書番号、甲乙正式名称、締結日、契約書金額など必須条項はいずれも入力済み。
  ✓ [高リスク] 契約書金額と税率コンプライアンス: レビュー合格
    根拠: 契約書金額 50,900.00 元、税率 6%、符合增值税一般纳税人要求。
  ✓ [中リスク] 双方当事者情報完全な: レビュー合格
    根拠: 甲"合合情報科技(上海)有限公司"と乙"上海某某科技有限公司"情報完全な。
  ✓ [中リスク] 締結日有効性: レビュー合格
    根拠: 締結日 2025-01-10 形式有效且不晚于当前日付。

── 規則グループ:財務条項コンプライアンス性 ───────────────────
  ✓ [高リスク] 支払条項明確性: レビュー合格
    根拠: 支払条項明确规定"検収合格后 30 日内支払"、条項清晰。
  ✓ [中リスク] 請求書情報完全性: レビュー合格
    根拠: 発行情報完全な、含む税番号、発行住所など必要内容。
  ✓ [高リスク] 税率コンプライアンス性: レビュー合格
    根拠: 契約書取り決めます税率 6%、符合现行增值税税率规定。

── 規則グループ:法務条項レビュー ───────────────────
  ✓ [高リスク] 違約金条項存在性: レビュー合格
    根拠: 契約書含む明确的違約金条項、按延迟每日 0.1% 计算。
  ✓ [中リスク] 紛争解決条項完全性: レビュー合格
    根拠: 契約書取り決めます紛争解決方法、条項完全な。
  ✓ [中リスク] 不可抗力条項存在性: レビュー合格
    根拠: 契約書含む不可抗力条項、明确了不可抗力事件的処理方法。

============================================================
  例実行完了
============================================================

09 結果の説明

抽出結果

処理完了後、契約書ファイルの分類結果とフィールド抽出結果が返されます。フィールド抽出結果は data.fields[] に格納され、各フィールドには keyvalue、座標情報 position が含まれます(原文のハイライト表示に利用できます)。契約書シナリオでは Model 2(複雑文書理解) を使用することで、長文書の理解とフィールド抽出の精度を高められます。 以下は、購買契約書サンプルファイルに対する実際の API レスポンス例です(file/fetch から取得。一部の position 座標は省略しています)。

sample_contract.docx

{
  "id": "2029124607672344576",
  "name": "sample_contract.docx",
  "format": "docx",
  "category": "購買契約書",
  "recognition_status": 1,
  "duration_ms": 12438,
  "data": {
    "fields": [
      { "key": "契約書番号",   "value": "HT-2025-001" },
      { "key": "契約書名称",   "value": "スマート硬件设备購買契約書" },
      { "key": "締結日",   "value": "2025-01-10" },
      { "key": "甲正式名称",   "value": "合合情報科技(上海)有限公司" },
      { "key": "乙正式名称",   "value": "上海某某科技有限公司" },
      { "key": "契約書金額",   "value": "50900.00" },
      { "key": "税率",      "value": "6%" },
      { "key": "乙税番号",   "value": "91310000XXXXXXXXXX" },
      { "key": "支払条項",   "value": "検収合格后 30 日内支払" },
      { "key": "違約金条項", "value": "延迟交货每日按契約書总价 0.1% 计算違約金" },
      { "key": "契約期間",   "value": "2025-01-10 至 2025-12-31" }
    ],
    "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": "契約書レビュー_20250110_143022",
  "status": 1,
  "statistics": { "pass_count": 11, "failure_count": 0, "error_count": 0 },
  "groups": [
    {
      "group_name": "基本条項完全性",
      "review_tasks": [
        {
          "rule_name": "必須条項完全性チェック",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "契約書番号、甲乙正式名称、締結日、契約書金額など必須条項はいずれも入力済み、レビュー合格。"
        },
        {
          "rule_name": "契約書金額と税率コンプライアンス",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "契約書金額 50900.00 元、税率 6%、符合增值税一般纳税人要求、レビュー合格。"
        }
      ]
    },
    {
      "group_name": "財務条項コンプライアンス性",
      "review_tasks": [
        {
          "rule_name": "支払条項明確性",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "支払条項明确规定"検収合格后 30 日内支払"、条項清晰、レビュー合格。"
        },
        {
          "rule_name": "税率コンプライアンス性",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "契約書取り決めます税率 6%、符合现行增值税税率规定、レビュー合格。"
        }
      ]
    },
    {
      "group_name": "法務条項レビュー",
      "review_tasks": [
        {
          "rule_name": "違約金条項存在性",
          "risk_level": 10,
          "review_result": 1,
          "reasoning": "契約書含む明确的違約金条項、按延迟每日 0.1% 计算、レビュー合格。"
        }
      ]
    }
  ]
}