【[Python自动化] 我写了一个工具,一键将几百个Word/PDF简历自动汇总到Excel,早早下班!】

🟢 前言:拒绝机械劳动

你是否遇到过这样的场景: 老板发给你一个文件夹,里面装了几百份格式类似的 Word 文档(比如简历、报名表、调查问卷),让你把里面的"姓名"、"电话"、"毕业学校"等信息一个一个复制粘贴到 Excel 表格里汇总?

如果手动做,不仅眼睛都要看瞎,而且极其容易出错。作为一名 Python 开发者,这种重复性劳动是绝对不能忍受的!

于是,我利用 Python 的 PyQt + pandas + python-docx 开发了一个带图形界面的自动化工具,能够自动遍历文件夹,识别 Word 表格内容,甚至支持 PDF 和老旧的 .doc 格式,最终一键生成 Excel 汇总表。

今天将源码分享给大家,希望能帮大家从繁琐的 Ctrl+C/V 中解脱出来。

项目开源地址github.com/xy200303/au... (欢迎 Star ⭐ 支持一下!)


🚀 功能亮点

这个工具主要解决了以下几个痛点:

  1. 批量处理:支持选择文件夹,自动递归查找所有文件。
  2. 格式兼容
    • 原生支持 .docx
    • 自动将 .doc 转换为 .docx(基于 pywin32)。
    • 自动将 .pdf 转换为 .docx(基于 pdf2docx)。
  3. 自定义提取:你只需要输入你想提取的字段(如:姓名,电话,邮箱),程序会自动在 Word 表格中查找对应的值。
  4. 图形界面:基于 PyQt 编写了 GUI,不懂代码的同事也能直接使用。
  5. 结果导出 :处理完成后自动生成带时间戳的 .xlsx 文件。

🛠️ 技术栈与原理

  • 界面 (UI): PyQt6 / PyQt5
  • Word处理: python-docx (用于读取表格数据)
  • PDF转Word: pdf2docx
  • Doc转Docx: pywin32 (调用 Word 底层 COM 接口)
  • 数据汇总: pandas

核心逻辑图解

  1. 用户输入:选择文件夹 + 输入关键词(如"姓名")。
  2. 文件预处理:如果是 PDF 或 .doc,先转换为 .docx。
  3. 读取内容 :利用 python-docx 读取文档中的所有表格,将其展平为一个列表。
  4. 关键词匹配 :在列表中找到包含"姓名"的单元格,取其下一个非空单元格作为数据。
  5. 导出:使用 pandas 将字典列表写入 Excel。

💻 核心代码解析

1. 提取 Word 表格数据 (toolCore.py)

这是最关键的一步。由于 Word 排版复杂,我们统一将所有表格的内容读取出来,按顺序存入一个列表,这样就将二维的表格降维成了一维的线性数据,方便查找。

python 复制代码
from docx import Document

def word_tables_to_list(file_path):
    """
    读取 docx 中的所有表格,并将其展平为列表
    """
    doc = Document(file_path)
    cells = []
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                text = cell.text.strip()
                # 简单清洗数据
                text = text.replace("\n", "").replace(" ", "")
                cells.append(text)
    return cells

2. 智能匹配字段 (toolCore.py)

获取到列表后,如何提取数据?这里采用了一个简单的逻辑:查找 Key,取 Key 后面紧邻的 Value

python 复制代码
def get_info_from_cells(cells, keys_dict):
    """
    cells: 文档所有内容的列表
    keys_dict: 用户输入的关键词列表,如 ['姓名', '电话']
    """
    info = {}
    for k in keys_dict:
        # 默认该字段为空
        info[k] = "" 
        try:
            # 在列表中找到关键词的位置
            if k in cells:
                k_index = cells.index(k)
                # 取关键词的下一个位置作为值
                # 这里的逻辑可以根据实际表格结构调整,比如 +2 或者 +3
                value = cells[k_index + 1]
                info[k] = value
        except Exception as e:
            print(f"提取 {k} 失败: {e}")
    return info

3. PDF 转 Word (toolCore.py)

为了支持 PDF 简历,我们集成了 pdf2docx 库:

python 复制代码
from pdf2docx import Converter

def TransPdfToDocx(file_path, out_file):
    cv = Converter(file_path)
    cv.convert(out_file)
    cv.close()

4. 主程序调用 (Main.py)

在 PyQt 的主线程中,我们串联起所有逻辑:

python 复制代码
# 伪代码逻辑演示
def ok(self):
    # 1. 获取用户输入的关键词
    keys_dict = self.getInput_Key_dict()
    
    res = []
    # 2. 遍历文件列表
    for file in self.word_file_list:
        # 3. 提取表格内容
        cells = word_tables_to_list(file)
        # 4. 匹配数据
        info = get_info_from_cells(cells, keys_dict)
        res.append(info)
    
    # 5. 导出 Excel
    if res:
        data = pd.DataFrame(res)
        data.to_excel("output.xlsx", index=False)

📦 如何使用本项目

如果你想直接运行代码,请按照以下步骤操作:

第一步:克隆项目

bash 复制代码
git clone https://github.com/xy200303/automatic-word-summary
cd automatic-word-summary

第二步:安装依赖库

请确保你的 Python 环境安装了以下库(建议使用国内源):

bash 复制代码
pip install pandas python-docx pdf2docx pywin32 PyQt6 openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

注意:如果你要修改界面,还需要安装 pyqt6-tools

第三步:运行程序

bash 复制代码
python Main.py

第四步:操作流程

  1. 点击 "选取文件夹",选择包含简历/报名表的目录。
  2. "提取字段" 输入框中,输入你想提取的表头名称,用逗号隔开。
    • 例如:姓名,性别,出生年月,毕业院校,联系电话
  3. 点击 "开始处理"
  4. 等待日志滚动完毕,在原文件夹下的 output 目录中即可找到汇总好的 Excel 表格。

📝 总结与扩展

这个脚本虽然简单,但解决的是实实在在的痛点。特别是在处理格式固定的政务表单、学校报名表时,效率提升是数量级的。

未来优化方向:

  • 目前是取 Key 的下一个单元格,对于复杂的合并单元格表格,可能需要优化查找逻辑(比如根据坐标查找)。
  • 可以加入多线程处理,加快 PDF 转换的速度。
  • 利用正则表达式对提取出的电话、邮箱进行二次清洗。

如果你觉得这个项目对你有帮助,欢迎去 GitHub 点个 Star!如果有问题,也可以在评论区留言交流。

项目地址 👉 github.com/xy200303/au...

相关推荐
draking5 天前
从 3 小时到 15 分钟:我们的发布效率提升 10 倍之路
自动化运维
智能运维指南8 天前
信创深化期ITSM选型:打破流程割裂,锁定全栈适配的智能方案
自动化运维·aiops·it管理·itsm·itsm厂商
饼饼饼10 天前
从 0 到 1:前端 CI/CD 实战(第二篇:用Docker 部署 GitLab)
前端·自动化运维
唐叔在学习11 天前
用python实现类AI自动执行终端指令
后端·python·自动化运维
智能运维指南11 天前
2025四大自动化运维系统选型全景:核心能力与场景适配深度解析
自动化运维·自动化运维平台·it巡检·国产自动化运维厂商·自动化运维中心
老实巴交的麻匪14 天前
(九)学习、实践、理解 CI/CD 与 DevOps:持续发布 CD,从容器镜像到生产环境
运维·云原生·自动化运维
DigitalOcean14 天前
从零开始,用 n8n 设计可扩展的自动化工作流
自动化运维·devops
饼饼饼15 天前
从 0 到 1:前端 CI/CD 实战 ( 第一篇: 云服务器环境搭建)
运维·前端·自动化运维
vipbic16 天前
Nuxt 3 项目自动化部署到宝塔服务器全攻略 (GitHub Actions + rsync)
自动化运维