PDF转Markdown的隐形陷阱:双栏论文如何被压成“文本汤”

双栏PDF转Markdown的真正难点是阅读顺序重建,而非文字提取。
文章讲述一位开发者在构建PDF-to-Markdown API时遇到的典型失败:双栏学术论文被转换后,文字虽未丢失,阅读顺序却被按行交错打碎,导致RAG管线检索到跨栏拼接的语义乱码。作者指出问题核心不在OCR,而在版面语义的丢失。按x坐标固定切分的直觉方案会在跨栏图表、宽表格和混合版式上失效,因为真实版面逐页甚至逐块变化。最终跑通的混合策略包含三层:用垂直连续空白槽检测栏边界、无稳定白槽时回退单栏流、优先采用tagged PDF自带的阅读顺序提示。文章强调版面即语义,建议用跨栏图表等脏数据测试文档管线。
为什么PDF转Markdown总在双栏论文上翻车?
很多人以为PDF转Markdown只是“提取文字”,直到你把一篇双栏排版的学术论文扔进转换器,得到的是这样的结果:A栏第一行、B栏第一行、A栏第二行、B栏第二行……Markdown表面上标题、段落、列表一应俱全,但阅读顺序已经被彻底打碎。
一位开发者最近在构建PDF-to-Markdown API时,就踩进了这个坑。他把转换后的文档喂给RAG(检索增强生成)管线,检索器开始引用跨两栏拼接出的句子——这些chunk在技术上完全合法,语义上却是彻底的胡言乱语。

这个失败模式隐蔽且致命:它不报错,不丢字,只是悄悄把作者的论证结构搅成一锅粥。问题的核心不在OCR,而在版面语义的丢失。
RAG(检索增强生成) 是一种将信息检索与大型语言模型生成相结合的技术架构。其典型流程是:先将文档切分为语义连贯的文本块(chunk),建立向量索引;用户提问时,系统检索出最相关的若干chunk,作为上下文喂给语言模型生成答案。RAG的效果高度依赖chunk的质量——如果chunk本身是跨栏错拼的乱码,检索器会忠实地召回它,模型也会基于错误上下文生成看似合理实则荒谬的回答。这正是PDF版面解析错误在RAG管线中被放大的原因:错误发生在最上游,却会污染整个下游链路。
Tagged PDF(带标签的PDF) 是在PDF文件结构中嵌入了逻辑结构树的一类文档。普通PDF只记录“某个字符画在某个坐标上”,而tagged PDF额外用标签(如P、H1、Table、Figure)描述内容的逻辑角色和阅读顺序,通常由排版软件在导出时生成,或通过OCR/版面分析工具后处理添加。对于文档转换器而言,tagged PDF相当于自带了一份“官方阅读顺序说明书”,可直接采用而无需猜测版面。但现实中大量学术PDF由LaTeX等工具生成,并未保留完整标签,因此这一信号虽然可靠却并不常见,只能作为混合策略中的优先项而非唯一依赖。
几何约束为什么总是“说谎”
开发者最初的修复方案很直觉:按x坐标从页面正中劈开,左边归A栏,右边归B栏。
这个方案在标准双栏正文上表现良好,但很快被现实打脸:
- 跨栏图表:一张横跨两栏的figure,其caption被从中间撕成两半;
- 宽表格:合并单元格的表格跨越中线后,行列关系错乱;
- 混合版式:单栏摘要后接双栏正文,固定中线策略直接失效。
“几何在每一次都以新的方式欺骗我。”开发者在总结中写道。
固定坐标切分的根本问题在于:它假设版面是规则的,而真实学术PDF的版面是逐页甚至逐块变化的。用一条垂直线去概括整页的阅读逻辑,注定会在复杂版式上崩溃。
版面分析(Layout Analysis) 是文档智能领域的核心任务,指从页面图像或PDF坐标信息中识别出文本块、图像、表格、页眉页脚等区域,并推断它们之间的逻辑关系与阅读顺序。常见方法包括基于投影轮廓的切分、基于连通域的分割,以及近年来基于深度学习的区域检测模型(如LayoutLM系列)。本文讨论的白槽检测属于经典的投影法思路:通过统计页面在垂直方向上的空白分布来推断栏边界。理解这一点有助于认识到,几何切分与机器学习版面分析并非互斥——白槽检测可以看作一种轻量、可解释的启发式规则,在规则失效时再回退到保守策略,这与更重的模型方案形成成本与鲁棒性的权衡。
真正有效的方案:白槽检测 + 回退流 + 显式提示
经过多轮试错,最终跑通的是一种混合策略,包含三个层次:
1. 从空白槽(whitespace gutters)检测栏边界
不再固定切分位置,而是扫描页面中垂直方向连续的空白区域——也就是栏与栏之间的“白槽”。当白槽在页面上形成稳定的纵向条带时,才判定存在多栏结构。
这种方法的好处是自适应:单栏页面没有稳定白槽,自然不会被误切;双栏页面的白槽通常贯穿大部分正文高度,检测可靠。
2. 无稳定白槽时回退到单栏流
当页面存在跨栏图表、通栏标题或不规则排版时,纵向白槽会被打断。此时不强行分栏,而是退回单栏阅读顺序。这牺牲了部分栏内顺序的精确性,但避免了最糟糕的跨栏错拼。
3. 优先尊重PDF自带的阅读顺序提示
如果PDF是带标签的(tagged PDF),其中已经编码了作者或生成工具定义的阅读顺序,应当直接采用。现实是tagged PDF比理想中少得多,但一旦存在,它就是最可靠的信号。
版面即语义:给文档管线建设者的建议
这次踩坑引出一个更底层的认知:PDF不是带坐标的文本,而是一种关于“思想如何关联”的视觉论证。当你把它压平成Markdown时,你不是在提取文字,你是在重建作者的意图。每一栏、每个侧边栏、每条引文,都是“什么应该放在一起”的决策。
对于正在构建文档处理管线的人,开发者的建议很直接:用脏数据测试。具体来说:
- 带跨栏图表的论文;
- 含合并单元格的表格;
- 多栏脚注的页面。
“漂亮的PDF是简单的,混乱的才是规格书。”
该转换器最终作为PDF-to-Markdown工具的一部分发布,开发者将白槽检测与回退逻辑内置其中,供有类似需求的管线直接调用。
要点回顾
- 双栏PDF转Markdown的核心难点是阅读顺序重建,而非文字识别;
- 固定x坐标切分会跨栏图表、宽表格、混合版式上失效;
- 白槽检测+单栏回退+tagged PDF提示的混合策略更稳健;
- 测试集应包含跨栏图表、合并单元格表格、多栏脚注等“脏”样本。
相关推荐

零成本搭建AI超级员工系统:智能体自动工作流全解析
深度拆解B站演示的AI超级员工系统:Agent智能体编排、数字人口播、地图与企业获客、24小时智能客服及法务模块全覆盖。分析零成本开户背后的商业逻辑与合规风险,帮助创业者判断这套AI数字员工系统的真实投产比。

Chatbot与AI Agent的本质区别:从对话到执行的跨越
Chatbot和AI Agent有什么区别?本文基于Learn Tech频道的MCP系列讲解,用订机票、笔记摘要等实例说明:Chatbot只给答案,Agent通过思考-行动-观察循环真正完成任务,并拆解模型、工具、记忆、目标四大部件及MCP的桥梁作用,同时讨论Agent的适用边界与权限风险。

免费GitHub仓库:342小时AI课程,从数学到MCP服务器
一个免费GitHub仓库提供342小时AI课程,包含523节课、20个阶段,覆盖数学基础到Agent构建和MCP服务器。支持目标驱动学习,每节课产出可留存的prompt、skill或agent,已有近10万人开始学习。