天天看點

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中圖檔,拯救孩子課本,破解教育焦慮

繼續閱讀