PDF 表格转 Markdown:列结构识别

表格是 PDF 中最难完整取出的内容,因为 PDF 本身并不知道自己包含表格。数据里没有行、没有单元格、也没有边框,只有恰好对齐的坐标文字。还原表格,就是识别这种对齐。

23 条评价,满分 5 分中的 5.0 分

把 PDF 或 Word 拖到这里

或从电脑中选择文件

PDF 或 Word (.docx) · 最大 50 MB

如何把 PDF 中的表格提取为 Markdown?

把 PDF 拖入本页转换器。连续若干行中对齐到相同列位置的文字会被判定为表格,并输出为 GitHub Flavored Markdown 管道表格。

为什么直接复制 PDF 表格会变成一团乱?

复制返回的是绘制顺序的文字而非阅读顺序,且 PDF 中没有单元格边界。列结构必须由横坐标重新推导,而复制粘贴并不做这件事。

PDF 表格转 Markdown 的步骤

  1. 1

    转换文档

    把 PDF 拖入转换器,表格会与正文一起被自动识别。

  2. 2

    核对列数

    将预览与原件对照。某一列始终为空,通常说明源文件中有跨两列的表头。

  3. 3

    修正个别单元格

    直接在左侧窗格编辑 Markdown。管道表格是纯文本,增删或合并单元格都是小改动。

  4. 4

    复制到目标位置

    把表格粘贴到 GitHub、Obsidian、README 或文档站点,GFM 管道表格在这些地方都能渲染。

表格识别的工作原理

PDF 中每一段文字都带有横坐标与宽度。当两段文字之间的水平间距超过正文字号约一点五倍时,转换器就在此处切分该行:这个距离远宽于词间距,又窄于分栏间隙。

仅凭这一条会在两端对齐的段落上误判,因为它们同样含有较宽的间隙。因此识别器追加了第二个条件:这些间隙必须落在连续多行的相同位置上。随机的词间距不会跨行对齐,真正的列则始终对齐。

只有当至少连续两行共享至少两个重复出现的列位置时,该区块才会输出为表格,其余内容一律保持为段落文字。

能保留与不能保留的内容

Markdown 的表格语法刻意保持简单,这为任何转换器所能保留的内容设定了硬性上限。

  • 保留:列结构、行顺序、单元格文字,以及单元格内的加粗与斜体
  • 保留:首行视为表头,与绝大多数文档的排版习惯一致
  • 丢失:合并单元格在 Markdown 中没有对应写法,会被压入最左侧一列
  • 丢失:嵌套表格、单元格底色、边框与列宽
  • 近似:跨多行折行的单元格文字会被合并为一个单元格

识别困难的情况

列对齐不一致的表格最难处理:单元格逐个居中,或右对齐的数字列紧挨着左对齐的相邻列且间隙很窄。识别器的取向是宁可把文字留作段落,也不凭空生成一个并不存在的表格,因为错误的表格比纯文本更难清理。

财务报表、价目表、规格表与对比表通常转换良好;带方框字段的密集表单则通常不行,因为它们的结构来自绘制的矩形,而非文字对齐。

常见问题

可以只提取表格、跳过其余内容吗?
不能自动完成。整份文档都会被转换,表格保持在原位。由于输出是纯文本,删掉周围段落只需几秒。
跨页的表格怎么处理?
每一页单独识别,因此跨页续排的表格会产生两个表格。合并它们只需删除重复的表头行。
右对齐的数字列能识别吗?
通常可以。识别按单元格左边缘聚类,因此宽度不一的右对齐数字列偶尔会被拆开,请与原件核对合计数。
可以直接输出 CSV 吗?
目前不行。Markdown 管道表格用表格软件或一小段脚本即可转为 CSV,CSV 导出已列入计划。

相关转换工具

Further reading