最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python將PDF表格自動(dòng)提取并寫入Word文檔表格

 更新時(shí)間:2025年12月07日 14:26:48   作者:大丸子  
在實(shí)際辦公與數(shù)據(jù)處理場景中,PDF 文件里的表格往往無法直接復(fù)制到 Word 中,本文將介紹如何使用 Python 從 PDF 文件中提取表格數(shù)據(jù),并將其以標(biāo)準(zhǔn)、結(jié)構(gòu)化的表格形式寫入 Word 文檔,需要的朋友可以參考下

引言

在實(shí)際辦公與數(shù)據(jù)處理場景中,PDF 文件里的表格往往無法直接復(fù)制到 Word 中,尤其是當(dāng)表格結(jié)構(gòu)復(fù)雜、跨頁或包含不規(guī)則布局時(shí),手動(dòng)復(fù)制不僅耗時(shí),還容易出現(xiàn)錯(cuò)位、換行混亂或格式被破壞的問題。許多用戶也嘗試使用在線工具或桌面轉(zhuǎn)換軟件,但對(duì)批量文檔、結(jié)構(gòu)化提取、精準(zhǔn)寫入 Word 表格的需求來說,自動(dòng)化方式仍然是最高效、最可靠的解決方案。

本文將介紹如何使用 Python 從 PDF 文件中提取表格數(shù)據(jù),并將其以標(biāo)準(zhǔn)、結(jié)構(gòu)化的表格形式寫入 Word 文檔。整個(gè)過程可以實(shí)現(xiàn)自動(dòng)化,無需人工干預(yù),適用于財(cái)務(wù)報(bào)表歸檔、合同中表格提取、數(shù)據(jù)治理流程、第三方 PDF 報(bào)表轉(zhuǎn)換等多個(gè)業(yè)務(wù)場景。

本文使用的方法需要用到 Free Spire.PDF for Python 與 Free Spire.Doc for Python,可通過pip安裝:

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

1. 加載 PDF 文件并準(zhǔn)備 Word 文檔

在處理 PDF 之前,我們需要先加載源文件并初始化 Word 文檔的結(jié)構(gòu)。

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)

# 創(chuàng)建 Word 文檔
doc = Document()
section = doc.AddSection()

說明:

  • PdfDocument() 用于加載 PDF 文件,為后續(xù)表格提取提供基礎(chǔ)。
  • Document() 創(chuàng)建 Word 文檔對(duì)象,所有表格將插入到默認(rèn)的 Section 內(nèi)。
  • 我們提前設(shè)置輸出路徑,確保程序可以直接生成可編輯的 .docx 文件。

此階段相當(dāng)于是搭建轉(zhuǎn)換流程的“基礎(chǔ)框架”。

2. 提取 PDF 表格并創(chuàng)建 Word 表格

接下來進(jìn)入整篇文章的核心——如何從 PDF 中提取表格數(shù)據(jù)并寫入 Word。

# 提取 PDF 表格數(shù)據(jù)并寫入 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]
            # 創(chuàng)建 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)

關(guān)鍵步驟解析

(1)逐頁讀取 PDF 表格

ExtractTable(i) 會(huì)返回指定頁面上解析出的所有表格。
PDF 本身沒有真正意義上的“表格結(jié)構(gòu)”,因此工具會(huì)根據(jù)線條、文本排列、單元格間距識(shí)別表格。

這一步?jīng)Q定了能否正確提取表格,是整個(gè)流程最重要的環(huán)節(jié)之一。

(2)動(dòng)態(tài)創(chuàng)建 Word 表格

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

利用提取出的行列數(shù),在 Word 中創(chuàng)建結(jié)構(gòu)一致的表格。

  • ResetCells 會(huì)在 Word 中按行列生成一個(gè)空表格框架。
  • 表格采用 ColorfulGridAccent4 樣式,使結(jié)果更易讀。

(3)處理單元格內(nèi)容

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

PDF 單元格中經(jīng)常包含換行符,因此寫入 Word 前需要清理文本,避免格式錯(cuò)亂。

同樣為提升最終文檔的可讀性,我們對(duì)文本進(jìn)行了基礎(chǔ)格式設(shè)置:

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

使生成的 Word 文檔具有更標(biāo)準(zhǔn)、更整潔的視覺效果。

(4)自動(dòng)表格寬度適配

word_table.AutoFit(AutoFitBehaviorType.AutoFitToWindow)

這一步能讓表格自動(dòng)適配 Word 頁面寬度,在不同屏幕、Word 布局里都有良好的可視性。

3. 保存 Word 文檔

最后,執(zhí)行保存操作即可生成完整的 Word 文件。

doc.SaveToFile(output_docx, FileFormat.Docx)

Word 文檔會(huì)按前述的結(jié)構(gòu)與樣式生成,可直接打開查看,也適用于進(jìn)一步編輯、排版或作為報(bào)告的一部分。

提取寫入結(jié)果

關(guān)鍵類與方法說明表

為了便于查閱,下面整理本文中主要使用到的類、屬性與方法。

類 / 方法說明
PdfDocument表示 PDF 文檔對(duì)象,負(fù)責(zé)加載源文件
PdfTableExtractor從 PDF 頁面中解析表格的核心類
ExtractTable(page_index)返回指定頁面的表格集合
DocumentWord 文檔對(duì)象
AddSection()添加文檔節(jié),用于插入表格、段落等內(nèi)容
section.AddTable()在 Word 中創(chuàng)建新表格
ResetCells(row, col)根據(jù)行列數(shù)初始化 Word 表格結(jié)構(gòu)
AppendText()向表格單元格寫入文本
DefaultTableStyleWord 表格樣式枚舉
AutoFitToWindow表格寬度自動(dòng)適配頁面

總結(jié)

通過本文示例,你已經(jīng)了解如何使用 Python 自動(dòng)化實(shí)現(xiàn) PDF 表格 → Word 表格 的完整流程。從 PDF 識(shí)別表格、解析行列結(jié)構(gòu),到在 Word 中創(chuàng)建并填充內(nèi)容,整個(gè)過程高度自動(dòng)化,特別適用于批量處理與業(yè)務(wù)系統(tǒng)集成場景。

相比手動(dòng)復(fù)制格式凌亂、在線工具功能受限、桌面工具難以批量處理,代碼方式具有更高的靈活性與可控性。你可以在此基礎(chǔ)上擴(kuò)展更多能力,例如批量轉(zhuǎn)換、內(nèi)容清洗、模板合并、文本識(shí)別(OCR)等,為企業(yè)類文檔處理提供穩(wěn)定高效的解決方案。

如果你正在處理大量 PDF 表格或需要長期的文檔自動(dòng)化流程,這種基于 Python 的方案將為你的工作帶來顯著提升。

以上就是使用Python將PDF表格自動(dòng)提取并寫入Word文檔表格的詳細(xì)內(nèi)容,更多關(guān)于Python PDF表格提取并寫入Word的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Python下載圖片并保存本地的兩種方式

    詳解Python下載圖片并保存本地的兩種方式

    這篇文章主要介紹了Python下載圖片并保存本地的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python標(biāo)準(zhǔn)庫之sys模塊用法詳解

    Python標(biāo)準(zhǔn)庫之sys模塊用法詳解

    “sys”即“system”,“系統(tǒng)”之意,該模塊提供了一些接口,用于訪問?Python?解釋器自身使用和維護(hù)的變量,同時(shí)模塊中還提供了一部分函數(shù),可以與解釋器進(jìn)行比較深度的交互,本文就給大家詳細(xì)的介紹一下Python?sys模塊,需要的朋友可以參考下
    2023-08-08
  • OpenCV+python手勢識(shí)別框架和實(shí)例講解

    OpenCV+python手勢識(shí)別框架和實(shí)例講解

    今天小編就為大家分享一篇OpenCV+python手勢識(shí)別框架和實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • python的django寫頁面上傳文件及遇到的問題小結(jié)

    python的django寫頁面上傳文件及遇到的問題小結(jié)

    這篇文章主要介紹了python的django寫頁面上傳文件以及遇到的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Python標(biāo)準(zhǔn)庫筆記struct模塊的使用

    Python標(biāo)準(zhǔn)庫筆記struct模塊的使用

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫筆記struct模塊的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • django-rest-framework解析請(qǐng)求參數(shù)過程詳解

    django-rest-framework解析請(qǐng)求參數(shù)過程詳解

    這篇文章主要介紹了django-rest-framework解析請(qǐng)求參數(shù)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python基于read(size)方法讀取超大文件

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

    這篇文章主要介紹了Python基于read(size)方法讀取超大文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python pycharm 同時(shí)加載多個(gè)項(xiàng)目的方法

    Python pycharm 同時(shí)加載多個(gè)項(xiàng)目的方法

    今天小編就為大家分享一篇Python pycharm 同時(shí)加載多個(gè)項(xiàng)目的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python 表達(dá)式和語句及for、while循環(huán)練習(xí)實(shí)例

    python 表達(dá)式和語句及for、while循環(huán)練習(xí)實(shí)例

    下面小編就為大家?guī)硪黄猵ython 表達(dá)式和語句及for、while循環(huán)練習(xí)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python實(shí)踐之使用Pandas進(jìn)行數(shù)據(jù)分析

    Python實(shí)踐之使用Pandas進(jìn)行數(shù)據(jù)分析

    在數(shù)據(jù)分析領(lǐng)域,Python的Pandas庫是一個(gè)非常強(qiáng)大的工具。這篇文章將為大家詳細(xì)介紹如何使用Pandas進(jìn)行數(shù)據(jù)分析,希望對(duì)大家有所幫助
    2023-04-04

最新評(píng)論

家居| 正阳县| 忻州市| 秦皇岛市| 金寨县| 洞口县| 浦城县| 瑞昌市| 库伦旗| 柯坪县| 丹寨县| 徐闻县| 潜山县| 农安县| 玛纳斯县| 临泽县| 沙洋县| 本溪市| 错那县| 江山市| 邳州市| 湖口县| 琼结县| 宝山区| 剑阁县| 安乡县| 新竹县| 项城市| 宁南县| 乌海市| 吉林市| 荣成市| 老河口市| 肃北| 黎川县| 中山市| 西乡县| 怀来县| 长宁区| 七台河市| 潍坊市|