博客 / 詳情

返回

使用 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 文檔會按前述的結構與樣式生成,可直接打開查看,也適用於進一步編輯、排版或作為報告的一部分。

提取寫入結果

Python提取PDF表格寫入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 的方案將為你的工作帶來顯著提升。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.