以下是Python提取Word中图片的实现步骤的攻略:
1. 安装Python-docx库
Python-docx是一个用来读取、查询和修改Microsoft Word文档的Python库。它支持docx和doc文件格式,在使用之前先安装该库。
pip install python-docx
2. 读取Word文档
使用Python-docx库,可以轻松地读取Word文档。首先使用以下代码打开文档。
import docx
doc = docx.Document('example.docx')
其中,'example.docx'为需要读取的文档文件名。通过这个对象,我们可以进一步遍历文档内容。
3. 遍历文档内容
遍历文档包括获取将要提取的图片位置和名称。
for paragraph in doc.paragraphs:
for run in paragraph.runs:
if run.element.xml.startswith('<w:drawing'):
inline = run.inline_shapes[0]
if inline.has_image:
image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
print(image)
在以上代码中,我们首先遍历文档的段落和文本格式信息,通过判断是否含有drawing元素,进一步获取图片信息。如果获得的inline对象有图片,那么我们就可以通过对应的graphicData获取图片名称。
4. 获取图片二进制数据
获取图片名称后,我们进一步提取图片二进制数据。
from docx.shared import Inches
for paragraph in doc.paragraphs:
for run in paragraph.runs:
if run.element.xml.startswith('<w:drawing'):
inline = run.inline_shapes[0]
if inline.has_image:
image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
image_data = inline._inline.graphic.graphicData.pic.blipFill.blip
with open(f"{image}.png", 'wb') as f:
f.write(image_data)
在以上代码中,我们使用了docx库中的shared.Inches
类来控制图片大小。对于每个带有有效图片的文本段落,我们通过图形的名称获取对应的二进制数据,并将其写入到本地文件中,以PNG格式保存。
示例1
如果你需要从letter.docx
文档中提取所有图片数据,可以使用以下代码实现。
import docx
from docx.shared import Inches
doc = docx.Document('letter.docx')
for paragraph in doc.paragraphs:
for run in paragraph.runs:
if run.element.xml.startswith('<w:drawing'):
inline = run.inline_shapes[0]
if inline.has_image:
image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
image_data = inline._inline.graphic.graphicData.pic.blipFill.blip
with open(f"{image}.png", 'wb') as f:
f.write(image_data)
该代码运行后,会在代码所在目录下生成所有图片的PNG格式文件。
示例2
如果你只需要提取某一个特定的Word文档中的图片,可以通过修改文档名称和图片名称信息,使用以下代码解决。
import docx
from docx.shared import Inches
doc = docx.Document('example.docx')
for paragraph in doc.paragraphs:
for run in paragraph.runs:
if run.element.xml.startswith('<w:drawing'):
inline = run.inline_shapes[0]
if inline.has_image:
image = inline._inline.graphic.graphicData.pic.nvPicPr.cNvPr.name
if image == 'image.png':
image_data = inline._inline.graphic.graphicData.pic.blipFill.blip
with open(f"{image}.png", 'wb') as f:
f.write(image_data)
运行该代码后,只有example.docx
文档中名为image.png
的图片数据会被提取。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python提取Word中图片的实现步骤 - Python技术站