简介:RAG、知识库与办公 Agent 常因复杂版面、跨页表格和扫描件而失效。本文从解析定位、三类真实文档实测、解析前后对照实验到企业知识服务架构,系统说明如何把非结构化文档转成可追溯、可消费的结构化数据,帮助开发者降低 Agent“看不懂文档”的失败率。
很多团队在搭建 RAG 知识库或文档型 Agent 时,会默认模型“读得懂 PDF”。但现实往往是:模型能读文字,却读不懂版面。
典型问题包括:
这些问题本质上不是模型能力不足,而是输入形态不对。大模型消费的是 token 流,不是版式信息。它不知道表格的行列结构,不理解合并单元格的数据归属,也不掌握人类阅读顺序。因此,在 Agent 处理文档之前,必须先把文档转成模型能够精确消费的结构化数据。
这也是文档解析从 OCR 的附属话题变成 AI Infra 核心环节的原因。只要业务涉及合同、招投标文件、研报、财报、技术手册等复杂文档,解析质量就直接决定下游 Agent 的效果。
很多开发者会把文档解析等同于 OCR。实际上,现代文档解析的职责已经远超文字识别。它需要完成以下几件事:
只有完成这些工作,Agent 才能在后续任务中做到“定位到页、引用到单元格”。
为了验证解析能力,我准备了三份典型业务文档:
同时,我使用一套开源解析引擎作为参照,观察两者在实际输出上的差异。
跨页表格是文档解析最常见的难点。很多引擎会把每一页的表格独立输出,导致上一页表头与下一页数据割裂。
在文档 A 的解析结果中,目标解析器做到了:
相比之下,开源引擎出现了明显问题:第二页开始重新生成表头,第三页的部分行被错误合并到上一行中。对于后续要做字段抽取或数据入库的场景,这种错误会导致严重的数据污染。
文档 B 是扫描版合同,文字清晰度一般,但包含印章和少量手写批注。直接送入多模态模型,确实能读出部分内容,但对金额、日期等关键字段,模型会出现“合理猜测”的情况。
解析方案的处理链路则是先做版面增强和文字识别,再对关键字段进行位置绑定和价值提取。最终输出中,每个关键字段都带来源页码和坐标。后续让 Agent 回答“合同金额是多少”时,它不再只给一个数字,而是能够说明该数字出现在第几页的哪个位置。
文档 C 的双栏结构对阅读顺序判断要求很高。部分开源方案会把左右栏交叉拼接,导致逻辑断裂。
实测中,解析结果在以下几个方面表现稳定:
这些能力对文档型 Agent 尤其重要,因为一旦内容顺序错误,后续的摘要、问答、知识抽取都会出现系统性偏差。
为了量化解析质量对下游任务的影响,我设计了一组对照实验:
测试集包含 30 个问题,覆盖以下类型:
结果显示:
这说明一个关键结论:在复杂文档场景中,解析质量对最终效果的影响远大于模型本身的参数差距。 很多团队反复调模型、换框架,却忽略了上游数据结构的质量,属于典型的“用战术勤奋掩盖战略问题”。
将解析集成到 Agent 系统时,建议采用分层数据架构:
原始文档│▼版面解析:标题、段落、表格、图片、阅读顺序│▼结构化中间层:Markdown / JSON,带页码和区块 ID│▼切块与索引:按结构边界切分,保留元数据│▼Agent 检索 / 问答 / 抽取
关键设计原则包括:
当企业中有多个 Agent 并行工作时,单次解析已经不够。不同 Agent 可能分别处理合同审核、招投标分析、客户资料整理等任务,如果各自维护一份文档理解结果,容易出现重复解析、元数据不一致和来源无法统一管理的问题。
企业知识服务引擎的定位,就是把文档解析、字段抽取、知识入库和检索理解串成一条完整链路。它向上承接各类文档包,向下服务多个 Agent,让不同 Agent 共享同一份“记忆”。
典型能力包括:
在这种架构下,Agent 从“能读文档”升级为“能用文档”。业务系统不再依赖某个单点解析结果,而是基于一套可治理、可审计、可复用的一致性知识层运行。
如果你正在搭建文档型 Agent,建议按以下顺序推进:
文档解析不是模型能力的替代,而是模型能力的放大器。下层数据结构越干净,上层 Agent 表现越稳定。把这一层做好,很多看似“模型幻觉”的问题,其实会从源头消失。