夜雨聆风学习资料网

ARTICLE · 1292670

PDF 价目表几十行,用我自制的Ai小工具两分钟抽成能筛选的 Excel

PDF 价目表几十行,用我自制的Ai小工具两分钟抽成能筛选的 Excel
每天用Ai解决一个问题2026.08.22

PDF 价目表几十行,我两分钟抽成能筛选的 Excel · 抽表格

PDF 里的表变活数据

DOODLE

抄进 Excel 不如抽

效率工具

今天带你从零到一做出一个小工具。不是讲概念,是做完你就能用。

咱们要做的,是一个把 PDF 里的表格抽出来、存成 Excel 的东西。你肯定遇到过这种事,收到一份扫描的或者排好版的 PDF 报表,里面的表格你想拿来二次计算,却只能对着看、不能筛选求和。做完这个工具,你把 PDF 丢进去,它把里面的表格一张张抽出来,存成能筛选、能算的 Excel。

先说个小场景。上回供应商发来一份 PDF 价目表,几十行产品带价格,我要挑其中几样比价。盯着 PDF 抄进 Excel 抄到眼晕,还抄错两个数。后来让脚本抽出来,两分钟拿到活表,筛选排序随便搞。

下面每一步都按「你打开什么、复制哪段、存成什么名、怎么跑、看到啥」来写。零基础也能跟。

先看清你要做出来的是个啥

想象一下这个结果。

你手里有一份带表格的 PDF,可能是报价单、统计表、对账单。以前你想用里面的数据,只能手抄或者截图,没法直接筛选求和。

做完这个工具之后,你把它丢进去,跑一下,每个表格变成一张 Excel 表,单元格清清楚楚,你能直接筛选、做公式。原 PDF 不动,Excel 是另存的。

这个工具长这样(用文字描述一下结构)。

你得到的
长什么样
用在哪
输入 PDF
带表格的文档
你留底
输出 Excel
每张表一个工作表
你直接算、筛选
提取记录
抽了几张表、几行
你核对没漏

做出来之后,你省下的是「对着 PDF 手抄数据」的枯燥和易错。

你需要准备的三样东西
准备项
说明
门槛
没有怎么办
Python 环境
电脑上装一次永久用
装一次 Python
跟着第一步装
pdfplumber 库
抽 PDF 表格用
一行命令装
pip 装 pdfplumber
openpyxl 库
写 Excel 用
一行命令装
pip 装 openpyxl

重点说一下 pdfplumber。它是 Python 里专门解析 PDF 的一个库,名字叫 pdfplumber(PDF 镊子,意思是一根根把内容夹出来)。你要的「识别表格线、把格子里的字抽出来」它最在行,比通用复制粘贴准得多,本地运行,文件不出你电脑。

再说一下一个现实预期。排版规整、有明确表格线的 PDF,它抽得相当准。但扫描件(图片型 PDF)它抽不到文字,那种得先 OCR 识别成文字版再抽。所以发过来的如果是扫描件,先走 OCR 这一步。

第一步 装好环境和库

先装 Python,勾上 PATH。命令行输入 `python --version` 看到版本号就行。

然后装两个库。在命令行输入。

pip install pdfplumber openpyxl

看到「Successfully installed」就装好了。如果 pip 找不到,试 `python -m pip install pdfplumber openpyxl`。

第二步 跑提取脚本

把要抽的 PDF 放进「原文」文件夹,和下面脚本同目录,存成「抽表.py」。

import pdfplumber, openpyxl, os, glob  wb = openpyxl.Workbook() wb.remove(wb.active) total = 0  for f in glob.glob("原文/*.pdf"):     with pdfplumber.open(f) as pdf:         for pi, page in enumerate(pdf.pages, 1):             tables = page.extract_tables()             for ti, table in enumerate(tables, 1):                 ws = wb.create_sheet(title="%s_p%d_t%d" % (os.path.basename(f)[:10], pi, ti))                 for row in table:                     ws.append(["" if c is None else c for c in row])                 total += 1                 print("已抽取", os.path.basename(f), "第%d页第%d表" % (pi, ti))  wb.save("表格汇总.xlsx") print("共抽取 %d 张表,已存 表格汇总.xlsx" % total)

命令行进到目录输入 `python 抽表.py`,它会遍历「原文」里每个 PDF,把每页每张表写成 Excel 的一个工作表,最后汇总成「表格汇总.xlsx」。窗口刷出「已抽取 某某 第几页第几表」就成功了。

extract_tables 是什么。你可以把它理解成「让库顺着表格的线,把一格格的字夹出来排成二维列表」,每一行是一个列表,直接喂给 Excel 就能落格。

我踩过的坑

第一个坑,扫描件抽出来是空的。

我第一次拿一份图片型 PDF 抽,结果全空。后来确认那是扫描件,先用 OCR 转成文字版 PDF,再抽就有内容了。

第二个坑,表格没框线,抽出来串列。

有些 PDF 表格只有横线没有竖线,pdfplumber 分不清列,数字串到一起。后来这种我改用它的「按空格切分」策略,或者干脆截图用别的 OCR 表格工具补。

第三个坑,合并单元格被拆散,内容错位。

PDF 里合并的表头,抽出来变成了多个空格加一个值,Excel 里对不齐。后来我在写入时做了简单合并还原,或者手动在 Excel 里补一下表头。

第四个坑,特殊字符导致 Excel 打开警告。

个别奇怪的控制字符进了单元格,Excel 打开报警。后来写入前把不可见字符清掉,干净了。

第五个坑,表格太多,工作表名超长报错。

一个 PDF 十几张表,我用全文件名当表名,超长度限制报错。后来表名只取文件名前几位加页码表号,简短唯一。

怎么知道你做对了

验收很简单。

你拿一份明确带两三个表格的 PDF 试,跑完打开「表格汇总.xlsx」,看每个工作表里的数字是不是和 PDF 对得上、列没串。再用一份真实要用的试,确认关键数据没丢。

还差一步,抽出来的表随便做个求和筛选,确认它是真活表能算,不是死的图片,就对了。

还能再进一步

做出来之后,你可以加几样东西。

一个是自动清洗。抽出来后自动去空行、统一数字格式,直接能进下一步计算,不用手动收拾。

一个是跨文件合并。如果你有一堆同结构的 PDF 表,抽完把同名结构的表拼成一张大总表,像前面讲的多表合并那样。

一个是校验。抽完让脚本核对每表行数列数,异常的红标提醒,防止漏抽。

这几样不是必须,但加上之后,这个工具就从「能用」变成「真顺手」。

做完这件东西之后

我第一次把供应商价目表抽成 Excel,两分钟挑完要对比的几样,比手抄快了不知多少倍,还没抄错。以前这种活我总拖,因为抄到第三页就开始串行。

后来我发现,PDF 里的数据卡住我的不是「没有」,是「拿不出来」。一旦能抽成活的,后面分析全顺了。

你不用懂 PDF 解析,不用装专业软件。你要的只是「把 PDF 丢进去、跑一下、拿走 Excel」。剩下的是 pdfplumber 帮你夹。

提醒一句,扫描件先 OCR 再抽,这一步省不掉。

可复制的方法表
步骤
动作
注意
装环境
Python 勾 PATH,pip 装 pdfplumber openpyxl
装完验证 import
摆文件
PDF 放原文文件夹
扫描件先 OCR
跑脚本
抽表.py,python 抽表.py
无框线表可能串列
看结果
表格汇总.xlsx 每张表一工作表
表名简短防超长
验收
数字对得上、能筛选求和
合并单元格手动补
进阶
自动清洗、跨文件合并、校验
异常红标提醒

我是 Jeff,每天用 AI 解决一个真实问题。这一篇,是我替你亲自试过的。

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见

赞
在看
收藏

THANKS FOR READING

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料