把 PDF 里的字提出来,纯文字的报告一般很顺,但一遇到双栏论文、带表格的财报、多栏杂志,结果就乱成一团:左右栏串行、表格数字挤作一堆、脚注插进正文中间。很多人以为是工具坏了——其实是 PDF 这个格式的根本特性:它不存”阅读顺序”。理解提取器是怎么”猜”顺序的,就知道什么能提干净、什么注定会乱。
核心真相:PDF 不知道该”先读哪”
PDF 存的是**“每个字画在页面的哪个坐标”,不是”这些字按什么顺序读”。一个字块记录的是:内容、字号、(x, y) 位置。至于”先读左栏还是先读右栏""这行属于正文还是脚注”,PDF 里没有这个信息**。
所以任何提取器都只能靠坐标猜顺序。本工具的猜法(也是业界通用套路):
- 把所有字块按 Y 坐标从上到下排
- Y 坐标相近的算作同一行(容差约半个字高)
- 同一行内按 X 从左到右排,间距大就补空格
- 连续、字号相同、行距接近的行合并成段落
这套逻辑对单栏、从上到下顺读的文档完美。一旦版面不是”单栏顺读”,就出问题。
为什么双栏会串行
双栏页面的致命点在第 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。