跳转到主要内容
本文面向已完成工作空间创建、文件类别配置和审核规则库设置的用户,演示如何在现有配置基础上,通过 API 完成日常的合同文件上传、字段抽取和智能审核流程。 如果您还没有配置过 DocFlow,请先阅读 合同审核场景(从零开始)

01 场景说明

工作空间、文件类别、审核规则库属于一次性基础配置,完成后即可持续复用。在日常合同审核业务中,只需通过 API 重复以下三步:
  1. 上传文件:将待审核的采购合同上传至工作空间
  2. 获取抽取结果:等待系统完成分类识别与字段抽取,获取结构化数据
  3. 智能审核:绑定已有规则库,提交审核任务并获取审核结论
本文演示的完整流程如下图所示: 合同审核日常处理流程

02 先决条件

在运行本文代码之前,您需要准备:
  1. 认证信息:从 TextIn 控制台 获取 x-ti-app-idx-ti-secret-code
  2. workspace_id:已创建的工作空间 ID(查看方式见下方)
  3. repo_id:已配置的审核规则库 ID(查看方式见下方)
  4. 待处理文件:本次需要审核的采购合同文件(PDF 或 Word 格式)

如何获取 workspace_id

第一步:在左侧工作空间列表中,将鼠标悬停在目标空间名称上,点击出现的「空间信息」按钮。 获取 workspace_id 第一步 第二步:进入空间的「基础信息」页,右侧「空间ID」字段即为 workspace_id,点击复制图标可直接复制。 获取 workspace_id 第二步

如何获取 repo_id

第一步:进入目标工作空间后,点击右上角「智能审核」按钮。 获取 repo_id 第一步 第二步:在智能审核页面中,点击顶部「规则库」标签页。 获取 repo_id 第二步 第三步:规则库列表的「规则库ID」列即为 repo_id 获取 repo_id 第三步

03 代码结构说明

本示例只包含日常处理所需的三个步骤,代码量比从零开始版本少约 60%。

API 调用函数

函数(Python)方法(Java)对应 API 端点说明
upload_fileuploadFilePOST /file/upload异步上传文件,返回 batch_number,需轮询获取结果
upload_file_syncuploadFileSyncPOST /file/upload/sync同步上传文件,直接返回抽取结果,无需轮询
submit_review_tasksubmitReviewTaskPOST /review/task/submit提交审核任务,返回审核 task_id

逐步代码说明

步骤 1:上传待处理文件

DocFlow 提供两种上传模式:
  • 异步上传file/upload):返回 batch_number,需配合步骤 2 轮询 file/fetch 获取抽取结果。适合批量上传后统一轮询的场景。
  • 同步上传file/upload/sync):请求阻塞直到识别完成,直接返回抽取结果(结构与 file/fetch 一致),无需轮询,可跳过步骤 2。适合单文件实时处理场景。

方式一:异步上传(需配合步骤 2 轮询)

方式二:同步上传(直接返回抽取结果,跳过步骤 2)

步骤 2:获取抽取结果(使用同步上传时可跳过)

若步骤 1 使用了同步上传 file/upload/sync,则已直接获得抽取结果,可跳过本步骤。
batch_number 轮询 file/fetch 接口,等待识别完成后获取文档的分类和字段抽取结果,并从结果中收集 task_id 供后续审核使用。

步骤 3:提交审核任务并获取结果

将文件的 task_id 传入 review/task/submit 接口,绑定已有规则库提交审核;审核完成后轮询获取每条规则的通过/不通过结论及 AI 依据。

04 完整示例代码

05 完整示例代码下载

完整可运行代码(含 Python、Java 两个版本)已内置在文档仓库的 examples/ 目录下:

Python 示例

查看 Python 完整示例代码

Java 示例

查看 Java 完整示例代码

06 运行示例

环境要求:Python 3.8+1. 安装依赖
2. 填写配置打开 contract_review_configured.py,填写文件顶部的配置项:
3. 运行
运行成功后,可登录 DocFlow Web 页面,在对应工作空间下直观查看每份文件的分类、字段抽取结果和智能审核结果,便于与代码输出对照验证。

预期控制台输出

07 结果说明

抽取结果

处理完成后,合同文件将返回分类结果和字段抽取结果。字段抽取结果位于 data.fields[],每个字段包含 keyvalue 及坐标 position(可用于原文高亮回显)。合同场景使用 DF-M1(复杂文档理解),对长文档的深度理解和字段抽取效果更优。 以下为采购合同样本文件的实际接口返回(来自 file/fetch,省略了部分 position 坐标和字段):

sample_contract.docx

审核结果

审核完成后,可从 review/task/result 接口获取以下信息:
  • status:任务整体状态(1=审核通过,4=审核不通过,2=审核失败)
  • statistics:规则通过数、不通过数汇总
  • groups[].review_tasks[]:每条规则的详细审核结果,包含:
    • review_result:该规则的审核结论(1=通过,4=不通过)
    • reasoning:AI 给出的审核依据说明
    • anchors:依据在原文中的坐标位置(可用于高亮回显)