01 场景说明
在企业合同管理业务中,法务部门需要对每一份合同进行系统性审核,主要关注以下三个维度:- 财务条款审核:金额计算与大小写一致性、税率合规性、付款条件与比例明确性、违约金/滞纳金合理性等。
- 法务合规审核:必备条款完整性、签约主体信息一致性、权力义务明确性、知识产权归属等。
- 文本质量审核:数字计算校验、跨条款逻辑一致性、错别字与语义歧义检测等。
合同审核场景只需配置一个文件类别(采购合同),但规则较多(3 个规则组、22 条规则),覆盖合同审核的常见风险点。
02 业务流程

工作空间、文件类别和审核规则库只需配置一次,后续可持续复用——直接上传新的合同文件并创建新的审核任务即可。本示例为演示完整流程,将配置步骤和处理步骤放在同一段代码中运行。
03 先决条件
- 登录 TextIn 控制台,获取
x-ti-app-id和x-ti-secret-code - 下载示例样本文件,或使用自己的采购合同文件
04 类别与字段配置
本示例只配置一个文件类别:采购合同。合同是复杂的长文档,字段较多,建议使用 DF-M1(复杂文档理解) 以获得更准确的抽取效果。采购合同(样本:sample_contract.docx)
采购合同(样本:sample_contract.docx)
采购合同包含主体信息、标的条款、财务条款、法务条款等多个维度的字段,全部为基本信息字段:
05 审核规则配置
本示例的审核规则库包含 3 个规则组、22 条审核规则,全面覆盖合同审核的常见风险:规则组 1:财务条款审核(12 条规则)
规则组 1:财务条款审核(12 条规则)
规则组 2:法务合规审核(9 条规则)
规则组 2:法务合规审核(9 条规则)
规则组 3:文本质量与一致性审核(3 条规则)
规则组 3:文本质量与一致性审核(3 条规则)
06 代码结构说明
示例代码将完整的七步流程放在一起运行。在实际生产中,步骤 1、2、5 只需执行一次;后续审核新合同时,只需重复步骤 3、4、6、7,直接复用已有配置即可。参见 合同审核场景(已完成配置)。 示例代码中的函数分为两类,理解这一点有助于对照 API 文档进行调试和扩展。两类函数
REST API 调用函数 — 每个函数直接封装一个 API 端点,函数参数与接口文档一一对应:
工具辅助函数 — 不直接对应 API 端点,提供公共基础能力或封装轮询/展示逻辑:
逐步代码说明
步骤 2:创建采购合同类别
步骤 2:创建采购合同类别
合同字段较多,直接在
create_category 的 fields 参数中一次性传入所有字段,无需额外调用 batch_add_category_fields。- Python
- Java
步骤 3:上传待处理文件
步骤 3:上传待处理文件
DocFlow 提供两种上传方式:方式二:同步上传(直接返回抽取结果,跳过步骤 4)
- 异步上传
file/upload:立即返回batch_number,需配合步骤 4 轮询file/fetch获取结果,适合批量并行上传 - 同步上传
file/upload/sync:等待处理完成后直接返回抽取结果(结构与file/fetch一致),无需轮询,适合对接简单或文件量少的场景
- Python
- Java
- Python
- Java
步骤 4:获取抽取结果(使用同步上传时可跳过)
步骤 4:获取抽取结果(使用同步上传时可跳过)
若步骤 3 使用了同步上传
file/upload/sync,则已直接获得抽取结果,可跳过本步骤。fields 数组包含所有抽取到的字段和值。- Python
- Java
抽取结果示例

审核结果示例

07 完整示例代码下载
完整可运行代码(含 Python、Java 两个版本)已内置在文档仓库的examples/ 目录下:
Python 示例
查看 Python 完整示例代码
Java 示例
查看 Java 完整示例代码
08 运行示例
- Python
- Java
环境要求:Python 3.8+1. 安装依赖2. 填写配置打开 3. 运行
contract_review.py,填写文件顶部的配置项:预期控制台输出
成功运行后,控制台将输出如下内容(workspace_id、category_id 等 ID 因运行环境不同而变化):09 结果说明
抽取结果
处理完成后,合同文件将返回分类结果和字段抽取结果。字段抽取结果位于data.fields[],每个字段包含 key、value 及坐标 position(可用于原文高亮回显)。合同场景使用 DF-M1(复杂文档理解),对长文档的深度理解和字段抽取效果更优。
以下为采购合同样本文件的实际接口返回(来自 file/fetch,省略了部分 position 坐标):
sample_contract.docx
sample_contract.docx
审核结果
审核完成后,可从review/task/result 接口获取以下信息:
status:任务整体状态(1=审核通过,4=审核不通过,2=审核失败)statistics:规则通过数、不通过数汇总groups[].review_tasks[]:每条规则的详细审核结果,包含:review_result:该规则的审核结论(1=通过,4=不通过)reasoning:AI 给出的审核依据说明anchors:依据在原文中的坐标位置(可用于高亮回显)

