☰
OCR 把字都认出来了,RAG 为什么还答错?给 PDF 解析补上这四类检查
2026/10/14 13:34:26 网站建设 项目流程

财报里的公司名、年份和金额明明都能搜到,提问“2024 年收入是多少”,模型却一本正经把 2023 年那一列的数值报了出来。

这时候继续死磕 Prompt 往往没用。错误在进入向量库之前就已经注定了:OCR 确实把文字抓全了,却把表格里的二维对应关系拆了个稀烂。检索模块捞回来的,是一段关键词齐全、但语义结构完全错位的废料。

评估 PDF 解析质量,不能只看字认全了没有。更该问一句:下游问答真正依赖的事实与拓扑关系,到底还在不在?

字符相似,并不等于信息等价

在实际工程里,评估文本相似度很容易踩坑。

一页公式只丢一个负号,编辑距离(Levenshtein Distance)可能极低,计算出的数值含义却完全相反。一篇双栏排版的论文,如果左右栏被逐行交替交叉拼接,字符一个没丢,阅读顺序却全毁了。

反过来,两篇各自独立的并列短文,只要各自内容完整,整篇 A 排在 B 前面还是后面,很多时候根本不影响下游问答。死抠一份“标准文本”做逐字 Diff,反而会误判合理的解析输出。

Ai2 在olmOCR-Bench里的测试设计给了大家一个务实的思路:不搞虚头巴脑的全文大分流,而是针对页面的关键事实直接下断言——某段文字是否命中、某段脏数据是否被过滤、图文阅读顺序是否正常、表格的邻接关系是否保留。把业务不能翻车的底线逻辑,拆成小而严谨的单元测试。

第一类:该在的必须在,不该在的一律清掉

拿合同来说,编号必须精确存在,金额前面的负号绝不能丢;全篇重复出现的页眉页脚不能混进正文段落;完全空白的扫描页,也绝不能被大模型凭空脑补出几句废话。

刚开始做验证集时,挑少量高价值的业务字段即可。千万别把整页文档的所有文字都标成关键字段,否则又会退化回难以维护的全文比对泥潭。

“反向检查”同样关键。如果业务要求剥离页眉,可以写规则验证宣传语有没有污染正文;如果遇到空白页,就检查输出字符数是否严格落在允许的微量水印阈值之内。

第二类:顺序理顺,语义才谈得上上下文

双栏论文常规都要读完左栏再读右栏;标题、正文、脚注各有职责,不能只按视觉坐标机械地从上到下硬切。

最基础的单向顺序检查可以这么写:

def comes_before(text, first, second): a, b = text.find(first), text.find(second) return a >= 0 and b >= 0 and a < bassert comes_before( "方法说明\n实验结果", "方法说明", "实验结果")

这只是最简的确定性断言。如果文档里有同名小标题或重复词,一定要结合页码与章节范围做限定,防止前文的匹配项替后文背书。

第三类:表格检查,核心是查“谁对应谁”

假设原表是一行营业收入,横跨两列年份:2023 年是 100,2024 年是 120。输出结果哪怕同时包含了“营业收入、2023、2024、100、120”,也说明不了任何问题。

真正要验证的是键值绑定:营业收入—2023—100以及营业收入—2024—120。另外,表头的单位千万别丢,“万元”漏掉了比错认一个标点更容易引发业务事故。

如果下游系统要把Markdown表格解析为结构化数据,可以直接在结构化对象上校验行键与列键;跨页表格还要专门测试续表表头是否对齐。遇到原图模糊不清的格子,宁可留空,也绝不能让模型擅自推算填充。

文字、顺序、表格关系和页码共同决定可用性

如果解析完成后,后续还要做细粒度的实体与关系抽取,网上有网友整理了一套《1200集 NLP自然语言处理全栈体系课》,里面的“信息抽取—关系抽取”模块很适合作为进阶参考:https://yunpan.plus/t/7667。不过要明确的是,这一步解决的是“实体间逻辑关系”的抽象,替代不了前置 PDF 解析层对物理版面的还原校验。

第四类:答案溯源,链路必须能指回原页

文档入库时,至少要打牢基础元数据:文档 ID、版本号、文件物理页码;遇到表格,把表格编号和对应的 Bounding Box 一起存下来。检索返回片段时,务必带着这套坐标一起交给生成端。

这样当终端用户追问“这个数据出自哪里”时,前端直接高亮定位原 PDF 页面,而不是任由大模型现场编造一段虚假解释。这里还要留意:PDF 文件的物理页序与排版印刷页码往往不一致,解析时记得分开存储。

怎样搭一套低维护成本的验收集

挑二十页覆盖典型脏数据的样本作为启动集:双栏混排、跨页宽表、旋转方向错误、低分辨率扫描件、带分式的数学公式、复杂页眉页脚,各选几页。二十页虽然不能代表全部样本的泛化率,但足够用来快速拦截退化。

针对每一页写下 3 到 5 条核心断言,同时记录解析时间与重试情况。一旦更换底层解析引擎、调了图像渲染 DPI 或改了版面分析模型,重新跑一遍这套样本,就能清楚知道改动到底是修好了老问题,还是悄悄弄崩了某些合格页。

致命缺陷必须单列设阻断,比如金额串行、正负号翻转、幻觉凭空填补。绝不能让海量纯文本页面的高分,把这几个核心业务页面的翻车给平均掉。

做完这四类检查,再把清洗干净的页面喂给下游的 Chunking、检索与回答流水线。如果断言全部跑通但 RAG 依然答错,再去排查向量检索的 Top-K 召回率或者 Prompt 上下文组装。每一层把自己的责任边界吃透,遇到 Bug 就不至于两眼一抹黑,只会盲目“换个更大参数的模型”。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询