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

01 场景说明

在 AP(应付账款)审单业务中,财务人员每次付款前需要对一组采购单据进行交叉核验。典型的单据组合包括:
  • 发票(含数电票、纸质增值税专用发票/普通发票等):记录销售方/购买方信息、开票金额和税率
  • 采购订单(PDF/Word):约定供应商信息、合同金额、税率和产品明细
  • 收货单(PDF):记录实际收货数量、物料信息及关联的采购订单号
通过 DocFlow,您只需配置一次分类和字段,后续上传的单据即可自动完成分类识别结构化信息抽取;配置好审核规则库后,还可对多份单据进行跨文档智能审核,自动发现供应商不一致、金额超标、数量异常等问题。

02 业务流程

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

03 先决条件

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

04 类别与字段配置

本示例配置四个文件类别,均通过 category/create 接口创建并配置字段。

国内票-数电票(样本:sample_invoice.pdf)

增值税电子发票(数电票),包含发票号码、开票日期、购买方/销售方名称及税号、价税合计等基本信息字段,以及商品明细表格字段:
示例样本文件,可点击查看或下载:sample_invoice.pdf
字段名类型
发票号码基本信息字段
开票日期基本信息字段
价税合计基本信息字段
税前金额基本信息字段
税额基本信息字段
销售方名称基本信息字段
销售方纳税人识别号基本信息字段
购买方名称基本信息字段
购买方纳税人识别号基本信息字段
发票备注基本信息字段
商品名称表格字段
规格型号表格字段
单位表格字段
数量表格字段
单价表格字段
金额表格字段
税率表格字段
税额表格字段

采购合同(样本:sample_contract.pdf)

采购合同是约定交易条款的核心文件,包含合同编号、甲乙方信息、金额、税率和产品明细。字段配置同时使用基本信息字段表格字段
示例样本文件,可点击查看或下载:sample_contract.pdf
字段名类型
编号基本信息字段
甲方基本信息字段
乙方基本信息字段
签订日期基本信息字段
合作期间基本信息字段
支付条款基本信息字段
乙方银行账户信息基本信息字段
开票信息基本信息字段
违约金条款基本信息字段
采购物料/服务数量基本信息字段
合同类型基本信息字段
采购金额基本信息字段
采购单价基本信息字段
税率基本信息字段
乙方税号基本信息字段
采购物料/服务基本信息字段
产品型号表格字段
产品说明表格字段
单价表格字段
数量表格字段
金额表格字段

入库单(样本:sample_inbound.pdf)

入库单是仓库收货的凭证,记录实收数量、物料信息和供应商信息。字段配置同时使用基本信息字段表格字段
示例样本文件,可点击查看或下载:sample_inbound.pdf
字段名类型
收货单编号基本信息字段
收货日期基本信息字段
对应合同号基本信息字段
供应商名称基本信息字段
仓库/库位基本信息字段
物流单号基本信息字段
入库总金额基本信息字段
收货结论基本信息字段
备注基本信息字段
仓库收货人基本信息字段
仓库收货人日期基本信息字段
质检确认基本信息字段
质检确认日期基本信息字段
供应商送货人基本信息字段
供应商送货人日期基本信息字段
供应商税号基本信息字段
收货入库明细-物料编码表格字段
收货入库明细-物料描述表格字段
收货入库明细-单位表格字段
收货入库明细-应收表格字段
收货入库明细-实收表格字段
收货入库明细-差异表格字段
收货入库明细-质检表格字段
收货入库明细-签收人表格字段

验收单(样本:sample_acceptance.pdf)

验收单是确认货物/服务交付质量的凭证,仅包含基本信息字段:
示例样本文件,可点击查看或下载:sample_acceptance.pdf
字段名类型
项目名称基本信息字段
合同编号基本信息字段
甲方单位名称基本信息字段
乙方单位名称基本信息字段
甲方验收人基本信息字段
乙方施工人基本信息字段
交付内容基本信息字段
验收说明基本信息字段
验收结论基本信息字段
验收数量基本信息字段
验收日期基本信息字段
乙方税号基本信息字段

05 审核规则配置

本示例的审核规则库包含 2 个规则组、12 条审核规则,覆盖跨单据业务一致性核验和文档完整性预检两个维度:

规则组 1:业务一致性审核(跨单据交叉核验)

规则名称风险等级审核逻辑
供应商一致性 高风险若均存在税号,则发票销售方税号 = 合同乙方税号 = 入库单供应商税号;否则比对名称
金额匹配 高风险发票价税合计金额 ≤ 采购合同总金额;框架协议(金额为空或 0)时不校验
数量一致性(入库单维度) 中风险若发票含商品明细,则发票数量合计 ≤ 入库单实收数量合计
标的一致性 低风险合同约定的规格型号须与入库单、发票中的规格型号一致;未约定规格型号时校验标的物描述是否指向同一商品
税率一致性 中风险发票各行税率须与合同约定税率一致;合同未约定税率时跳过
验收结论校验 中风险验收单的验收结论须为合格/通过/验收通过/同意验收或类似认可状态
数量一致性(验收单维度) 中风险若发票含商品明细且验收单有合格数量,则发票数量合计 ≤ 验收单合格数量
合同关联性 中风险入库单合同编号 = 采购合同编号;验收单合同编号 = 采购合同编号
跨文档规则的 category_ids 包含多个分类 ID,只有当审核任务覆盖所有关联分类时,该规则才会被触发执行。

规则组 2:文档采集与预处理审核

规则名称风险等级审核逻辑
信息完整性校验 中风险检查四类文档齐全性并核验各文档必填字段非空(详见审核点说明)
发票日期合规性 中风险发票开票日期 ≥ 合同签订日期
购买方信息匹配 高风险发票购买方名称 = 上海合合信息科技股份有限公司;购买方税号 = 91310110791485269J
税率合规性校验 中风险货物类税率应为 13%,服务类应为 6%,小规模纳税人应为 1% 或 3%

06 代码结构说明

示例代码将完整的七步流程放在一起运行,便于理解端到端的调用链路。在实际生产中,步骤 1、2、5(创建工作空间、配置文件类别、配置审核规则库)只需执行一次;后续处理新单据时,只需重复步骤 3、4、6、7(上传文件 → 获取抽取结果 → 提交审核任务 → 获取审核结果),直接复用已有的配置即可。参见 AP 审单场景(已完成配置) 示例代码中的函数分为两类,理解这一点有助于对照 API 文档进行调试和扩展。

两类函数

REST API 调用函数 — 每个函数直接封装一个 API 端点,函数参数与接口文档一一对应:
函数(Python)方法(Java)对应 API 端点说明
create_workspacecreateWorkspacePOST /workspace/create创建工作空间,返回 workspace_id
create_categorycreateCategoryPOST /category/create创建文件类别并上传样本,返回 category_id
batch_add_category_fieldsbatchAddCategoryFieldsPOST /category/fields/batch_add为已有类别追加字段(用于添加表格字段)
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:创建含表格字段的文件类别

国内票-数电票、采购合同和入库单均包含表格字段,需先创建类别(配置基本信息字段),再通过 batch_add_category_fields 追加表格字段。table_id=-1 表示挂载到默认表格。

步骤 3:上传待处理文件

文件上传支持两种模式,可根据业务场景选择:
  • 异步上传file/upload):上传后立即返回 batch_number,需配合步骤 4 轮询 file/fetch 获取抽取结果。适合大批量文件并发处理。
  • 同步上传file/upload/sync):上传后等待处理完成,直接返回抽取结果,无需轮询。适合单文件或少量文件的实时场景。
方式一:异步上传(需配合步骤 4 轮询)
方式二:同步上传(直接返回抽取结果,跳过步骤 4)

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

若步骤 3 使用了同步上传 file/upload/sync,则已直接获得抽取结果,可跳过本步骤。
异步上传后,需轮询 file/fetch 接口等待处理完成:

步骤 5:配置跨文档审核规则

跨文档规则在 category_ids 中传入多个分类 ID。DocFlow 会从各分类已抽取的结果中提取规则关联字段,交由 AI 统一判断。

抽取结果示例

抽取结果示例

审核结果示例

审核结果示例

07 完整示例代码下载

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

Python 示例

查看 Python 完整示例代码

Java 示例

查看 Java 完整示例代码

08 运行示例

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

预期控制台输出

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

09 结果说明

抽取结果

处理完成后,每份文件将返回分类结果和字段抽取结果。字段抽取结果位于 data.fields[],表格字段位于 data.items[][],每个字段包含 keyvalue 及坐标 position(可用于原文高亮回显)。 以下为发票样本文件的实际接口返回(来自 file/fetch,省略了部分 position 坐标):

sample_invoice.pdf

审核结果

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