Python 提取 Word 文檔中的文本和圖片

將內容從 Word 文檔中提取出來可以方便我們對其進行其他操作,如將內容儲存在數據庫中、將內容導入到其他程序中、用於 AI 訓練以及製作其他文檔等。第三方庫 Spire.Doc for Python 提供了一個簡單的方法直接提取 Word 文檔中的內容,包括文本和圖片,而不需要大量的複製粘貼操作,也不需要複雜的代碼。本文將介紹如何使用簡單的代碼實現從 Word 文檔中提取文本和圖片內容並保存。

  • 從 Word 文檔中提取文本內容並寫入 TXT 文件
  • 從 Word 文檔中提取圖片並保存

 

Python庫安裝: 在操作之前,需要先將Spire.Doc for Python 引入到項目中。可以下載後安裝,或直接通過 pip 安裝。

pip install Spire.Doc

 

Python 提取Word文檔中的文本內容

Spire.Doc for Python中的 Document.GetText() 方法可以獲取Word文檔中的所有文本並返回字符串,我們可以將返回的字符串寫入到文本文件中進行保存。

代碼示例:

from turtle import st
from spire.doc import *
from spire.doc.common import *

def WriteAllText(fname:str,text:List[str]):
        fp = open(fname,"w")
        for s in text:
            fp.write(s)
        fp.close()

inputFile = "示例.docx"
outputFile =  "獲取的文本.txt"
     
#創建Document的對象
document = Document()

#載入Word文檔
document.LoadFromFile(inputFile)

#獲取文檔中的文本
text = document.GetText()

#將文本寫入文本文件
WriteAllText(outputFile, text)
document.Close()

提取結果

 

Python 提取Word文檔中的圖片

提取圖片的操作相對複雜一些,需要判斷文檔元素子對象是否爲圖片或複合對象,如果是圖片則保存,如果是複合對象則繼續判斷其中的子對象是否爲圖片。

代碼示例:

import queue
from spire.doc import *
from spire.doc.common import *
import os

outputPath = "Images/"
inputFile = "示例.docx"

if not os.path.exists(outputPath):
    os.makedirs(outputPath)

#創建Document的對象
document = Document()

#載入Word文檔
document.LoadFromFile(inputFile)

#創建一個隊列並將文檔元素放入其中
nodes = queue.Queue()
nodes.put(document)

#創建一個列表
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 None
            dataBytes = 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 = "Image-{}.png".format(i)
    with open(outputPath+fileName,'wb') as imageFile:
        imageFile.write(item)
document.Close()

提取結果:

以上是關於如何使用Python 從Word文檔中提取文本和圖片的介紹。該Python Word庫還支持非常多的文檔操作,具體可以查看 Spire.Doc for Python中文教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章