规则 vs LLM:B2B 文档提取该怎么选?
一句话结论
不要把 LLM 当成所有文档提取问题的默认答案。模板稳定、吞吐量高、审计要求强时,规则系统更合适;客户多、版式变化大、字段命名不可控时,LLM 才真正体现价值。
这篇文章讲了什么
原文作者用同一个 B2B 订单 PDF 提取任务做了两遍实现:
- 第一版:OCR 加正则规则。
- 第二版:OCR 加本地 LLM。
任务看起来很简单:从 PDF 订单里提取客户 ID、采购订单号、交付日期和订单明细。
现实问题是,不同客户的 PDF 长得不一样:
- 有的写
PO Number。 - 有的写
Order Reference。 - 有的把字段放在左上角。
- 有的把字段放在右下角。
- 日期格式也可能不同。
人看一眼就知道这些字段是什么意思,但传统自动化系统并不天然理解“语义等价”。
规则方案的优点和问题
规则方案的典型链路是:
- 用 OCR 把 PDF 转成文本。
- 用正则表达式匹配字段。
- 把匹配结果写入结构化输出。
它的优点很明确:
- 快。
- 便宜。
- 可解释。
- 方便审计。
- 对固定模板非常稳定。
但它的问题也很明确:
- 字段名一变,规则可能失效。
- 版式一变,定位逻辑可能失效。
- 客户越多,规则越多。
- 长尾模板会把维护成本拖高。
文章里的例子很典型:当文档使用 PO Number 时,正则能正常提取;当另一个文档把同一含义字段写成 Order Reference 时,原规则直接返回空值。
这不是正则写得差,而是规则系统本来就缺少上下文理解能力。
LLM 方案的价值
LLM 方案仍然需要 OCR,但后面的提取逻辑变了:
- 不再逐个写字段规则。
- 而是告诉模型:请提取这些业务字段,不管它们在文档中怎么命名。
它的优势在于语义理解:
- 能把
PO Number和Order Reference理解为同类字段。 - 能从不同位置找到目标信息。
- 能顺手做一些格式归一化,例如把不同日期格式转成统一格式。
这就是 LLM 在非标准化文档里的核心价值:减少模板适配和规则维护。
但 LLM 不是免费午餐
LLM 方案带来的不是“无成本智能”,而是另一组成本:
- 推理慢:文章测试中单份文档约 20 到 40 秒。
- 资源重:本地 LLaMA 3 模型约 4.7GB。
- 成本更高:大批量文档会放大算力和并发压力。
- 可解释性弱:模型为什么这样抽取,不如正则清楚。
- 合规更难:金融、医疗等场景可能需要更强审计链路。
所以问题不应该是“规则好还是 LLM 好”,而应该是:
- 文档变化有多大?
- 模板长尾有多长?
- 每天处理多少份?
- 错误成本有多高?
- 是否需要审计可解释?
推荐判断标准
优先用规则的场景
- 少数模板覆盖大部分业务。
- 文档字段稳定。
- 每天处理量很大。
- 延迟和成本敏感。
- 需要明确可解释和可审计。
一个简单判断:如果前 5 种模板覆盖 90% 以上订单,先用规则,不要过早引入 LLM。
优先考虑 LLM 的场景
- 客户很多,每个客户文档都不同。
- 字段名、位置、格式经常变化。
- 长尾模板维护成本很高。
- 提取任务需要语义理解。
- 可以接受更高延迟和成本。
如果是 200 个客户对应 200 种模板,而且还在持续变化,LLM 就值得认真评估。
更现实的方案:混合架构
生产里通常不必二选一。更稳的方案是混合架构:
- 高频稳定模板:用规则处理。
- 低频长尾模板:用 LLM 处理。
- 规则失败或置信度低:交给 LLM 兜底。
- LLM 输出:再做结构校验和人工抽检。
- 高风险字段:保留人工复核或二次验证。
这样可以同时保留规则系统的速度和成本优势,也利用 LLM 处理变化和长尾。
对团队的启发
引入 AI 前,先算一笔账:
- 规则维护成本是多少?
- LLM 推理成本是多少?
- 错误修复成本是多少?
- 业务增长后哪一项会先失控?
如果规则维护已经成为主要瓶颈,LLM 是好工具。
如果现有模板稳定、吞吐量很大,贸然上 LLM 可能只是把简单问题复杂化。
可执行落地建议
- 先统计历史文档模板分布,找出高频模板和长尾模板。
- 对高频模板继续使用规则,保证速度和成本。
- 抽取一批长尾样本,用本地 LLM 或 API 做小规模验证。
- 不只看准确率,也要记录延迟、成本、失败类型和人工复核成本。
- 如果采用 LLM,必须加结构化校验、置信度策略和异常回退流程。
原文信息
- 原文标题:I Built the Same B2B Document Extractor Twice: Rules vs. LLM
- 原文链接:http://towardsdatascience.com/i-built-the-same-b2b-document-extractor-twice-rules-vs-llm/
- 项目代码:https://github.com/Sari95/ocr-pdf-extraction-regex-vs-llm
适合转发的一句话
文档提取不是“上不上 LLM”的问题,而是“模板变化带来的维护成本,是否已经超过 LLM 的算力、延迟和审计成本”。