记一次把 PDF 里的表格提取成 Excel 的过程(含踩坑)
背景
手上有一份 PDF 版的岗位能力说明文档(公开资料,10 页),里面有几页是表格:岗位名称、岗位描述、关键技能。要把这些数据弄到 Excel 里做后续整理。
复制粘贴试过,PDF 里选中的文字粘到 Excel 全是一坨,行列结构完全丢失。写脚本的话,pdfplumber 我是熟的,但这次环境是新机器,Python 环境都没配,为 5 张表装一套环境有点不值。于是找了在线方案,记录一下过程和结果。
过程
打开 PDF 转 Excel 工具,上传文件,输出格式选 xlsx。页码范围可以指定(比如 1-3,5),我直接留空转全部。文档是文字版 PDF,不是扫描件,所以没勾 OCR。

点「开始转换」,10 页的文档等了大概 20 秒,提示处理完成,下载结果文件。

结果检查
拿到 xlsx 打开看,转换结果按页分 sheet:第4页、第5页、第6页、第7页、第9页——正好是原 PDF 里带表格的 5 页,没表格的页自动跳过了,这一点挺省心。
表格内容提取基本准确,但有两个坑要提一下:
坑一:合并单元格变成 None。 原表里跨行合并的单元格,在 xlsx 里只有第一行有值,其余是空的。后续用 pandas 处理要补一句:
import pandas as pd
df = pd.read_excel('result.xlsx', sheet_name='第4页', header=None)
df = df.ffill() # 向下填充合并单元格产生的空值
坑二:单元格内换行断字。 PDF 里一个单元格的长文本按行拆开,转换后中间带了换行符,"安全测 试"这种断词出现了几处。清洗时把换行替换成空字符串即可:
df = df.replace({r'\n': '', r'\s+(?=[\u4e00-\u9fff])': ''}, regex=True)
这两个问题不是这个工具特有的,pdfplumber 直接提取也会有,本质是 PDF 格式本身不存"表格"概念,所有表格提取都是在做版式推断。
小结
- 文字版 PDF + 规则表格:在线工具直接可用,10 页 20 秒出结果
- 扫描件:需要勾 OCR,准确率低一档,重要数据要人工复核
- 合并单元格、换行断字是通用坑,拿到结果后花两分钟清洗
适合"临时处理一两份文档"的场景。如果是每天都要跑的批处理,还是老老实实写 pdfplumber 脚本接进 pipeline。

浙公网安备 33010602011771号