将PDF转换为Excel
把PDF中的表格提取成真正的.xlsx,可以排序、筛选和求和——直接根据页面本身重建。
- 绝不存储
- 无需排队,无需等待
- 无需注册,无水印
使用方法
添加PDF
拖放包含所需表格的文档。
转换
根据共同的文字基线划分行,根据文字在页面上的起始位置划分列。
下载
每页一个工作表,可以在Excel、Google Sheets、Numbers和LibreOffice中打开。
如何从没有网格的内容中还原出网格
PDF中并不包含表格。它包含的是位于各个坐标的字符,那些看起来像表格的线条只是绘制出来的图形,与其中的文字毫无关联。所以网格是推断出来的,依据两条值得准确了解的规则。行来自共同的基线,垂直位置按4点为一档取整,这样上标或略微抬高的货币符号就不会单独成行。列来自收集页面上每一个不同的左边缘,并把彼此相距8点以内的边缘合并——这是在整页范围内进行的,而不是逐行进行,所以某一行恰好为空的列,在其他行中仍会占据自己的位置。
这就是右对齐的数字成为难点的原因,值得直说,因为这是这里最常见的失望之处。一列右对齐的数字,每一行的左边缘都不同——9.99的起点比1,234,567.89靠右得多——一旦这些边缘相差超过8点,就会被识别为不同的列。因此,一张财务表格可能会被分散到本该是一列的好几列中。左对齐和居中对齐的列没有这个问题。恰好落在同一单元格中的两段文字会用空格连接,而不会互相覆盖。
单元格在输出时会被判定类型:凡是能干净解析为数字的,都写成数字,可以求和;其他所有内容都写成文本。常见的会计格式修饰无法解析——千位分隔符、末尾的百分号、货币符号,或写成(1,234)这样带括号的负数——所以这些单元格会变成看起来是数字、却无法求和的文本。Excel自带的“分列”功能一次就能修复整列。
每一页都会成为单独的工作表,依次命名为Page 1、Page 2等,而不会拼接成一张连续的表格——一张跨三页的表格会变成三个工作表,表头重复出现。转换过来的只有数值。公式本来就不在PDF中,无从还原;填充颜色、边框、字体、合并单元格和图表则被有意不做重建,因为靠猜测生成它们,只会得到一份看似权威、实则暗藏错误的电子表格。
如果您需要的是别的
表格提取是一个真正的研究课题,有些工具专门只做这一件事。如果表格带有表格线,Tabula是首选:它把绘制的线条当作网格来读取,而不是根据文字位置推断网格,这就彻底解决了右对齐数字的问题。它免费,有点选式界面,并可导出CSV。Camelot在Python中做同样的事,既有针对带线表格的lattice模式,也有针对无线表格的stream模式,还会告诉您它的置信度。
如果版面简单,您只想要可读的结果,Poppler的pdftotext -layout in.pdf out.txt会以纯文本保留各列的间距,可以作为固定宽度数据直接在电子表格中打开,完全跳过推断步骤。而如果PDF是扫描件,这里说的都不适用——没有可定位的文字,需要先进行文字识别(OCR)。
常见问题
PDF中的表格怎么能变成电子表格?
PDF没有表格的概念——只有位于各个坐标的字符。表格网格是重建出来的:共享同一基线的文字成为一行,整页所有文字的左边缘被聚类成列,因此某一行中为空的单元格,在其他行中仍会占据自己的位置。
准确度如何?
对于列对齐一致、带表格线的清晰表格,效果非常好。遇到合并单元格、单元格内换行,以及在页面上位置漂移的列时则比较吃力——如果不了解表格的含义,这些情况本身就确实存在歧义。依赖结果之前请先检查一遍。
数字还是数字吗?
是的。任何能识别为数字的内容都会写成数值单元格,所以求和与公式可以直接使用,而不会把所有内容都当作文本。
我的PDF会被存储在任何地方吗?
不会。每一页都只读取,不存储。
扫描版PDF怎么办?
扫描件中没有可提取的文字。请先使用“PDF文字识别(OCR)”,再进行转换。
小贴士: 合并单元格、多行单元格和位置漂移的列是难点,转换后可能需要整理。格式、颜色、公式和图表不会被重建——只保留数值。每一页PDF都会成为单独的工作表,而不会拼接成一张长表格。
把这个工具放到您的网站上
博客、课程页面或帮助文章均可免费使用。粘贴一段代码,访客就能直接在您的页面上使用。