python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python PDF表格提取并写入Word

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

作者:大丸子

在实际办公与数据处理场景中,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()

说明:

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

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 中创建结构一致的表格。

(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的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文