RAG 知识库表格图表多模态解析与入库质量治理落地

日期:2026-08-18

一、项目背景

我们客户的知识库一半是带表格和图表的 PDF,原来只抽文字,表格里的型号参数、图表里的趋势全丢了,检索出来答非所问,业务方说这库不如不看,宁可翻原文件。我们抽样看了一百篇,纯文字抽取丢掉的正是他们最想问的参数和对比,这库价值直接腰斩,建了等于没建。更现实的是,业务方问得最多的恰恰是“某型号和某型号差在哪”,答案全在对比表里,文字里一个字没有,库答不出来他们就觉得这系统是摆设。

二、落地场景

现在解析流水线先还原版面,表格按结构抽成行列,图表提取数据点转成可读文本,多模态切片把文字、表格、图表各自成块又保留版面关系。入库前跑质量校验,结构错乱、字段缺失、图表数据点抽飞的脏数据拦截在门外。业务方检索时,问参数能命中表格块,问趋势能命中图表块,问综述能命中文字块。运营同学往库里传新产品手册,不用再手动把表格敲成结构化数据,管线自己吃进去。

三、关键技术挑战与解决思路

表格结构还原是第一道关,合并单元格、跨页表最折磨人,我们用版面分析定位表格区域,再按行列线还原,合并单元格记跨度不丢。图表数据提取难在把图还原成数,折线柱状我们做 OCR 加坐标映射,抽出来的点校验单调性再存,抽飞的点直接判异常。多模态切片对齐要保证文字和旁边的图表是一对,我们按版面坐标做邻接关联,避免张冠李戴。入库质量校验是最后防线,脏数据不卡住就进库带偏答案,我们建了结构完整性、字段非空、数据点合理三道校验,挂掉的退回去重抽。还有版本管理,手册更新后旧表要能追溯,我们按文档版本存切片。

案例片段(已脱敏): 表格图表解析与质量校验配置片段(字段示意):parse:  layout: true  table: { merge_cell: span, cross_page: stitch }  chart: { ocr: true, coord_map: true, monotonic_check: true }  chunk: { multimodal: true, adjacency: by_coord } qc:  checks: [structure, not_null, point_valid]  on_fail: re_extract一次拦截:某产品手册表格跨页被截断,结构校验发现行数不全,退回去重抽补齐,避免了一个型号参数缺失进库答错,那次要是放出去,业务方拿错参数去报价就麻烦了。

解析流水线的性能我们也调过,带表格图表的 PDF 解析比纯文字慢几倍,我们做了异步队列,上传后后台慢慢解,业务方不用等。版面分析的误判我们留了人工抽检通道,抽中的文档人工看一眼结构对不对,这步上线初期每天必做,结构稳了才降到抽检。多模态切片的邻接关系存了坐标,检索时图和说明一起返回,业务方问图表能直接看到原图片段,这体验比纯文字答强太多,他们愿意用库也是因为答得有出处。

四、效果数据

表格抽取准确率从原来只抽文字时的基本为零可用,到结构还原后约九成五。图表信息召回让问趋势类问题有了着落,问答准确率整体提了一截。入库失配因为我们加了三道校验,脏数据进库的比例从约百分之五降到接近零。业务方态度反转最明显,从不用库到周活上来了,问参数问对比的命中让他们真信了这库。文中数据为项目复盘口径,已做脱敏。

五、可复用经验总结

知识库别只抽文字,表格图表里才是真干货,这话说多少遍都不过分。我们吃过一次脏表进库把答案带偏的亏,业务方拿着我们给的错参数去报价,闹得挺大,从此质量校验不敢省。版面分析是地基,表格图表定位不准后面全歪,跨页表和合并单元格必须特殊处理。多模态切片按坐标邻接关联,比按章节切靠谱,不然图和说明分两家,问图表答文字。版本管理别漏,手册更新后旧切片留着,出问题能回溯。

解析质量这关,机器永远替代不了最后一道人眼,我们保留抽检不是不信任系统,是给系统兜底。业务方信库,是从一次次答得对攒出来的,脏数据一次就能把信任打没。

结语

RAG 知识库最值钱的东西,往往藏在表格和图表里,可多数解析只抽文字,等于把精华扔了。我们客户那批产品手册,型号参数、对比趋势全在表里图里,纯文字抽取后业务方问参数答不上,库成了摆设。版面分析是第一步,表格区域定位不准,后面还原全歪,合并单元格记跨度、跨页表拼接,这两处我们调得最久。图表还原成数靠 OCR 加坐标映射,抽完还要校验单调性,不然抽飞一个点趋势就反了,那次抽飞的点我们查了半天才发现是坐标映射偏移。多模态切片按版面坐标做邻接,图和它的说明绑一起,比按章节切稳,张冠李戴的笑话少了很多。质量校验是底线,结构完整、字段非空、数据点合理三道,挂了退回去重抽,脏数据进库带偏答案的教训我们付过真金白银。版本管理那步是后来补的,手册大版本更新后旧切片没留,排查一次历史答错费了劲,从此按文档版本存。业务方从不用到周活上来,靠的不是多灌语料,是把表格图表真正读进去了。