國產化Word處理控件Spire.Doc教程:Python提取Word文檔中的文本、圖片、表格等

在現代辦公場景中,Word文檔已成為信息存儲與交流的重要載體,承載著關鍵的業務數據、結構化表格、可視化圖表以及協作批注等重要內容。面對日益增長的文檔處理需求,傳統的人工操作方式已難以滿足效率與準確性的雙重標準。采用Python實現Word文檔內容的自動化解析,不僅能顯著提升處理效率、降低人為錯誤率,還能實現數據集成、內容遷移及智能分析等多種應用。

E-iceblue旗下Spire系列產品是國產文檔處理領域的優秀產品,支持國產化,幫助企業高效構建文檔處理的應用程序。本文將詳細介紹如何使用?Spire.Doc for Python?庫在 Python 中讀取 Word 文檔(包括 .doc 和 .docx 格式),并演示如何提取文本、圖片、表格、批注、列表以及文檔的元數據等信息。無論您是進行文檔內容抓取、自動化報告生成,還是開發文檔解析工具,本教程都將提供清晰的代碼示例和實用指導。

Spire.Doc for Python試用下載

為什么使用 Python 讀取 Word 文檔?

Python 作為一門靈活且功能強大的編程語言,廣泛應用于自動化、數據處理及內容分析等領域。使用 Python 讀取 Word 文檔,可以實現以下重要應用:

  • 批量提取數據:從報告、合同、簡歷等文檔中快速抓取關鍵信息,無需手工復制粘貼。
  • 結構化內容解析:將文本、表格和圖片等內容整理成數據庫或分析模型,便于后續處理。
  • 自動化工作流集成:將 Word 文檔讀取功能嵌入到 Web 服務、API 或后臺系統,實現端到端自動化。
  • 支持多格式文檔處理:同時兼容現代 .docx 和傳統 .doc 文件,保證業務場景的全面覆蓋。

安裝 Python Word 文檔解析庫

要在 Python 中讀取 Word 文檔,首先需要安裝支持 .doc 和 .docx 格式的解析庫。Spire.Doc for Python?是一款功能完善且獨立于 Microsoft Office 的第三方庫,支持提取文本、圖片、表格、批注、列表及元數據等多種內容。

通過以下命令即可安裝 Spire.Doc:

pip install Spire.Doc

安裝完成后,即可在 Python 代碼中導入并使用 Spire.Doc 進行 Word 文檔的讀取和處理。

使用 Python 讀取 Word 文檔中文本

提取文本是解析 Word 文檔的基礎需求。根據不同場景,你可能需要獲取整篇文檔的全部文本,或僅針對特定節、段落進行讀取。

獲取整個文檔的文本

在文檔管理系統中,提取全文文本有助于建立搜索索引,使用戶能夠通過關鍵詞快速定位文檔內容,從而提升查詢效率和使用體驗。

Spire.Doc?提供了 Document.GetText() 方法,可一次性提取 Word 文檔中的所有文字信息,涵蓋正文、表格及列表等內容。

以下示例展示了如何加載 Word 文檔,獲取全文文本,并將其保存為獨立的文本文件,便于后續處理與分析:

from spire.doc import *# 創建Document對象
doc = Document()# 加載Word文檔
doc.LoadFromFile("示例.docx")# 獲取文檔所有文本
text = doc.GetText()# 保存獲取的文本為TXT文件
with open("output/提取文本.txt", "w", encoding="utf-8") as file:
file.write(text)document.Close()

獲取特定節或段落的文本

在許多結構化文檔(如報告、合同或說明書)中,內容通常被劃分為多個節或段落。若只需提取文檔中某一部分的文本信息,可以直接訪問指定節,并逐段讀取內容,實現更具針對性的處理。

以下示例展示了如何訪問 Word 文檔中的指定節,并提取其中所有段落的文本內容:

from spire.doc import *# 加載 .docx 或 .doc 文件
document = Document()
document.LoadFromFile("示例.docx")# 訪問指定節
section = document.Sections[0]# 獲取該節段落文本
with open("output/節文本.txt", "w", encoding="utf-8") as file:for paragraph in section.Paragraphs:file.write(paragraph.Text + "\n")document.Close()

使用 Python 讀取 Word 文檔中的特定元素

除了純文本,Word 文檔中還可能包含圖片、表格、批注、列表及元數據等多種元素。Spire.Doc 提供豐富且便捷的接口,幫助開發者高效地提取這些內容,實現對文檔結構和數據的全面訪問。

提取圖片

Word 文檔中常包含圖片元素,例如公司 Logo、插圖、圖表等。若需提取這些圖片以便進行分析、存檔或再利用,可通過遍歷文檔結構并識別圖片對象(DocPicture)來實現。

以下是提取 Word 文檔中所有圖片并將其保存為本地文件的完整示例:

import queue
from spire.doc import *# 創建Document對象
doc = Document()# 加載Word文件
doc.LoadFromFile("示例.docx")# 創建隊列對象
nodes = queue.Queue()
nodes.put(doc)# 創建列表
images = []while nodes.qsize() > 0:node = nodes.get()# 遍歷文檔中的子對象for i in range(node.ChildObjects.Count):child = node.ChildObjects.get_Item(i)# 判斷子對象是否為圖片if child.DocumentObjectType == DocumentObjectType.Picture:picture = child if isinstance(child, DocPicture) else NonedataBytes = picture.ImageBytes# 將圖片數據添加到列表中images.append(dataBytes)elif isinstance(child, ICompositeObject):nodes.put(child if isinstance(child, ICompositeObject) else None)# 遍歷列表中的圖片
for i, item in enumerate(images):fileName = "圖片-{}.png".format(i)with open("output/Images/"+fileName,'wb') as imageFile:# 將圖片寫入指定路徑imageFile.write(item)
doc.Close()

獲取表格數據

在 Word 文檔中,表格常用于組織結構化數據,如報表或物品清單。使用 Spire.Doc,開發者可以遍歷文檔中的所有表格,訪問表格中的每個單元格,并提取單元格的內容。

以下代碼展示了如何提取Word文檔中所有表格的數據,并將結果保存為文本文件:

from spire.doc import *
import os# 加載 Word 文檔
document = Document()
document.LoadFromFile("示例.docx")# 指定輸出文件夾存在
output_dir = "output/Tables"
os.makedirs(output_dir, exist_ok=True)# 遍歷所有節并提取表格數據
for s in range(document.Sections.Count):section = document.Sections[s]tables = section.Tablesfor i in range(tables.Count):table = tables[i]table_data = ""for j in range(table.Rows.Count):row = table.Rows[j]for k in range(row.Cells.Count):cell = row.Cells[k]cell_text = ""for p in range(cell.Paragraphs.Count):para_text = cell.Paragraphs[p].Textcell_text += para_text + " "table_data += cell_text.strip()if k < row.Cells.Count - 1:table_data += "\t"table_data += "\n"# 將提取的表格數據寫入文本文件output_path = os.path.join(output_dir, f"Word表格_{s+1}_{i+1}.txt")with open(output_path, "w", encoding="utf-8") as output_file:output_file.write(table_data)document.Close()

讀取列表

Word 文檔中的項目列表(如編號列表和項目符號列表)常用于展示條款、步驟或要點等結構化內容。借助?Spire.Doc,開發者可以輕松識別并提取文檔中的列表。

以下代碼示例展示了如何加載 Word 文件,查找所有列表項,并將項目編號(如數字或符號)和其對應的文本內容寫入本地文本文件:

from spire.doc import *# 加載 Word 文檔
document = Document()
document.LoadFromFile("示例.docx")# 創建文本文件,用于存放列表內容
with open("output/列表內容.txt", "w", encoding="utf-8") as output_file:# 遍歷文檔中的節for s in range(document.Sections.Count):section = document.Sections[s]# 遍歷節中的段落for p in range(section.Paragraphs.Count):paragraph = section.Paragraphs[p]# 找到列表,提取其內容并保存至文本文件if paragraph.ListFormat.ListType != ListType.NoList:output_file.write(paragraph.ListText + paragraph.Text + "\n")document.Close()

提取批注

Word 支持添加批注,用于提供修改建議或評論。通過訪問 Comments 集合,可以獲取文檔中所有批注的信息,包括批注作者和具體內容,便于實現審閱流程的自動化管理。

以下代碼展示了如何提取所有批注,包括批注作者與內容,并保存到文本文件中:

from spire.doc import *# 加載 Word 文檔
document = Document()
document.LoadFromFile("示例.docx")# 創建文本文件,用于存放批注內容
with open("output/批注內容.txt", "w", encoding="utf-8") as output_file:# 遍歷文檔中的所有批注,獲取每個批注的作者和內容for i in range(document.Comments.Count):comment = document.Comments[i]output_file.write(f"批注 {i + 1}:\n")output_file.write(f"作者:{comment.Format.Author}\n")comment_text = ""for j in range(comment.Body.Paragraphs.Count):paragraph = comment.Body.Paragraphs[j]comment_text += paragraph.Text + "\n"output_file.write(f"內容: {comment_text.strip()}\n\n")document.Close()

獲取元數據(文檔屬性)

Word 文檔通常包含作者、標題、主題、關鍵字等元數據信息,這些數據保存在文檔的 BuiltinDocumentProperties 屬性中。提取這些屬性有助于文檔的歸檔管理、分類整理以及搜索優化。

以下示例代碼展示了如何讀取 Word 文檔的標題、作者、主題等屬性,并將其保存到本地文本文件:

from spire.doc import *# 加載 Word 文檔
document = Document()
document.LoadFromFile("示例.docx")# 獲取文檔屬性
props = document.BuiltinDocumentProperties# 將文檔屬性信息寫入到本地文本文件
with open("output/元數據.txt", "w", encoding="utf-8") as output_file:output_file.write(f"標題: {props.Title}\n")output_file.write(f"作者: {props.Author}\n")
output_file.write(f"主題: {props.Subject}\n")document.Close()

總結

使用 Python 讀取 Word 文檔,不僅能夠顯著提升文檔處理效率,還能實現數據提取與自動化工作的深度集成。通過?Spire.Doc for Python,開發者可以輕松完成 .doc 和 .docx 文件中的文本提取、表格讀取、圖片導出、批注解析、列表識別以及元數據獲取等多種常見操作。

除了讀取內容,Spire.Doc 還支持創建和編輯 Word 文檔、設置樣式格式、插入圖片、執行文檔合并,以及將 Word 轉換為 PDF和圖片等格式,滿足從讀取到輸出的全流程需求,適用于報告生成、合同解析、批量文檔處理等多種業務場景。

常見問題解答

Q1:Python 如何讀取 Word(.doc/.docx)文檔內容?

A1:可以使用?Spire.Doc for Python?來讀取 Word 文件。該庫支持加載 .doc 和 .docx 格式,并提取文檔中的文本、圖片、表格、批注等內容。

Q2:使用?Spire.Doc for Python?是否需要安裝 Microsoft Office?
A2:不需要。Spire.Doc 是一款獨立運行的 Word 處理庫,無需安裝 Microsoft Word 或 Office ,即可在 Python 項目中實現 Word 文件的讀取與編輯功能。

Q3:除了讀取 Word 內容,Spire.Doc 是否支持寫入和生成 Word 文件?
A3:支持。Spire.Doc for Python?不僅可以讀取 Word 文檔內容,還支持以編程方式創建、編輯和保存 Word 文件。用戶可以添加段落、設置樣式、插入圖片和表格,甚至將 Word 轉換為 PDF 或圖片格式,滿足多樣化的文檔生成需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92492.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92492.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92492.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring IOC 原理

Spring IoC&#xff08;控制反轉&#xff09;是Spring框架的核心機制&#xff0c;其原理是通過容器管理對象生命周期和依賴關系&#xff0c;實現解耦。 1. 控制反轉&#xff08;IoC&#xff09;核心思想 傳統模式&#xff1a;對象主動創建依賴&#xff08;如new Service()&…

VSCode:基礎使用 / 使用積累

官網 Visual Studio Code - Code Editing. Redefined 記錄一、更新依賴 嘗試刪除yarn.lock文件 記錄二、“解決沖突”的方式變了 更新后&#xff0c;“解決沖突”的方式變了&#xff0c;有的時候能選中兩者&#xff0c;有的時候不能 現在又更新了&#xff0c;回復到了原來…

tcp 確認應答和超時時間

1. 確認應答之間的時間&#xff08;RTT&#xff09;這是指 從發送方發送數據到接收方返回確認&#xff08;ACK&#xff09;之間的時間。它反映的是數據傳輸的 往返延遲。例如&#xff0c;發送方發送一個數據包&#xff0c;接收方收到后&#xff0c;回傳一個確認包&#xff08;A…

圖的應用-最短路徑

最短路徑的典型用途&#xff1a;交通網絡的問題——從甲地到乙地之間是否有公路連通&#xff1f;在有多條通路的情況下&#xff0c;哪一條路最短&#xff1f;交通網絡用有向網來表示&#xff1a;頂點——表示地點&#xff0c;弧——表示兩個地點有路連通&#xff0c;弧上的權值…

【qt5_study】1.Hello world

模板 作為初學者我們選擇第一個Application(Qt)和 Qt Widgets Application,所謂的模板就是 Qt為了方便開發程序,在新建工程時可以讓用戶基于一種模板來編寫程序,包括 cpp文件, ui文件都已經快速的創建,而不用用戶手動創建這些文件。 基類 這里默認選擇的基類為 QMainWin…

項目構想|文生圖小程序

Date: August 4, 2025項目介紹 &#x1f44b;&#xff0c;我們通過 Vibe Coding 做一個文字生成圖片的小程序。 我們會從需求分析、技術選型、UI設計、項目構筑到最后打包&#xff0c;一路嘗試 Vibe Coding 實現。 創建項目 創建文件夾&#xff1a;ai-pic-mini-app 采用 Git 進…

TiDB/MongoDB/Taosdb存儲引擎概覽

數據庫類型存儲引擎數據結構源碼位置tidbRockDBLSM樹https://github.com/facebook/rocksdbmongodbWiredTigerB 樹/LSM樹https://github.com/wiredtiger/wiredtigerTDengineTSDBBRINhttps://github.com/taosdata/TDengine 1、tidb存儲引擎概覽 LSM樹數據結構描述LSM樹(Log Str…

qt窗口--01

文章目錄qt窗口--01窗口概覽菜單欄工具欄狀態欄浮動窗口子窗口對話框model結語很高興和大家見面&#xff0c;給生活加點impetus&#xff01;&#xff01;開啟今天的編程之路&#xff01;&#xff01; 作者&#xff1a;?( ‘ω’ )?260 我的專欄&#xff1a;qt&#xff0c;Li…

Neo4j 社區版 Mac 安裝教程

最近用到了nebulagraph圖數據庫做金融反欺詐項目&#xff0c;雖然nebula屬于分布式架構&#xff0c;但依然感覺nebula使用不太順手&#xff0c;這里順便研究一下neo4j這款數據庫如何&#xff0c;這里先從安裝開始&#xff1f; 一、 準備工作 確認 Java 版本要求&#xff1a; N…

Android Studio(2025.1.2)Gemini Agent 使用指南

Android Studio&#xff08;2025.1.2&#xff09;Gemini Agent 使用指南 文章目錄Android Studio&#xff08;2025.1.2&#xff09;Gemini Agent 使用指南1. 什么是 Gemini Agent&#xff1f;2. 如何啟用和配置 Gemini Agent2.1 獲取 API Key2.2 在 Android Studio 中配置3. 實…

計算機視覺--opencv(代碼詳細教程)

在計算機視覺的廣袤領域中&#xff0c;OpenCV 是一座極為關鍵的里程碑。無論是在前沿的學術研究&#xff0c;還是在蓬勃發展的工業界&#xff0c;OpenCV 憑借其強大的功能與高效的性能&#xff0c;為開發者提供了豐富的圖像處理和計算機視覺算法&#xff0c;助力無數項目落地。…

Centos6停止服務后yum改用阿里云

環境: OS:Centos 6.9 1.進入到yum配置目錄 cd /etc/yum.repos.d 2.備份 cp CentOS-Base.repo CentOS-Base.repo.bk 3.下載 wget -O CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo 問題1: 因為Centos-6早就停止了更新維護&#xff0c;阿里云鏡像網站將其倉庫…

putty+Xming(XLaunch) 遠程登錄VirtualBox中的Ubuntu24.04,顯示圖形化(GUI)界面

測試環境&#xff1a;VirtualBox 7,Ubuntu24.04 desktop,Ubuntu24.04 Server(no desktop)&#xff0c;均測試成功。 一、先測試putty遠程登錄VirtualBox中的Ubuntu&#xff0c;可以使用ssh、Telnet 等協議。參見拙文《ssh連接VirtualBox中的Ubuntu24.04&#xff08;win11、put…

SpringBoot微頭條實戰項目

一、項目概述 微頭條是一個基于現代技術棧構建的新聞發布和瀏覽平臺&#xff0c;旨在為用戶提供便捷的新聞閱讀體驗和高效的新聞管理功能。該項目通過前后端分離的架構設計&#xff0c;實現了用戶注冊、登錄、新聞瀏覽、搜索、發布、修改和刪除等功能&#xff0c;同時通過JWT技…

如何給電腦換個ip地址?電腦換ip幾種方法

更換電腦的IP地址的方法取決于你的具體需求和網絡環境&#xff08;是換本地局域網IP還是換對外公網IP&#xff09;。以下是幾種常見的方法&#xff1a; 一、更換本地局域網IP地址&#xff08;在同一個網絡內&#xff09; 這個IP地址通常由你的路由器&#xff08;或公司的網絡管…

Pytest項目_day04(Python做接口請求)

Requests包 在python中&#xff0c;可以使用requests包&#xff0c;用于做接口請求和接口測試request支持http和https簡單的get函數調用如下&#xff1a;r.jsonr.status_coder.textget函數的帶params用法post函數的帶params用法 post也可以和get一樣在url中傳入參數在requests包…

Flink與Kafka核心源碼詳解-目錄

Flink是Apache軟件基金會下開源的分布式流批一體計算框架&#xff0c;具備實時流計算和高吞吐批處理計算的大數據計算能力。本專欄內容為Flink源碼解析的記錄與分享。 本文解析的Flink源碼版本為&#xff1a;flink-1.19.0 以下為Flink-1.19.0-完整源碼詳解的目錄導航。 Flink-…

【VLLM篇】:原理-實現

1、VLLM vLLM是一個建立在【PagedAttention】之上的高吞吐的【分布式服務引擎】&#xff0c;目標是【提高吞吐量】、【提高內存利用率】&#xff08;kv-cache內存利用率高達96%&#xff09;&#xff0c;它的內存管理分配方式從【固定分配】改進為【分頁管理】&#xff0c;類似操…

什么是 TcpCommunicationSpi

&#x1f9e9; 一、核心定位&#xff1a;什么是 TcpCommunicationSpi&#xff1f; /*** <tt>TcpCommunicationSpi</tt> is default communication SPI which uses* TCP/IP protocol and Java NIO to communicate with other nodes.*/翻譯&#xff1a;TcpCommunicat…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 詞云圖-微博評論用戶詞云圖實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解詞云圖-微博評論用戶詞云圖實現 視頻在線地…