案例研究 —— Verdict

Verdict 是我独立发起的货运单证审核原型。我负责流程、系统边界与评测设计,并使用 AI 辅助实现。它把单证中的冲突字段及其依据放进同一个复核流程。

问题

货运信息分散在提单、发票、装箱单和各类声明中。复核者要找出缺失单证,以及数量、重量或交易方的矛盾,再整理清楚交接内容。我把这些比较集中到一个工作流里,让支撑判断的细节始终可见。

围绕复核流程设计,而不只是接入模型

  • 权限与变更都有边界

    身份认证后仍检查案件归属;预检完成后,需要先重开流程,才能改变已复核的输入。

  • 单个失败不拖垮整批

    有限重试与逐文件失败处理,让一份文件抽取失败不至于丢掉整批结果。

  • 每条发现都能查回依据

    发现指出冲突对应的规则、单证、字段和值。人核实这些依据,并在采取行动前审核跟进草稿。

我最关键的设计选择

把提取与判断分开:模型给出字段,成文规则产生系统结论。 schema 校验检查结构,不证明字段真实正确。合规审查报告用 SHA-256 标识该工作流的规则集快照;它标识规则字节,不证明结论正确。

架构

  1. 输入

    单据

    汇集单据,保留字段来源。

  2. AI 外围

    提取候选字段

    模型提取字段;提取内容仍可能出错。

  3. 确定性内核

    检查结构

    校验格式与类型,不证明内容真实。

  4. 确定性内核

    执行成文检查

    规则赋予系统状态,并指出对应发现。

  5. 人的判断

    人工复核

    人检查证据与遗漏,再决定下一步。

辅助起草 · 不属于确定性判定内核

模板与模型辅助生成跟进草稿;发送或采取行动前由人审核。

可追溯记录

  • 审计日志
  • 字段更正
  • 文档版本

记录帮助检查输入与变更,不代表内容已经被证实。

模型输出先通过结构校验边界,再由成文检查赋予复核状态。人核实发现,并决定下一步。
展开实现细节
单据分类
启发式分类器 → LLM 兜底
模型提取
JSON-mode 抽取
结构校验
Zod schema 校验
确定性检查
(57 条,跨两个工作流)
规则输出
复核状态 + 发现

谁来决定什么

事项确定性规则LLM
系统复核状态(通过/复核/拦截)核实发现;决定下一步
从单据里抽字段schema 校验更正界面
单据分类先走关键词启发式置信度低时兜底
跟进邮件模板引擎起草辅助一律经人复核
规则评分(不是概率)结合发现解读

已记录的验证

原型记录包含 9 种单据、跨两个工作流的 57 项检查。项目记录列有 ~1,000 个测试用例、8 轮对抗测试,以及测试、类型、构建与 lint 的 CI 检查,不代表覆盖全部现实场景。2026-06 的评测在 511 个合成英文文本字段上取得 96.3% 字段一致率(归一化与数值容差);额外允许子串包含时为 99.0%。这不衡量 PDF 解析或 OCR。

数据边界与供应商选择

模型调用位于独立的供应商接口后,与判定引擎分开。已实现 DeepSeek 与 MiniMax,并通过配置选择;在单个供应商内有限重试,不做跨供应商自动故障转移。新增后端需要适配器与验证。公开示例使用合成数据;任何实际部署都需要另外评估数据处理、托管环境与供应商要求。

评测范围与项目状态

独立原型,持续开发中。公开示例与已公布评测使用合成样例。已记录的评测使用从人工撰写的基准真值重建的干净英文文本,未评测 PDF 解析、OCR、扫描件、照片、其他版式或实际业务单证。系统检查用于辅助复核,不授权运输,也不替代专业判断。规则实现不等于专业或监管验证。这里不主张任何生产流量下的性能。

路线图快照 · 2026-06-12(开发中 · 已设计)

  • 开发中 HS 编码归类:确定性层已在跑(在一份 5,613 条 AHECC 数据集上做关键词匹配,外加关税与自贸协定查询,由三个端点提供)。它上面那条 AI 辅助路径是一个什么都不返回的桩,而且没有界面
  • 已设计 合规副驾,回答「为什么」类问题(只读)
  • 已设计 邮件会话进件编排

历史状态记录:2026-06-12

← 返回站点