使用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
  • 在处理 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 文件。 此阶段相当于是搭建转换流程的“基础框架”。
  • 接下来进入整篇文章的核心——如何从 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)
  • 最后,执行保存操作即可生成完整的 Word 文件。 doc.SaveToFile(output_docx, FileFormat.Docx) Word 文档会按前述的结构与样式生成,可直接打开查看,也适用于进一步编辑、排版或作为报告的一部分。
  • 为了便于查阅,下面整理本文中主要使用到的类、属性与方法。 类 / 方法 说明 PdfDocument 表示 PDF 文档对象,负责加载源文件 PdfTableExtractor 从 PDF 页面中解析表格的核心类 ExtractTable(page_index) 返回指定页面的表格集合 Document Word 文档对象 AddSection() 添加文档节,用于插入表格、段落等内容 section.AddTable() 在 Word 中创建新表格 ResetCells(row, col) 根据行列数初始化 Word 表格结构 AppendText() 向表格单元格写入文本 DefaultTableStyle Word 表格样式枚举 AutoFitToWindow 表格宽度自动适配页面
  • 通过本文示例,你已经了解如何使用 Python 自动化实现 PDF 表格 → Word 表格 的完整流程。从 PDF 识别表格、解析行列结构,到在 Word 中创建并填充内容,整个过程高度自动化,特别适用于批量处理与业务系统集成场景。 相比手动复制格式凌乱、在线工具功能受限、桌面工具难以批量处理,代码方式具有更高的灵活性与可控性。你可以在此基础上扩展更多能力,例如批量转换、内容清洗、模板合并、文本识别(OCR)等,为企业类文档处理提供稳定高效的解决方案。 如果你正在处理大量 PDF 表格或需要长期的文档自动化流程,这种基于 Python 的方案将为你的工作带来显著提升。 以上就是使用Python将PDF表格自动提取并写入Word文档表格的详细内容,更多关于Python PDF表格提取并写入Word的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python PDF识别之文本内容与表格提取方法总结 使用Python实现自动填写PDF表格 Python实现精准提取 PDF中的文本,表格与图片 Python实现pdf电子发票信息提取到excel表格 Python使用Camelot从PDF中精准获取表格数据
  • 目录
    • 引言
    • 1. 加载 PDF 文件并准备 Word 文档
    • 2. 提取 PDF 表格并创建 Word 表格
      • 关键步骤解析
        • (1)逐页读取 PDF 表格
        • (2)动态创建 Word 表格
        • (3)处理单元格内容
        • (4)自动表格宽度适配
    • 3. 保存 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

          在处理 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 文件。

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

          接下来进入整篇文章的核心——如何从 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)

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

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

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

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

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

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

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

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

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

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

          word_table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)

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

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

          doc.SaveToFile(output_docx, FileFormat.Docx)

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

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

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

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

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

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

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

          您可能感兴趣的文章:

          • Python PDF识别之文本内容与表格提取方法总结
          • 使用Python实现自动填写PDF表格
          • Python实现精准提取 PDF中的文本,表格与图片
          • Python实现pdf电子发票信息提取到excel表格
          • Python使用Camelot从PDF中精准获取表格数据

          站内搜索