使用指南 · 2026年10月22日
PDF 转 txt 为什么排版会乱:理解 PDF 没有"段落"这件事
PDF 只记录每个字画在哪个坐标,不记录段落和换行。理解这一点,就知道排版错乱的原因和应对办法。
PDF 里其实没有"行"
一份 PDF 的内容流是一串绘图指令,大意是"在坐标 (72, 700) 处用这个字体画这几个字"。没有段落标记、没有换行符、没有"这里是一段"的概念。
你在阅读器里看到的整齐排版,是阅读器根据坐标渲染出来的视觉效果,而不是文档里存着的结构信息。
提取工具在做什么
既然没有结构,提取就必须重建:把同一基线上的文字碎片按横坐标排序,把纵坐标相近的碎片归为一行,再根据字符间距判断该不该补空格,最后按行序输出。
这个重建过程对规则排版的文档效果很好,对下列情况会失准:双栏排版(两栏基线接近,容易串行)、公式(坐标跳跃)、竖排文字、带大量艺术字的封面。
怎么改善结果
- 按页分段提取,而不是一次提取整本——单页内的问题不会扩散到全文
- 双栏文档先拆分左右栏再提取(如果文档里两栏是独立文本框)
- 提取后在编辑器里用正则批量整理:连续空行合并、行尾连接、去多余空格
- 公式、图表页直接跳过,用截图代替
什么时候别用文本提取
如果文档是扫描件,根本提取不出内容,应该走 OCR。如果目的是保留排版用于打印或展示,应该转成图片而不是 txt。文本提取的定位始终是"拿到可复制的内容",不是"还原版式"。
用查找替换整理结果的实操
提取出来之后,大部分排版问题都能用编辑器里的查找替换快速修掉。下面这几条在大多数编辑器(VS Code、Sublime、记事本++、Word)里都适用。
另一条实用经验:先把整篇粘进纯文本编辑器(如 VS Code),而不是直接粘进 Word。Word 会自动纠正、自动套用格式,反而会把问题藏起来;纯文本编辑器的结果最接近内容的真实状态,处理干净之后再粘进 Word 排版。
- 删掉行首多余空格:搜索「^ +」替换为空(Word 里用 ^p 表示段落标记,需要先开启通配符)。
- 合并被拆开的行:搜索「([^。!?;])$\n」这类模式的处理要看具体文档,简单做法是只保留真正的段落结尾换行,其余换成空格。
- 把连续两个以上的空行压成一个:搜索「\n{3,}」替换为「\n\n」。
- 删掉页眉页脚:它们通常是每页重复的固定字符串,用"全部替换为空"一次就能清干净。
- 修正被拆开的英文单词:搜索「-\n」替换为空,把跨行的连字符还原。
双栏文档的专项处理
双栏是文本提取最容易串行的排版。原因是左右两栏的文字基线高度非常接近,按 Y 坐标聚行时会被判定为同一行,于是左栏的句子和右栏的句子交替出现,读起来完全不通。
处理办法有两个。一是先用拆分工具把页面按左右分开(前提是文档里两栏是独立的文本框,很多学报的排版确实如此),再分别提取。二是接受串行结果,把内容粘进表格工具后手动按列拆分——工作量大但一定能做对。
最简单的判断方法:看提取结果的第一段。如果读起来像是两句话交替拼接,就是串行了。早发现比晚发现好,避免在错误结果上继续加工。