RAG 知识库问答实战(6):处理表格图片等多模态文档
上一篇用混合召回和重排提高了纯文本证据的覆盖率。然而财报中的数值关系、操作手册里的截图箭头、扫描合同上的印章都无法靠扁平文本完整表达。本篇把解析层扩展为版面元素、表格与图片并让它们仍能进入统一检索和引用链路。一、痛点把页面抽成一串字会丢失关系表格的含义来自行标题、列标题与单元格交叉。若 PDF 抽取结果按阅读顺序变成“华东 120 华南 98 2025 2026”模型无法判断数字属于哪个年份。图片可能承载架构连接、按钮位置或故障现象OCR 只能识别文字不能解释空间关系。扫描页甚至没有文本层需要先检测再 OCR。处理多模态文档的核心不是给每页生成一段长摘要而是建立页面坐标系中的元素模型。每个元素记录类型、边界框、页码、父级标题、原始资源 URI、抽取器版本和置信度。阅读顺序由版面模型决定表格保留二维结构图片保存原图与可检索描述。引用则链接到页码甚至高亮区域。二、原理检索表示与展示证据可以不同表格至少保存三种形式HTML 或二维数组用于忠实展示按行展开的自然语言用于嵌入原始截图用于复核。比如单元格 120 应展开为“2025 年华东区销售额为 120 万元”把表头补进每行。复杂合并单元格要先规范化单位与脚注不能丢失。图片可走两路OCR 文本用于精确词召回视觉语言模型生成的受控描述用于语义召回。若系统支持多模态嵌入也可直接编码图像但仍应保留文字描述以便审计。下面把二维表转换为自包含的行级证据验证表头、单位与来源稳定继承。fromdataclassesimportdataclassdataclass(frozenTrue)classTableEvidence:evidence_id:strtext:strpage:introw_index:intdeftable_to_evidence(headers:list[str],rows:list[list[str]],page:int,unit:str,)-list[TableEvidence]:ifany(len(row)!len(headers)forrowinrows):raiseValueError(ragged table)result[]forrow_index,rowinenumerate(rows,start1):pairs[f{key}{value}forkey,valueinzip(headers,row,strictTrue)]text.join(pairs)f单位{unit}result.append(TableEvidence(fp{page}-r{row_index},text,page,row_index))returnresult headers[地区,2025年,2026年]rows[[华东,120,138],[华南,98,105]]foritemintable_to_evidence(headers,rows,page7,unit万元):print(f{item.evidence_id}\t{item.text})运行输出p7-r1 地区华东2025年1202026年138单位万元 p7-r2 地区华南2025年982026年105单位万元行级证据适合“华东 2026 年是多少”整表证据适合比较与汇总。可以同时索引两种粒度通过parent_table_id关联命中某行后将相关表头与必要邻行一起送给模型。绝不能让模型凭摘要进行精确算术重要数值应从结构化单元格读取并由代码计算。三、实现建立检测、抽取、校验和降级队列PDF 页面先判断是否存在足够文本层没有则以合适分辨率渲染并 OCR。文本型页面也要做版面检测识别标题、正文、列表、表格、图片和脚注。常用工具包括 PyMuPDF、pdfplumber、Unstructured、PaddleOCR、Tesseract 与文档理解模型。选择时用自己的双栏、旋转页、中文表格和扫描质量测试。任何视觉抽取都带置信度。低置信页面进入人工复核或标记为不可回答不要静默写入索引。下例实现一组可自动化的页面质量门输出明确状态和原因便于路由到 OCR、复核或正常索引。fromdataclassesimportdataclassdataclass(frozenTrue)classPageStats:page:inttext_chars:intocr_confidence:float|Nonetable_cells:intmalformed_cells:intdefroute(page:PageStats)-tuple[str,str]:ifpage.text_chars20andpage.ocr_confidenceisNone:returnocr,text layer is nearly emptyifpage.ocr_confidenceisnotNoneandpage.ocr_confidence0.80:returnreview,low OCR confidenceifpage.table_cellsandpage.malformed_cells/page.table_cells0.10:returnreview,table structure is unreliablereturnindex,quality gate passedpages[PageStats(1,850,None,0,0),PageStats(2,0,None,0,0),PageStats(3,120,0.72,20,1),PageStats(4,300,0.95,40,2),]forpageinpages:status,reasonroute(page)print(fpage{page.page}status{status}reason{reason})运行输出page1 statusindex reasonquality gate passed page2 statusocr reasontext layer is nearly empty page3 statusreview reasonlow OCR confidence page4 statusindex reasonquality gate passed图片描述提示应要求陈述可见事实、文本、对象关系与不确定性禁止补猜看不清的数值。保存所用模型、提示版本和原图哈希模型升级后可只重算图片描述。敏感图像调用外部视觉 API 前须完成数据分级和脱敏不能因为“只是索引”绕过合规边界。元素之间的父子关系同样重要。正文中的“如下图所示”应通过页面距离、编号和标题关联到对应图片表格脚注必须挂到表格而非普通段落。检索命中图片描述时可同时取回前置说明和图注但要设置邻域上限。关系边应保存置信度低置信关联不自动用于高风险回答。四、踩坑跨页、单位和坐标变换最容易出错跨页表格可能在第二页重复表头也可能省略表头。合并时用列数、标题和几何位置判断保留原页范围不能仅因两页相邻就拼接。负号、千位分隔、百分号和脚注星号必须经过类型校验。OCR 常混淆0/O、1/l对于金额、日期和编号应加正则与业务范围检查。页面旋转、裁剪和缩放会改变坐标。引用高亮必须保存抽取时页面尺寸与坐标原点并在前端做明确变换。若只存截图坐标换渲染 DPI 后框会偏移。对图表不要仅提取图例文字趋势、轴单位和数据点关系需要视觉模型或专门解析器并在低置信时显示原图供用户核验。还要控制制品体积和重复计算。原始文件、页面渲染图、裁剪元素、OCR JSON 和缩略图分层存储以内容哈希去重并设置生命周期。索引只保存可检索文本与资源引用不把大图直接塞进元数据。处理任务记录 CPU、GPU 与页耗时才能识别某类复杂 PDF 是否拖垮整个队列。五、验证按元素类型分别建立黄金集测试集应包含普通文本、双栏、扫描、旋转页、合并单元格、跨页表、流程图和截图。表格评测单元格准确率、结构相似度及问答正确率OCR 看字符或词错误率图片描述看关键实体与关系覆盖引用验证页码和高亮框。最终还要检查“命中行—取回整表—回答数值”这一端到端路径。本篇让表格与图片成为可追踪证据而非不可见附件。下一篇将进一步约束生成阶段用证据充分性判断、引用校验和声明级溯源减少幻觉。参考来源Unstructured文档元素与 hi_res 策略PaddleOCRPP-Structure 文档分析PyMuPDF文本与图像抽取 觉得有用就点个赞 收藏方便回头查阅有疑问直接在评论区留言我看到都会回。 本文属于《RAG 知识库问答实战》系列持续更新关注不迷路。 文章里的代码都能直接跑。想要可直接 clone 的完整工程 配套部署脚本 / 踩坑清单评论一声或发邮件到cj2664qq.com我免费发你。如果你正好在做类似系统、或有工程化难题想找人做也欢迎邮件聊一句——我按实际情况评估能落地的就接单或出方案。评论和邮件都能直接找到我不用跳别的平台。

相关新闻

为什么选择Quelpa?探索Emacs Lisp包即时构建的核心优势

为什么选择Quelpa?探索Emacs Lisp包即时构建的核心优势

为什么选择Quelpa?探索Emacs Lisp包即时构建的核心优势 【免费下载链接】quelpa Build and install your Emacs Lisp packages on-the-fly directly from source 项目地址: https://gitcode.com/gh_mirrors/qu/quelpa Quelpa是一款专为Emacs用户设计的包管理…

2026/10/25 9:39:37 阅读更多 →
华为MetaERP Oracle Fusion SCM DOO(Distributed Order Orchestration)销售订单管理核心业务基表全集前置说明Fusion OM 底层模块全称

华为MetaERP Oracle Fusion SCM DOO(Distributed Order Orchestration)销售订单管理核心业务基表全集前置说明Fusion OM 底层模块全称

Oracle Fusion SCM DOO(Distributed Order Orchestration)销售订单管理核心业务基表全集前置说明Fusion OM 底层模块全称DOO 分布式订单编排,对标 EBS R12 OE销售订单模块;全部业务基表均带_ALL行级多组织隔离(ORG_ID&…

2026/10/26 17:35:48 阅读更多 →
告别传统WiFi4!ESP32C6 WiFi6如何让小智AI助手性能翻倍?

告别传统WiFi4!ESP32C6 WiFi6如何让小智AI助手性能翻倍?

告别传统WiFi4!ESP32C6 WiFi6如何让小智AI助手性能翻倍? 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 还在为你的AI语音助手反应迟钝、网络…

2026/10/26 20:17:13 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →