为什么?
因为 PDF 是排版格式,不是数据格式。简单的文本 PDF,抽文本当然可以。可一旦碰到扫描件、表格、图表,纯文本抽取就完蛋了。
哈喽大家好,我是二哥呀。今天继续用 3 分钟,拆一道 Agent 高频面试题。
面试官问这道题,表面在问方案,实际考三件事:
第一,为什么 PDF 对 RAG 是个难题;第二,解析、分块、检索三个环节你有没有针对 PDF 做过专门优化;第三,碰到性能瓶颈你怎么权衡。
接下来给你满分回答,照着背就完事了。四招。
第一招,版面感知解析。拿到 PDF 先判断类型。有文本层的电子 PDF,用 PyMuPDF、pdfplumber 拿文字和坐标;扫描件、复杂表格,上 OCR 或多模态模型,把标题、正文、表格、图片区域分别识别出来。
第二招,表格和图片单独处理。简单表格用抽取工具保留行列;扫描表格、跨页表格,用 OCR 或多模态模型转成 Markdown Table 或 JSON,页码、坐标、源文件 ID 一起存。图片同理,提标题、提主题,必要时保留原图供二次精读。
第三招,动态分块。不要按 500 字符一刀切。PDF 要按标题层级、段落、表格来分。普通段落在句子边界切;表格单独成 Chunk;图片说明单独成 Chunk。相邻 Chunk 保留 overlap,命中小 Chunk 后能回溯父块补上下文。
第四招,上下文锚点。每个 Chunk 的元数据里存页码、章节标题、相邻 Chunk ID、源文件 ID。普通 RAG 按规则扩展相邻 Chunk 就行;Agent 场景更进一步——把【读上一页】【查原始表格】封装成 Tool,让 LLM 自己判断证据够不够,不够就补读。
面试官如果追问:加了视觉模型和 OCR,延迟怎么办?
告诉他——入库阶段把解析结果缓存起来,同版本文档再次问答直接复用。查询阶段先走混合检索加重排,只有命中表格或图片、证据不足时,才触发多模态模型精读原页。
最后一句口诀——先看是不是纯文本PDF,如果是就直接提取;否则上 OCR 或者多模态模型。
这道题你学废了吗?想解锁更多 Agent 面试题的源码级拆解,点赞关注,我是二哥,下期见!


