У меня есть файл DOCX, который содержит 6-7 изображений. Мне нужно автоматизировать извлечение изображений из этого файла do c. Есть ли win32com
MS Word API для того же? Или какая-нибудь библиотека, которая может точно извлечь все изображения из нее?
Это то, что я пробовал, но проблема, во-первых, в том, что она не дает мне все изображения, во-вторых, она дает мне много ложных положительных изображений, например пустое изображение, очень маленькие изображения, линии и т. д. c ... Это также использует слово 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")
Вы можете скачать файл DOCX здесь https://drive.google.com/open?id=1xdw2MieI1n3ulXlkr_iJSKb3cbozdvWq