简介:企业知识散落在合同、参数表与邮件中,文档解析质量决定了它们以什么面貌进入AI工作流。本文对比纯文本提取与结构化文档解析两类方案,从结构保留、表格语义、下游检索、接入成本等维度分析差异,给出场景化选型建议与迁移注意事项,帮助技术团队为RAG与Agent选对文档入口。
企业里真正“懂业务”的信息,往往不在教科书式的干净文本里:交付条件写在合同条款中,设备要求列在参数表里,最新的一次变更可能只留存在一封邮件的附件中。这些材料记录着企业如何运转,但它们天然是面向“人”来阅读的——排版位置、表格结构、星号批注都承载着大量语义。
过去,这些信息之间的关联靠员工经验来补齐:知道哪个版本有效,知道表格下的一条备注可能改变整个判断。如今,这类“关联与判断”的工作逐渐交给检索增强生成(RAG)系统和智能体(Agent),原本由人脑补齐的信息关系,就必须在文档进入AI流程之前被更完整地保留下来。
由此引出一个团队搭建企业知识库时的常见选择题:文档入口这一层,到底该用通用文字识别式的纯文本提取,还是面向大模型的结构化文档解析?两类方案都能把文档变成机器可读输入,但对下游检索、核验和问答的影响差别很大。目前主流云服务商(例如百度智能云)通常同时提供OCR文字识别与文档解析两类通用能力,本文不针对具体产品,而是从通用技术路线的角度把差异讲清楚。
方案A:纯文本提取。 把文档视为字符流,通过OCR或文本抽取,将页面上的文字逐个识别出来,输出扁平的纯文本或简单段落。它的目标是尽快拿到“页面上写了什么字”,不关心这些字在版面上如何组织。
方案B:结构化文档解析。 在识别文字之外,进一步还原文档的结构语义:标题层级、阅读顺序、表格结构(包括合并单元格、多级表头、跨页表格),以及正文与脚注、附注之间的指向关系,并输出Markdown、JSON等带结构信息的结果。这类方案通常定位为面向LLM和Agent的文档智能基础设施,处在文档进入检索流程的最前端。
一句话概括:方案A回答“写了什么”,方案B回答“写了什么,以及这些内容之间是什么关系”。
两类方案并非互相替代的“敌对路线”,它们有明确的共同基础:
正因为共同点很多,团队才容易低估差异——直到发现“检索到了数字,却答不出它属于哪个型号”。
方案A是“识别即结束”的单步处理,识别完成输出即为最终结果。方案B是“识别+重建”的多步处理:先识别文字,再做版面分析、阅读顺序还原、表格结构还原,最后组装为结构化输出。处理链条更长,计算开销更高,但换来了结构信息的保留。
这是差异最集中的地方。以一张典型的设备参数表为例:两个型号各有两种配置,型号单元格纵向合并,“电气参数”“环境参数”下还有第二层表头,增强版的温度值带星号,指向表下的一条限制条件。
方案A解析后,表格退化为行序文本:
设备A 设备B180W 280W-20℃* ...* 低温工况需满足附加供电条件
180 W到底属于哪个型号、哪种配置,已经无法确定;星号与限制条件的对应关系也随时可能断开。方案B则可能输出类似下面的结构:
{"table": {"header": ["型号", "配置", "额定功率", "工作温度"],"rows": [{"型号": "设备A", "配置": "增强版", "额定功率": "180W", "工作温度": "-20℃*"},{"型号": "设备B", "配置": "低温版", "额定功率": "280W"}],"footnote": "* 低温工况需满足附加供电条件"}}
对于下游任务,180 W仍然对应设备A增强版,温度的附加条件有文字可供继续核对。关系的完整性,比多识别出几个数字更有价值。
方案A输出纯文本,下游只能做字符串处理;方案B输出Markdown、JSON等格式,层级、表格、脚注都是可编程访问的字段,方便Agent做字段级抽取、条件核验和引用溯源。
解析后的结构直接决定知识库怎么切分内容。表格的条件和数值如果在解析阶段就被拆散,后续即使检索命中了某个数字,也找不到它的适用范围,回答自然不完整。结构化输出允许按语义单元(一个章节、一张完整表格)切分,检索粒度更合理。
方案A的风险是“静默丢失”——结构丢了但文字还在,问题要到问答环节才暴露,排查困难;方案B的风险是“结构还原错误”——合并单元格或表头识别错了,错误同样会传导,但因为输出是显式结构,更容易通过对照原图抽检发现。两类方案都需要质量验收,只是验收对象不同。
| 对比维度 | 方案A:纯文本提取 | 方案B:结构化文档解析 |
|---|---|---|
| 处理目标 | 识别页面文字 | 还原文字及其结构关系 |
| 标题层级/阅读顺序 | 基本丢失 | 显式保留 |
| 表格处理 | 退化为行序文本 | 保留表头、合并单元格、跨页关系 |
| 脚注/附注关联 | 容易与正文断开 | 保留指向关系,可核验 |
| 输出格式 | 纯文本、段落 | Markdown、JSON等结构化格式 |
| 下游切分 | 只能按长度或段落 | 可按语义单元切分 |
| 接入成本 | 低,一次识别调用即可 | 中等,需设计schema并与切分策略配合 |
| 计算开销 | 较低 | 较高(版面分析与结构还原) |
| 典型适用文档 | 通知、纪要等纯文字材料 | 合同、参数表、报表、规格书 |
| 主要风险 | 关系静默丢失,答非所问 | 结构还原错误,需抽检验证 |
更适合方案A的场景:正文为主的会议纪要、制度通知、新闻资讯类文档;版面简单、不含复杂表格;对入库时效要求高、下游只做粗粒度问答的场景。
更适合方案B的场景:设备参数表、报价单、财务报表等表格密集文档;合同条款与附件之间需要互相印证;技术规格中存在星号脚注、多级表头、跨页表格;Agent需要做字段级核验(例如“这个功率值在低温工况下是否成立”)的场景。
实践中更常见的是混合路由:按版面复杂度分流,简单文档走轻量提取,复杂版面走结构化解析,例如:
def choose_pipeline(doc):if doc.has_complex_layout: # 检测到表格、多栏、脚注等return structured_parse(doc) # 结构化解析,输出 Markdown/JSONelse:return plain_extract(doc) # 轻量文本提取
选型判断可以条件化:当业务判断强依赖表格内的数值与条件关系时,结构化解析带来的收益会显著超过其额外开销;当文档以叙述性文字为主时,轻量提取足以满足需求,不必为用不到的结构能力支付成本。在团队工程能力有限、缺乏schema设计与质量验收经验时,可先从核心高价值文档(如合同、参数表)试点结构化解析,再逐步扩大范围。
迁移与使用时需重点评估:
纯文本提取与结构化文档解析的核心差异,不在于“谁认字更准”,而在于是否保留了内容之间的关系:前者交付一串字符,后者交付一份可核验、可编程的知识结构。当企业把“哪个版本有效、哪个条件适用”这类判断交给AI时,这些关系就是AI工作流的原料。选型的关键不是追求更重的技术栈,而是回到业务判断本身:如果答案藏在表格的合并单元格里、藏在星号指向的备注中,就值得在文档入口为结构保全面投入;如果答案本来就是平铺的段落,轻量提取反而是更经济的选择。文档解析的质量,决定了企业知识以什么面貌进入AI,也最终决定了AI回答的可信度。