天天看点

Python自动化:自动提取word中图片,拯救孩子课本,破解教育焦虑

作者:人工智能取经人

在现代社会,家长对孩子教育的重视程度与日俱增。暑假来临,朋友小王面临着许多家长的共同焦虑:如何为即将升入五年级的孩子做好预习准备。小王的孩子聪明活泼,对新知识充满好奇,但小王担心课本的电子版存在一些问题,会影响孩子的学习体验。

原来,小王找到的电子版课本是Word版本,里面附带了大量的图片【word的每一页都只有一张图片】。这些图片本是为了辅助教学,但打印出来后发现边缘有明显的黑框,显得很不美观。小王不想让孩子因为这些问题而对学习产生抵触情绪,于是想到了我这个会编程的朋友,看看能不能用技术手段解决这个问题。

我思考了一下,觉得可以用Python编写一个程序,实现从Word文档中提取图片,并保存为JPG格式。这样,小王就可以将提取出来的图片打印出来,给孩子一个更加清晰、美观的学习资料。

Python自动化:自动提取word中图片,拯救孩子课本,破解教育焦虑

核心代码

import docx
import os, re
word_path = 'E:\\code\\plan_work\\Demo.docx'
result_path = "./img_result"
# 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]
#         if os.sep in word_name:
#             new_name = word_name.split('\\')[-1]
#         else:
#             new_name = word_name.split('/')[-1]
#         img_name = f'{new_name}-'+'.'+f'{img_name}'
# with open(f'{result_path}/{img_name}', "wb") as f:
#     f.write(rel.target_part.blob)


def get_pictures(word_path, result_path):
    """
    图片提取
    :param word_path: word路径
    :return: 
    """
    try:
        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]
                if os.sep in word_name:
                    new_name = word_name.split('\\')[-1]
                else:
                    new_name = word_name.split('/')[-1]
                img_name = f'{new_name}-'+'.'+f'{img_name}'
                with open(f'{result_path}/{img_name}', "wb") as f:
                    f.write(rel.target_part.blob)
    except:
        pass


if __name__ == '__main__':


    #获取文件夹下的word文档列表,路径自定义


    # os.chdir("D:\Demo")
    # spam=os.listdir(os.getcwd())
    # for i in spam:
        # get_pictures(str(i),os.getcwd())
    get_pictures(word_path,result_path)           
Python自动化:自动提取word中图片,拯救孩子课本,破解教育焦虑

继续阅读