gpt4 book ai didi

python-3.x - 如何从段落python docx获取图像(inlineshape)

转载 作者:行者123 更新时间:2023-12-04 12:06:39 45 4
gpt4 key购买 nike

我想逐段阅读docx文档,如果有图片(InlineShape),然后用它周围的文字处理它。函数 Document.inline_shapes 将给出文档中所有内联形状的列表。但我想得到一个,如果存在的话,它正好出现在当前段落中......

代码示例:

from docx import Document

doc = Document("test.docx")
blip = doc.inline_shapes[0]._inline.graphic.graphicData.pic.blipFill.blip
rID = blip.embed
document_part = doc.part
image_part = document_part.related_parts[rID]

fr = open("test.png", "wb")
fr.write(image_part._blob)
fr.close()

(这就是我想保存这些图片的方式)

最佳答案

假设您的段落是标准的,您可以使用以下代码来查找图像

import xml.etree.ElementTree as ET
def hasImage(par):
"""get all of the images in a paragraph
:param par: a paragraph object from docx
:return: a list of r:embed
"""
ids = []
root = ET.fromstring(par._p.xml)
namespace = {
'a':"http://schemas.openxmlformats.org/drawingml/2006/main", \
'r':"http://schemas.openxmlformats.org/officeDocument/2006/relationships", \
'wp':"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"}

inlines = root.findall('.//wp:inline',namespace)
for inline in inlines:
imgs = inline.findall('.//a:blip', namespace)
for img in imgs:
id = img.attrib['{{{0}}}embed'.format(namespace['r'])]
ids.append(id)

return ids

关于python-3.x - 如何从段落python docx获取图像(inlineshape),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800705/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com