方法一:解压.docx 文件提取图片

前言

.docx 文件其实也就是一个压缩文件,当我们将一个.docx 文件直接解压后可以看到如下目录

其中我们要找的图片就在 word/media 目录内,如图

所以,要提取 word 内的图片就需要将.docx 文件解压,再从 media 文件内取得图片,然后将解压后的文件删除

代码

import os

import shutil

import zipfile

def get_pictures(word_path, result_path):

"""

获取word内的所有图片

:param word_path: word文件

:param result_path: 结果目录,无需手动创建

:return: None or generator,None:word内没有图片,generator:每个图片的路径

"""

tmp_path = f'{os.path.splitext(word_path)[0]}'

# 拷贝源文件后重命名再解压

splitext = os.path.splitext(word_path)

zip_path = shutil.copy(word_path, f'{splitext[0]}_new{splitext[1]}')

with zipfile.ZipFile(zip_path, 'r') as f:

for file in f.namelist():

f.extract(file, tmp_path)

os.remove(zip_path)

# 注:word图片在zip文件内的word/media目录下

pic_path = os.path.join(tmp_path, 'word/media')

if not os.path.exists(pic_path):

shutil.rmtree(tmp_path)

return 'no pictures found'

pictures = os.listdir(pic_path)

if not os.path.exists(result_path):

os.makedirs(result_path)

for picture in pictures:

# 根据word的文件名生成图片的名称

word_name = os.path.splitext(word_path)[0]

if os.sep in word_name:

new_name = word_name.split('\\')[-1]

else:

new_name = word_name.split('/')[-1]

picture_name = f'{new_name}_{picture}'

shutil.copy(os.path.join(pic_path, picture), os.path.join(result_path, picture_name))

shutil.rmtree(tmp_path)

return (os.path.join(result_path, pic) for pic in os.listdir(result_path))

方法二:利用三方库 docx 提取图片(推荐)

import docx

import os

def get_pictures(word_path, result_path):

"""

提取word文档内的图片

:param word_path: word文件

:param result_path: 结果目录

:return:

"""

doc = docx.Document(word_path)

dict_rel = doc.part._rels

for rel in dict_rel:

rel = dict_rel[rel]

if "image" in rel.target_ref:

if not os.path.exists(result_path):

os.makedirs(result_path)

img_name = re.findall("/(.*)", rel.target_ref)[0]

word_name = os.path.splitext(word_path)[0]

# print(os.sep)

if os.sep in word_name:

new_name = word_name.split('\\')[-1]

else:

new_name = word_name.split('/')[-1]

img_name = f'{new_name}_{img_name}'

with open(f'{result_path}/{img_name}', "wb") as f:

f.write(rel.target_part.blob)

python读取word图片_python 如何提取 word 内的图片相关推荐

  1. python替换word中的图片_python如何提取word内的图片

    解压.docx文件实现提取图片 前言 .docx文件其实也就是一个压缩文件,当我们将一个.docx文件直接解压后可以看到如下目录 其中我们要找的图片就在word/media目录内,如图 所以,要提取w ...

  2. python提取word目录_python批量提取word内信息

    单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来 #coding:utf-8 import os import ...

  3. python 读取邮件内容_Python 如何提取邮件内容

    欢迎关注[无量测试之道]公众号,回复[领取资源], Python编程学习资源干货. Python+Appium框架APP的UI自动化. Python+Selenium框架Web的UI自动化. Pyth ...

  4. 工具:通过Python fitz 提取PDF内的图片

    通过Python fitz 提取PDF内的图片 # 打开pdf读取文本和图片内容 # pip install PyMuPDFimport fitzpdf_document = "1.pdf& ...

  5. poi word操作之向单元格内添加图片

    poi word操作之向单元格内添加图片 1,主要难点: poi word操作之向单元格内添加图片考虑的点: 1)考虑图片在单元格内的占比(动态的调整图片在文档中的宽高) 2,解决步骤 1)首先需要获 ...

  6. windows10图片打开找不到内置图片查看器

    windows10图片打开找不到内置图片查看器 第一种解决方法: 找到windows设置按钮–>应用–>默认应用–>重置 如果上面的方法无效,尝试第二种方法,修改注册表,亲测有用 第 ...

  7. python 给word添加背景图片_Python如何使用word文档插入图片和表格

    Python如何使用word文档插入图片和表格 发布时间:2020-10-26 13:49:29 来源:亿速云 阅读:101 作者:挣扎的蓝藻 这篇文章运用简单易懂的例子给大家介绍Python如何使用 ...

  8. 怎么用python读取excel图_Python如何读取excel中的图片

    学会用Python提取word图片的小伙伴,今天又来学提取excel图片的方法啦.本期文章将通过python的包来提取,对比以往的代码更加简洁方便. 环境准备: python3 pillowpip i ...

  9. python读取pdf表格_Python使用Tabula提取PDF表格数据

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...

最新文章

  1. 初学Java——选择
  2. SAP ECC 6.0 ,R3 windows server 2003 安装分享 自学教程
  3. 解决Windows 10下Wireshark运行问题
  4. GDCM:扫描包含DICOM文件的目录的测试程序
  5. Scala _05集合_数组(一)
  6. [转]【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
  7. [vue] vue怎么改变插入模板的分隔符?
  8. 精准高效估计多人3D姿态,美图北航分布感知式单阶段模型(CVPR 2022)
  9. 鸿蒙os来了,华为操作系统“鸿蒙OS”来了!
  10. 液压支架销轴力学计算分析研究_技术 | 篦冷机液压管路问题分析及改造措施
  11. Java创建Timestamp的几种方式
  12. 设计模式之——单例模式(Singleton)的常见应用场景(转):
  13. linux下查找进程及终止进程操作的相关命令
  14. Web API 路由 [二] Attribute Routing
  15. 人脸识别用照片可以识别吗?当然不能!
  16. 数据结构c语言版算法设计题,数据结构题集(C语言版)算法设计答案
  17. 计算机硬盘突然只有一个c盘,win10硬盘消失了只剩下c盘怎么恢复_win10硬盘突然消失只有c盘解决方法-win7之家...
  18. Redis的持久化方式
  19. 买域名+配置SSL站点
  20. AB测试(Test)——原理与实际案例手把手教学

热门文章

  1. 四大门户免费企业邮箱用户端基础参数对比
  2. neat download manager是什么?多线程下载工具 NeatDownloadManager
  3. 【Git】团队协作(终于学会了)
  4. 记录:数据分析在业务中的一些应用
  5. JavaScript实现阿拉伯数字转中文数字
  6. 手机ZTE中兴U802 U807手机解锁图案忘了 如何处理
  7. JAVA 映射HashMap和HashTable的区别和实用
  8. Failed at the react-admin_client@0.1.0 start script、react-app-rewired : command not found
  9. 奇迹按键精灵挂机脚本_按键精灵做连击脚本(奇迹MU战士用)
  10. 宝塔wordpress安装及使用(宝塔wordpress建站教程)