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

2025-12-07 20:50

本文主要是介绍使用Python将PDF表格自动提取并写入Word文档表格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将...

引言

在实际办公与数据处理场景中,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.LoadFphpromFile(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.ExtraChina编程ctTable(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.CharactejsrFormat.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)自动表格www.chinasem.cn宽度适配

word_table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)

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

3. 保存 Word 文档

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

doc.SaveToFile(output_docx, FileFormat.Docx)

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

提取写入结果

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

关键类与方法说明表

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

类 / 方法说明
PdfDocument表示 PDF 文档对象,负责加载源文件
PdfTableExtractor从 PDF 页www.chinasem.cn面中解析表格的核心类
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的资料请关注编程China编程(www.chinasem.cn)其它相关文章!

这篇关于使用Python将PDF表格自动提取并写入Word文档表格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156383

相关文章

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav