Andrew Xia · https://hh0hh.com
案例研究 —— Verdict
Verdict 是我独立发起的货运单证审核原型。我负责流程、系统边界与评测设计,并使用 AI 辅助实现。它把单证中的冲突字段及其依据放进同一个复核流程。
问题
货运信息分散在提单、发票、装箱单和各类声明中。复核者要找出缺失单证,以及数量、重量或交易方的矛盾,再整理清楚交接内容。我把这些比较集中到一个工作流里,让支撑判断的细节始终可见。
围绕复核流程设计,而不只是接入模型
权限与变更都有边界
身份认证后仍检查案件归属;预检完成后,需要先重开流程,才能改变已复核的输入。
单个失败不拖垮整批
有限重试与逐文件失败处理,让一份文件抽取失败不至于丢掉整批结果。
每条发现都能查回依据
发现指出冲突对应的规则、单证、字段和值。人核实这些依据,并在采取行动前审核跟进草稿。
我最关键的设计选择
把提取与判断分开:模型给出字段,成文规则产生系统结论。 schema 校验检查结构,不证明字段真实正确。合规审查报告用 SHA-256 标识该工作流的规则集快照;它标识规则字节,不证明结论正确。
架构
-
输入
单据
汇集单据,保留字段来源。
-
AI 外围
提取候选字段
模型提取字段;提取内容仍可能出错。
-
确定性内核
检查结构
校验格式与类型,不证明内容真实。
-
确定性内核
执行成文检查
规则赋予系统状态,并指出对应发现。
-
人的判断
人工复核
人检查证据与遗漏,再决定下一步。
辅助起草 · 不属于确定性判定内核
模板与模型辅助生成跟进草稿;发送或采取行动前由人审核。
可追溯记录
- 审计日志
- 字段更正
- 文档版本
记录帮助检查输入与变更,不代表内容已经被证实。
展开实现细节
- 单据分类
- 启发式分类器 → 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