跳转到主要内容
本文以采购合同审核为业务场景,演示如何通过 API 完成从创建空间、配置类别、上传合同文件、获取抽取结果到智能审核的完整流程。 如果您刚刚接触 DocFlow,建议先在 Web 页面 体验一下产品的基本功能,再阅读本文。

01 场景说明

在企业合同管理业务中,法务部门需要对每一份合同进行系统性审核,主要关注以下三个维度:
  • 财务条款审核:金额计算与大小写一致性、税率合规性、付款条件与比例明确性、违约金/滞纳金合理性等。
  • 法务合规审核:必备条款完整性、签约主体信息一致性、权力义务明确性、知识产权归属等。
  • 文本质量审核:数字计算校验、跨条款逻辑一致性、错别字与语义歧义检测等。
通过 DocFlow,您只需将合同文件(PDF 或 Word)上传到工作空间,系统即可自动完成结构化字段抽取,并依据预设规则库进行全面智能审核,显著降低人工逐条审阅的时间成本。
合同审核场景只需配置一个文件类别(采购合同),但规则较多(3 个规则组、22 条规则),覆盖合同审核的常见风险点。

02 业务流程

合同审核业务流程
工作空间、文件类别和审核规则库只需配置一次,后续可持续复用——直接上传新的合同文件并创建新的审核任务即可。本示例为演示完整流程,将配置步骤和处理步骤放在同一段代码中运行。

03 先决条件

  1. 登录 TextIn 控制台,获取 x-ti-app-idx-ti-secret-code
  2. 下载示例样本文件,或使用自己的采购合同文件

04 类别与字段配置

本示例只配置一个文件类别:采购合同。合同是复杂的长文档,字段较多,建议使用 DF-M1(复杂文档理解) 以获得更准确的抽取效果。

采购合同(样本: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 文档进行调试和扩展。

两类函数

REST 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

步骤 3:上传待处理文件

DocFlow 提供两种上传方式:
  • 异步上传 file/upload:立即返回 batch_number,需配合步骤 4 轮询 file/fetch 获取结果,适合批量并行上传
  • 同步上传 file/upload/sync:等待处理完成后直接返回抽取结果(结构与 file/fetch 一致),无需轮询,适合对接简单或文件量少的场景
两者的请求参数完全一致,仅 URL 路径不同。方式一:异步上传(需配合步骤 4 轮询)
方式二:同步上传(直接返回抽取结果,跳过步骤 4)

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

若步骤 3 使用了同步上传 file/upload/sync,则已直接获得抽取结果,可跳过本步骤。
合同文档较长,处理时间可能比普通票据更长(建议超时时间设为 180s)。结果中的 fields 数组包含所有抽取到的字段和值。

抽取结果示例

抽取结果示例

审核结果示例

审核结果示例

07 完整示例代码下载

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

Python 示例

查看 Python 完整示例代码

Java 示例

查看 Java 完整示例代码

08 运行示例

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

预期控制台输出

成功运行后,控制台将输出如下内容(workspace_id、category_id 等 ID 因运行环境不同而变化):

09 结果说明

抽取结果

处理完成后,合同文件将返回分类结果和字段抽取结果。字段抽取结果位于 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:依据在原文中的坐标位置(可用于高亮回显)