使用python提取docx文件中的所有图像

问题描述 投票:0回答:3

我有一个docx文件,其中包含6-7张图片。我需要自动从此doc文件中提取图像。是否有相同的win32com ms字API?还是任何可以准确提取其中所有图像的库?

这是我尝试过的,但问题首先是它没有给我所有的图像,其次是给了我许多虚假的正面图像,例如空白图像,非常小的图像,线条等...它也使用MS字来做同样的事情。

from pathlib import Path
from win32com.client import Dispatch

xls = Dispatch("Excel.Application")
doc = Dispatch("Word.Application")


def export_images(fp, prefix="img_", suffix="png"):
    """ export all of images(inlineShapes) in the word file.
    :param fp: path of word file.
    :param prefix: prefix of exported images.
    :param suffix: suffix of exported images.
    """

    fp = Path(fp)
    word = doc.Documents.Open(str(fp.resolve()))
    sh = xls.Workbooks.Add()
    for idx, s in enumerate(word.inlineShapes, 1):
        s.Range.CopyAsPicture()
        d = sh.ActiveSheet.ChartObjects().add(0, 0, s.width, s.height)
        d.Chart.Paste()
        d.Chart.Export(fp.parent / ("%s_%s.%s" % (prefix, idx, suffix))
    sh.Close(False)
    word.Close(False)
export_images(r"C:\Users\HPO2KOR\Desktop\Work\venv\us2017010202.docx")

您可以在https://drive.google.com/open?id=1xdw2MieI1n3ulXlkr_iJSKb3cbozdvWq此处下载docx文件>

我有一个docx文件,其中包含6-7张图片。我需要自动从此doc文件中提取图像。是否有相同的win32com ms word API?或任何可以准确提取...的库...

python image docx glob win32com
3个回答
1
投票

您可以从docx解压缩所有图像,并按尺寸对其进行初步过滤:


0
投票

在枚举循环中,您可能应该检查形状类型是否为图片:


0
投票

[添加另一种方法来执行相同操作。我们可以使用doc2txt库获取所有图像

© www.soinside.com 2019 - 2024. All rights reserved.