利用python工具提取多个word中的图片和表格

1. 前言

由于工作因素,经常要对多个文档内容进行查重,文字类可以借助查重工具辅助,但图片和表格只能依靠鼠标滚轮还有笔者的打工眼。久而久之,眼睛废了,肩颈也吃不消了(-.-)。于是乎,就想用脚本批量导出,从而提高效率。

笔者非软件专业,所以只能请ChatGPT当导师了,经过多次修改,总算达到了预期效果。

大佬们如果有更好的办法,还请与我联系......下面是操作步骤。

2.安装python环境

官网下载: https://www.python.org/downloads/windows/

网上找个教程安装下去,命令行输入python能回显版本即可。

快捷键Ctrl+Z 退出python界面,而后安装pythone的docx、docx2txt 库

复制代码
pip install python-docx
pip install docx2txt

3. python脚本

python 复制代码
import os
from docx import Document
import docx2txt
from docx.enum.table import WD_ALIGN_VERTICAL

def extract_images_and_tables(input_docx_file, output_folder):
    # 创建输出文件夹
    folder_name = os.path.splitext(os.path.basename(input_docx_file))[0]
    output_folder = os.path.join(output_folder, folder_name)
    os.makedirs(output_folder, exist_ok=True)

    # 提取Word文档中的图片并保存到输出文件夹
    docx2txt.process(input_docx_file, output_folder)

    # 提取Word文档中的表格并保存到一个单独的文件
    doc = Document(input_docx_file)
    table_output_path = os.path.join(output_folder, "02-文档表格.docx")  # 修改文件名
    table_doc = Document()

    for table in doc.tables:
        new_table = table_doc.add_table(rows=len(table.rows), cols=len(table.columns))
        
        # 复制表格样式和内容
        for i, row in enumerate(table.rows):
            for j, cell in enumerate(row.cells):
                new_cell = new_table.cell(i, j)
                
                # 复制单元格的文本和样式
                for paragraph in cell.paragraphs:
                    new_paragraph = new_cell.add_paragraph(paragraph.text)
                    new_paragraph.alignment = paragraph.alignment
                    new_paragraph.vertical_alignment = WD_ALIGN_VERTICAL.CENTER
                    for run in paragraph.runs:
                        new_run = new_paragraph.runs[-1]  # 使用最后一个Run来避免样式重叠
                        new_run.bold = run.bold
                        new_run.italic = run.italic
                        new_run.underline = run.underline
                        new_run.font.size = run.font.size
                        new_run.font.name = run.font.name
                        new_run.font.color.rgb = run.font.color.rgb

    table_doc.save(table_output_path)
    print(f"提取了所有表格并保存到 {table_output_path}")

    # 提取大纲标题并生成目录文档
    outline_output_path = os.path.join(output_folder, "01-文档目录.docx")  # 修改文件名
    outline_doc = Document()

    for paragraph in doc.paragraphs:
        if paragraph.style.name.startswith('Heading'):
            level = int(paragraph.style.name.split()[-1])
            outline_doc.add_paragraph(paragraph.text, style=f'Heading {level}')
            
    outline_doc.save(outline_output_path)
    print(f"生成了目录并保存到 {outline_output_path}")

if __name__ == "__main__":
    input_folder = r"D:\01-待提取文档文件夹"  # 待提取文档的所在路径
    output_folder = r"D:\02-保存文档文件夹"  # 保存提取后文档的所在路径

    docx_files = [os.path.join(input_folder, filename) for filename in os.listdir(input_folder) if filename.endswith(".docx")]

    for docx_file in docx_files:
        extract_images_and_tables(docx_file, output_folder)

4. 执行效果

================ RESTART: C:\Users\Admin\Desktop\测试脚本.py ================

提取了所有表格并保存到 D:\02-保存文档文件夹\01-我是文档A\02-文档表格.docx

生成了目录并保存到 D:\02-保存文档文件夹\01-我是文档A\01-文档目录.docx

提取了所有表格并保存到 D:\02-保存文档文件夹\02-我是文档B\02-文档表格.docx

生成了目录并保存到 D:\02-保存文档文件夹\02-我是文档B\01-文档目录.docx

提取了所有表格并保存到 D:\02-保存文档文件夹\03-我是文档C\02-文档表格.docx

生成了目录并保存到 D:\02-保存文档文件夹\03-我是文档C\01-文档目录.docx

提取了所有表格并保存到 D:\02-保存文档文件夹\04-我是文档D\02-文档表格.docx

生成了目录并保存到 D:\02-保存文档文件夹\04-我是文档D\01-文档目录.docx

相关推荐
机器视觉知识推荐、就业指导2 小时前
面试问题详解五:Qt 信号与槽的动态管理
开发语言·qt
MZ_ZXD0014 小时前
springboot汽车租赁服务管理系统-计算机毕业设计源码58196
java·c++·spring boot·python·django·flask·php
A 计算机毕业设计-小途4 小时前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
念念01078 小时前
数学建模竞赛中评价类相关模型
python·数学建模·因子分析·topsis
四维碎片8 小时前
【Qt】线程池与全局信号实现异步协作
开发语言·qt·ui·visual studio
IT码农-爱吃辣条8 小时前
Three.js 初级教程大全
开发语言·javascript·three.js
云天徽上9 小时前
【数据可视化-94】2025 亚洲杯总决赛数据可视化分析:澳大利亚队 vs 中国队
python·信息可视化·数据挖掘·数据分析·数据可视化·pyecharts
☺����9 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码2
开发语言·人工智能·python·音视频
染翰9 小时前
lua入门以及在Redis中的应用
开发语言·redis·lua
王者鳜錸9 小时前
PYTHON让繁琐的工作自动化-函数
开发语言·python·自动化