PDF 提取文字,表格和双栏排版为什么全乱了:阅读顺序的真相

· 约 4 分钟 📜 PDF 提取文字

把 PDF 里的字提出来,纯文字的报告一般很顺,但一遇到双栏论文带表格的财报多栏杂志,结果就乱成一团:左右栏串行、表格数字挤作一堆、脚注插进正文中间。很多人以为是工具坏了——其实是 PDF 这个格式的根本特性:它不存”阅读顺序”。理解提取器是怎么”猜”顺序的,就知道什么能提干净、什么注定会乱。

核心真相:PDF 不知道该”先读哪”

PDF 存的是**“每个字画在页面的哪个坐标”,不是”这些字按什么顺序读”。一个字块记录的是:内容、字号、(x, y) 位置。至于”先读左栏还是先读右栏""这行属于正文还是脚注”,PDF 里没有这个信息**。

所以任何提取器都只能靠坐标猜顺序。本工具的猜法(也是业界通用套路):

  1. 把所有字块按 Y 坐标从上到下
  2. Y 坐标相近的算作同一行(容差约半个字高)
  3. 同一行内按 X 从左到右排,间距大就补空格
  4. 连续、字号相同、行距接近的行合并成段落

这套逻辑对单栏、从上到下顺读的文档完美。一旦版面不是”单栏顺读”,就出问题。

为什么双栏会串行

双栏页面的致命点在第 2 步——左栏和右栏的行在同一高度

        实际版面                     提取器看到的"行"
┌─────────┬─────────┐
│ 左栏第1行│ 右栏第1行│  ← 同一 Y   →  "左栏第1行 右栏第1行"
│ 左栏第2行│ 右栏第2行│  ← 同一 Y   →  "左栏第2行 右栏第2行"
│ 左栏第3行│ 右栏第3行│  ← 同一 Y   →  "左栏第3行 右栏第3行"
└─────────┴─────────┘
你想要的顺序:左栏1→2→3,然后右栏1→2→3
实际得到的:  左1 右1 / 左2 右2 / 左3 右3(交替串行)

提取器没有”栏”的概念,只有”高度”。左右栏同高 → 被拼成一行。

应对

  • 先用 PDF 拆分 / 裁剪把左右两栏切成两个独立的单栏页面,分别提取,再拼接
  • 或提取后手工按栏重排(短文可行,长文太累)
  • 需要经常处理多栏 → 用专门做版面分析(layout analysis)的工具

为什么表格会挤成一团

表格在 PDF 里通常是**“定位在网格坐标上的一堆文字 + 画上去的线条”**,没有”第几行第几列”的语义。提取器把同一高度的单元格拼成一行、单元格间用空格隔开:

原表格:
┌──────┬──────┬──────┐
│ 项目 │ 2025 │ 2026 │
│ 收入 │ 100  │ 120  │
│ 成本 │  60  │  70  │
└──────┴──────┴──────┘

提取结果(大致):
项目 2025 2026
收入 100 120
成本 60 70

看着还行?现实里的表格经常有:合并单元格、跨行文字、右对齐数字、空单元格——这些一进坐标分组就错位,数字对不上列。而且中文单元格之间不补空格(见下节),会直接粘成”收入100120”。

应对:本工具输出的是纯文本段落,不重建表格。要结构化表格:

  • Acrobat “导出为 Excel / 表格”
  • 表格专用 OCR / 版面识别工具
  • 本工具只适合提正文段落,不适合提表格

空格是”猜”出来的:中英文差异

PDF 存字时未必存空格。提取器靠相邻字块的横向间距判断补不补空格:间距 > 约 0.3 字宽就补一个。

  • 英文:靠这个补词间空格。间距估偏 → helloworld(该补没补)或 hel lo(不该补补了)
  • 中文(CJK):字与字之间不补空格——否则”你好世界”会变成”你 好 世 界”。所以中文通常整齐,英文偶尔粘连

英文粘连多因原 PDF 字距排版特殊,提取后用查找替换修一遍即可。

Markdown 标题是”按字号猜”的

选 Markdown 模式时,工具会自动加 # 标题——但它不认识”标题”,只看字号比例

字号 ÷ 正文字号判定附加条件
≥ 1.6#该行 < 80 字
≥ 1.3##该行 < 80 字
≥ 1.1###且为单行

正文基准 = 全篇最常见的字号。于是:

  • 字号没拉开的标题(正文 12pt、标题 13pt)→ 识别不出
  • 只加粗不放大的标题 → 识别不出(只看字号不看粗细)
  • 一整行大字的正文(比如大标语)→ 可能误判成标题

应对:标题层级不规整的文档,直接用纯文字 TXT 模式,自己补层级反而省心。

什么能提干净,什么注定会乱

文档类型提取效果建议
单栏纯文字报告✅ 很好直接提,Markdown 模式
有文字层的书籍正文✅ 好Markdown,标题看情况
双栏 / 多栏论文杂志❌ 串行先拆栏或换版面工具
带表格的财报 / 清单❌ 错位换表格导出工具
扫描件 / 图片版⛔ 空白先 OCR
大量公式 / 特殊符号⚠ 丢失变形手工核对

提取前先做的判断

它有文字层吗? 在 PDF 阅读器里试着用鼠标选中一段文字

  • 能选中、能高亮 → 有文字层,本工具可提
  • 选不中、整页像一张图 → 图片版,先 OCR

它是单栏吗? 是 → 放心提;多栏 / 表格 → 先拆或换工具。

一句话总结

PDF 不存阅读顺序,提取器只能按坐标”先上后下、先左后右”猜——所以单栏纯文字提得很干净,双栏会左右串行、表格会挤成一团、扫描件直接空白;本工具只读文字层不 OCR、不分栏、不重建表格,适合提正文段落;多栏先拆栏、表格换导出工具、扫描件先 OCR。

❓ 常见问题

双栏论文提取出来,左栏一句接右栏一句地串在一起,怎么回事?

因为提取器按"同一水平高度算一行"分组,而双栏的左右两栏在同一高度上。PDF 里不存"先读左栏再读右栏"这种顺序,提取器只能看每个文字块的坐标:它先按 Y 坐标从上到下、同一 Y 的按 X 从左到右排。双栏页面里,左栏第一行和右栏第一行在同一高度,于是被当成一行拼起来 → "左栏句子 右栏句子"交替串行。解法:本工具无法自动分栏,只能先用 PDF 拆分 / 裁剪把两栏切成两个单栏页面分别提取,或提取后手工重排。

表格提取出来变成一堆数字挤在一起,行列全没了,能还原成表格吗?

不能,本工具只输出纯文本 / Markdown 段落,不重建表格结构。表格在 PDF 里通常就是"一堆定位在网格坐标上的文字 + 画上去的线",没有"这是第 2 行第 3 列"的语义。提取器把同一水平高度的单元格拼成一行、用空格分隔,于是数字挤在一起,跨行的单元格还会错位。解法:结构化表格建议用能识别表格的专业工具(Acrobat 导出 Excel、或表格专用 OCR);本工具适合提正文段落,不适合提表格。

扫描件 / 图片版 PDF 提取出来是空的,为什么?

因为本工具只读 PDF 里的"文字层",不做 OCR。文字层是 PDF 内嵌的、可选可搜的真文字;扫描件是一张张图片,页面上"看着是字"其实是像素,没有文字层 → 提取结果为空,工具会提示"可能是扫描件,需先 OCR"。解法:先用 OCR 工具把图片识别成文字层,再来提取;或直接用带 OCR 的工具一步到位。判断方法:在 PDF 阅读器里能用鼠标选中文字 = 有文字层,选不中 = 图片版。

中文提取正常,为什么有些英文单词粘在一起或被拆开?

空格是"猜"出来的,中英文规则不同。PDF 存字时未必存空格——提取器靠相邻字块的横向间距判断要不要补空格:间距超过约 0.3 字宽就补一个。英文靠这个补词间空格,间距估偏了就会粘连(helloworld)或多拆(hel lo)。中文则相反——CJK 字符之间不补空格(否则每个字都被隔开),所以中文一般整齐。解法:英文粘连多为原 PDF 字距排版特殊,提取后用查找替换或大小写 / 分词工具修一遍。

Markdown 模式的标题是怎么判断的?为什么有的该是标题却没加 #?

靠字号相对正文的比例猜,不是靠真的"标题"标记。工具先统计全篇最常见的字号当作正文基准,再按比例判定:≈1.6 倍以上→#,1.3 倍→##,1.1 倍且单行→###,且要求该行文字少于 80 字。所以字号没拉开的标题(正文 12pt、标题只有 13pt)识别不出;加粗但不放大的标题也识别不出(只看字号不看粗细)。解法:这类文档用"纯文字 TXT"模式提取,标题层级自己补,反而省事。

📜 打开 PDF 提取文字 TXT / Markdown · 启发式标题段落 · 范围选择

📖 同一工具的其他教程