PDF 提取表格到 Excel(含扫描版),断网批量可用

📅 2026/7/3 1:15:03 👁️ 阅读次数 📝 编程学习
PDF 提取表格到 Excel(含扫描版),断网批量可用

大家好,这里是办公智能体广场。最近过分的研究了下PDF提取表格到Excel里面的技术,无论是扫描版(图片)PDF 还是 文字可编辑版PDF 。

今天就总结下方案与教程:可以在断网环境将一批PDF里面的表格数据提取到Excel。

一、需求分析

我准备了几个PDF ,其中一个PDF 有63页, 然后在第61页处,有一个表格,如图所示:

然后还准备了另外一个扫描类型(图片)的PDF , 素材来自于公开网络。打开如图:

需要将上面的PDF 提取所有的表格,得到xlsx,我直接先放上面两个图的提取结果示意图:

二、实现方案一:小白上手

打开鲸闲办公智能体广场,找到 “PDF 提取表格到Excel”,如图:

注意,可断网使用!!!

获取: 宫中&浩气: “老罗软件”。然后将所有的PDF 进行输入,如图:

这里,我需要说明一些设置参数的意义。

识别页范围

如果不填,就是会识别PDF所有的页,如果页比较多就会消耗时间较长,尽量设置表格所在的页。

合并跨页表格

有的表格可能跨了PDF的页了, 勾选这个就会智能去合并成一个表格到Excel的一个表单里面。

二次加工设置参数

这个就是已经OCR扫描完成后,对Excel表格进行一些处理,相当于清理脏数据等,比如下面设置:

输出结果

输出结果一个PDF对于一个Excel文件,PDF的每一页都是一个表单Sheet,没有表格的页不会提取出来,如图所示:

三、实现方案二:Python脚本

用 Python 做 PDF / 图片批量抽表入 Excel,对经常要整理发票、对账单、扫描报表、截图表格的人来说,是个很实用的路子。

优势:

  • 可批量处理大量文件,适合成百上千份材料
  • 对扫描件、截图、拍照表格比纯文本抽取更友好
  • 支持 PDF 和常见图片格式,走同一套流程
  • 本地运行,文件不出本机,适合内部资料
  • 不修改原文件,只在输出目录生成 Excel

劣势:

  • 需要一定 Python 基础,首次要装依赖并下载模型
  • 复杂版式、无边框表格、模糊扫描件可能需要人工核对
  • 合并单元格、嵌套表头等结构导出后往往还要再整理
  • 大批量高清 PDF 耗时较长,CPU/GPU 压力较大

下面是一个简单的脚本示例:批量读取目录下的 PDF / 图片,识别表格并导出 Excel。

import os from pathlib import Path from paddlex import create_pipeline # 总目录,可放多个子文件夹 input_root = r"path\to\your\files" # 输出目录 output_root = r"path\to\your\output" Path(output_root).mkdir(parents=True, exist_ok=True) # 支持的输入格式 SUPPORTED_EXT = {".pdf", ".png", ".jpg", ".jpeg", ".bmp", ".webp", ".tif", ".tiff"} # 创建 PaddleX 表格识别流水线(首次运行会自动下载模型) pipeline = create_pipeline(pipeline="table_recognition") def process_file(file_path: Path): ext = file_path.suffix.lower() if ext not in SUPPORTED_EXT: print(f"跳过不支持的文件:{file_path}") return print(f"识别中:{file_path}") # predict 支持单张图片;PDF 会按页识别 results = pipeline.predict(str(file_path)) out_dir = Path(output_root) / file_path.stem out_dir.mkdir(parents=True, exist_ok=True) for i, res in enumerate(results): # 每个识别结果保存为一个 Excel(具体 API 以当前 PaddleX 版本为准) xlsx_path = out_dir / f"table_{i + 1}.xlsx" res.save_to_excel(str(xlsx_path)) print(f" -> {xlsx_path}") def walk_files(root: Path): for path in root.rglob("*"): if path.is_file(): process_file(path) if __name__ == "__main__": walk_files(Path(input_root)) print("所有文件处理完成!")

四、总结

两份 PDF 都测过了:63 页可编辑版(表格在第 61 页)和扫描版,都能批量抽成 xlsx。不想折腾环境,用智能体就行,记得填页码范围、跨页表格按需勾选,导出后不满意再用二次加工清理。材料多、要自定义规则,再上 Python 脚本。两种都本地跑,原文件不动。复杂版式别全信,抽完抽检几份就够。日常发票、对账单、报表归档,这套流程基本够用。