使用Python将PDF表格自动提取并写入Word文档表格

 更新时间:2025年12月07日 14:26:48   作者:大丸子  
在实际办公与数据处理场景中,PDF 文件里的表格往往无法直接复制到 Word 中,本文将介绍如何使用 Python 从 PDF 文件中提取表格数据,并将其以标准、结构化的表格形式写入 Word 文档,需要的朋友可以参考下

引言

在实际办公与数据处理场景中,PDF 文件里的表格往往无法直接复制到 Word 中,尤其是当表格结构复杂、跨页或包含不规则布局时,手动复制不仅耗时,还容易出现错位、换行混乱或格式被破坏的问题。许多用户也尝试使用在线工具或桌面转换软件,但对批量文档、结构化提取、精准写入 Word 表格的需求来说,自动化方式仍然是最高效、最可靠的解决方案。

本文将介绍如何使用 Python 从 PDF 文件中提取表格数据,并将其以标准、结构化的表格形式写入 Word 文档。整个过程可以实现自动化,无需人工干预,适用于财务报表归档、合同中表格提取、数据治理流程、第三方 PDF 报表转换等多个业务场景。

本文使用的方法需要用到 Free Spire.PDF for Python 与 Free Spire.Doc for Python,可通过pip安装:

pip install spire.pdf.free, spire.doc.free

1. 加载 PDF 文件并准备 Word 文档

在处理 PDF 之前,我们需要先加载源文件并初始化 Word 文档的结构。

from spire.pdf import PdfDocument, PdfTableExtractor
from spire.doc import Document, FileFormat, DefaultTableStyle, AutoFitBehaviorType, BreakType

input_pdf = "sample.pdf"
output_docx = "output/pdf_table_to_docx.docx"

# 载入 PDF 文档
pdf = PdfDocument()
pdf.LoadFromFile(input_pdf)

# 创建 Word 文档
doc = Document()
section = doc.AddSection()

说明:

  • PdfDocument() 用于加载 PDF 文件,为后续表格提取提供基础。
  • Document() 创建 Word 文档对象,所有表格将插入到默认的 Section 内。
  • 我们提前设置输出路径,确保程序可以直接生成可编辑的 .docx 文件。

此阶段相当于是搭建转换流程的“基础框架”。

2. 提取 PDF 表格并创建 Word 表格

接下来进入整篇文章的核心——如何从 PDF 中提取表格数据并写入 Word。

# 提取 PDF 表格数据并写入 Word 文档
table_extractor = PdfTableExtractor(pdf)
for i in range(pdf.Pages.Count):
    tables = table_extractor.ExtractTable(i)
    if tables is not None and len(tables) > 0:
        for i in range(len(tables)):
            table = tables[i]
            # 创建 Word 表格
            word_table = section.AddTable()
            word_table.ApplyStyle(DefaultTableStyle.ColorfulGridAccent4)
            word_table.ResetCells(table.GetRowCount(), table.GetColumnCount())
            for j in range(table.GetRowCount()):
                for k in range(table.GetColumnCount()):
                    cell_text = table.GetText(j, k).replace("\n", " ")
                    tr = word_table.Rows[j].Cells[k].AddParagraph().AppendText(cell_text)
                    tr.CharacterFormat.FontName = "微软雅黑"
                    tr.CharacterFormat.FontSize = 11
            word_table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)
            section.AddParagraph().AppendBreak(BreakType.LineBreak)

关键步骤解析

(1)逐页读取 PDF 表格

ExtractTable(i) 会返回指定页面上解析出的所有表格。
PDF 本身没有真正意义上的“表格结构”,因此工具会根据线条、文本排列、单元格间距识别表格。

这一步决定了能否正确提取表格,是整个流程最重要的环节之一。

(2)动态创建 Word 表格

word_table = section.AddTable()
word_table.ResetCells(row_count, column_count)

利用提取出的行列数,在 Word 中创建结构一致的表格。

  • ResetCells 会在 Word 中按行列生成一个空表格框架。
  • 表格采用 ColorfulGridAccent4 样式,使结果更易读。

(3)处理单元格内容

cell_text = table.GetText(j, k).replace("\n", " ")

PDF 单元格中经常包含换行符,因此写入 Word 前需要清理文本,避免格式错乱。

同样为提升最终文档的可读性,我们对文本进行了基础格式设置:

tr.CharacterFormat.FontName = "微软雅黑"
tr.CharacterFormat.FontSize = 11

使生成的 Word 文档具有更标准、更整洁的视觉效果。

(4)自动表格宽度适配

word_table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)

这一步能让表格自动适配 Word 页面宽度,在不同屏幕、Word 布局里都有良好的可视性。

3. 保存 Word 文档

最后,执行保存操作即可生成完整的 Word 文件。

doc.SaveToFile(output_docx, FileFormat.Docx)

Word 文档会按前述的结构与样式生成,可直接打开查看,也适用于进一步编辑、排版或作为报告的一部分。

提取写入结果

关键类与方法说明表

为了便于查阅,下面整理本文中主要使用到的类、属性与方法。

类 / 方法说明
PdfDocument表示 PDF 文档对象,负责加载源文件
PdfTableExtractor从 PDF 页面中解析表格的核心类
ExtractTable(page_index)返回指定页面的表格集合
DocumentWord 文档对象
AddSection()添加文档节,用于插入表格、段落等内容
section.AddTable()在 Word 中创建新表格
ResetCells(row, col)根据行列数初始化 Word 表格结构
AppendText()向表格单元格写入文本
DefaultTableStyleWord 表格样式枚举
AutoFitToWindow表格宽度自动适配页面

总结

通过本文示例,你已经了解如何使用 Python 自动化实现 PDF 表格 → Word 表格 的完整流程。从 PDF 识别表格、解析行列结构,到在 Word 中创建并填充内容,整个过程高度自动化,特别适用于批量处理与业务系统集成场景。

相比手动复制格式凌乱、在线工具功能受限、桌面工具难以批量处理,代码方式具有更高的灵活性与可控性。你可以在此基础上扩展更多能力,例如批量转换、内容清洗、模板合并、文本识别(OCR)等,为企业类文档处理提供稳定高效的解决方案。

如果你正在处理大量 PDF 表格或需要长期的文档自动化流程,这种基于 Python 的方案将为你的工作带来显著提升。

以上就是使用Python将PDF表格自动提取并写入Word文档表格的详细内容,更多关于Python PDF表格提取并写入Word的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Python下载图片并保存本地的两种方式

    详解Python下载图片并保存本地的两种方式

    这篇文章主要介绍了Python下载图片并保存本地的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Python标准库之sys模块用法详解

    Python标准库之sys模块用法详解

    “sys”即“system”,“系统”之意,该模块提供了一些接口,用于访问 Python 解释器自身使用和维护的变量,同时模块中还提供了一部分函数,可以与解释器进行比较深度的交互,本文就给大家详细的介绍一下Python sys模块,需要的朋友可以参考下
    2023-08-08
  • OpenCV+python手势识别框架和实例讲解

    OpenCV+python手势识别框架和实例讲解

    今天小编就为大家分享一篇OpenCV+python手势识别框架和实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • python的django写页面上传文件及遇到的问题小结

    python的django写页面上传文件及遇到的问题小结

    这篇文章主要介绍了python的django写页面上传文件以及遇到的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Python标准库笔记struct模块的使用

    Python标准库笔记struct模块的使用

    这篇文章主要介绍了Python标准库笔记struct模块的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • django-rest-framework解析请求参数过程详解

    django-rest-framework解析请求参数过程详解

    这篇文章主要介绍了django-rest-framework解析请求参数过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python基于read(size)方法读取超大文件

    Python基于read(size)方法读取超大文件

    这篇文章主要介绍了Python基于read(size)方法读取超大文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python pycharm 同时加载多个项目的方法

    Python pycharm 同时加载多个项目的方法

    今天小编就为大家分享一篇Python pycharm 同时加载多个项目的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python 表达式和语句及for、while循环练习实例

    python 表达式和语句及for、while循环练习实例

    下面小编就为大家带来一篇python 表达式和语句及for、while循环练习实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Python实践之使用Pandas进行数据分析

    Python实践之使用Pandas进行数据分析

    在数据分析领域,Python的Pandas库是一个非常强大的工具。这篇文章将为大家详细介绍如何使用Pandas进行数据分析,希望对大家有所帮助
    2023-04-04

最新评论