Python如何使用docx2txt快速抽取出docx中的文字與圖片? import docx2txt ; text = docx2txt.process(str(docx_path), str(images_out_dir))

加入好友
加入社群
Python如何使用docx2txt快速抽取出docx中的文字與圖片? import docx2txt ; text = docx2txt.process(str(docx_path), str(images_out_dir)) - 儲蓄保險王
# 安裝依賴只在缺少套件時才安裝

import sys

import subprocess



def ensure_pkg(pkg: str, import_name: str | None = None):

    try:

        __import__(import_name or pkg)

        return True

    except Exception:

        print(f"[install] {pkg}")

        subprocess.check_call([sys.executable, '-m', 'pip', 'install', pkg])

        return True



ensure_pkg('docx2txt')

# python-docx  pip 名稱是 python-docximport 名稱是 docx

ensure_pkg('python-docx', import_name='docx')

#  Pillow 生成看得見的示範圖片

ensure_pkg('Pillow', import_name='PIL')

## 1) 在 D:\Temp 生成示範 DOCX(含文字、表格、圖片)

下面這格會:

– 建立輸出資料夾:`D:\Temp\docx2txt_demo`

– 寫入一張可用 PNG

– 用 `python-docx` 建立 `demo.docx`

from pathlib import Path

from docx import Document

from docx.shared import Inches



from PIL import Image, ImageDraw



BASE_DIR = Path(r'D:\Temp') / 'docx2txt_demo'

BASE_DIR.mkdir(parents=True, exist_ok=True)



docx_path = BASE_DIR / 'demo.docx'

img_path = BASE_DIR / 'demo.png'



# 生成一張看得見 PNG避免 1x1 透明圖在 Word 裡看起來像空白

img = Image.new('RGB', (500, 220), color=(255, 235, 59))  # 黃底

draw = ImageDraw.Draw(img)

draw.rectangle([20, 20, 480, 200], outline=(33, 33, 33), width=6)

draw.text((40, 85), 'DOCX2TXT DEMO IMAGE', fill=(20, 20, 20))

img.save(img_path)



doc = Document()

doc.add_heading('docx2txt Demo 文件', level=1)

doc.add_paragraph('這是一段普通文字,用來測試 docx2txt 的文字抽取。')



doc.add_paragraph('這段後面會插入圖片:')

doc.add_picture(str(img_path), width=Inches(4.5))



doc.add_paragraph('下面是一個簡單表格:')

table = doc.add_table(rows=2, cols=2)

table.cell(0, 0).text = 'Key'

table.cell(0, 1).text = 'Value'

table.cell(1, 0).text = 'Version'

table.cell(1, 1).text = 'v1'



doc.add_paragraph('結尾段落:完成。')

doc.save(str(docx_path))



print('Written:', docx_path)

print('Image  :', img_path)

print('Folder :', BASE_DIR)

demo.docx:

Python如何使用docx2txt快速抽取出docx中的文字與圖片? import docx2txt ; text = docx2txt.process(str(docx_path), str(images_out_dir)) - 儲蓄保險王

## 2) 用 docx2txt 抽取文字與匯出圖片

`docx2txt.process(input_path, image_dir)`:

– 回傳值:整份文件抽出的 **純文字字串**

– 副作用:若提供 `image_dir`,會把圖片存成檔案(檔名通常像 `image1.png`、`image2.jpeg`)

import docx2txt

images_out_dir = BASE_DIR / 'extracted_images'
images_out_dir.mkdir(parents=True, exist_ok=True)

text = docx2txt.process(str(docx_path), str(images_out_dir))
print('--- Extracted Text ---')
print(text)

print('\n--- Extracted Images ---')
for p in sorted(images_out_dir.glob('*')):
    print(p.name, '-', p.stat().st_size, 'bytes')
Python如何使用docx2txt快速抽取出docx中的文字與圖片? import docx2txt ; text = docx2txt.process(str(docx_path), str(images_out_dir)) - 儲蓄保險王

D:\Temp\docx2txt_demo\extracted_images

Python如何使用docx2txt快速抽取出docx中的文字與圖片? import docx2txt ; text = docx2txt.process(str(docx_path), str(images_out_dir)) - 儲蓄保險王

## 3) 常見問題與限制(快速版)

**Q:表格會怎麼輸出?**

  – `docx2txt` 會把表格內容「線性化」成文字(格式不一定漂亮),但通常能拿到 cell 文字。

**Q:能不能知道圖片在第幾段/第幾個 run?**

  – `docx2txt` **不提供 mapping**。如果你要「OCR 後插回圖片後面」那種精準定位,建議用 `python-docx` 搭配底層 XML(run / rId)處理。

**Q:圖片很多張怎麼辦?**

  – `docx2txt` 會全部匯出到資料夾;你可以用 `glob(‘*’)` 列出來,再依檔名/順序做後處理。

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python如何使用docx2txt快速抽取出docx中的文字與圖片? import docx2txt ; text = docx2txt.process(str(docx_path), str(images_out_dir)) - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *