Skip to main content
本文以 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:业务一致性审核(跨单据交叉核验)

跨文档规则的 category_ids 包含多个分类 ID,只有当审核任务覆盖所有关联分类时,该规则才会被触发执行。

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

06 代码结构说明

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

两类函数

REST API 调用函数 — 每个函数直接封装一个 API 端点,函数参数与接口文档一一对应: 工具辅助函数 — 不直接对应 API 端点,提供公共基础能力或封装轮询/展示逻辑:

逐步代码说明

步骤 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:依据在原文中的坐标位置(可用于高亮回显)