当前位置: 首页 > news >正文

如何用 Python + LLM 构建一个智能栗子表格提取工具?

在日常办公和数据处理场景中,“Word 表格 → Excel 汇总” 是一项高频却重复的任务,尤其当面对几十上百份结构不一致的 Word 文件时,传统的手动复制粘贴方式既耗时又易错。

今天,我们将以“栗子表格”为例,结合 Python 和大语言模型(LLM, Large Language Model),一步步拆解并构建一个智能表格提取工具,实现 Word 表单字段的自动识别、标准化、对齐与 Excel 生成。

本文适合具备一定 Python 基础、对 AI+办公自动化感兴趣的开发者或数据处理工程师阅读。


🧩 背景问题:为什么这不是简单的“提取表格”?

传统的表格提取工具往往假设所有 Word 文件格式一致、字段标准。但真实世界的数据,往往存在:

  • 表格字段名称不统一(“电话” vs “手机号”)

  • 表格结构不同(横向 vs 纵向,字段顺序混乱)

  • 多语言、缩写、错别字混杂

  • 不同用户可能删除或新增字段

我们需要的不只是“读取表格”,而是理解表格语义识别字段含义统一结构输出。这正是 LLM 的强项。


🛠️ 技术栈概览

模块技术实现
文档解析python-docx / docx2txt
数据标准化自定义规则 + LLM(OpenAI / Claude)
表格结构化pandas + 字段映射逻辑
Excel 导出openpyxl / xlsxwriter
批处理系统Python 脚本 + CLI / Web UI

第一步:提取 Word 表格中的字段和值

使用 python-docx 读取 .docx 文件中的表格内容,并将其解析为键值对结构。

from docx import Documentdef extract_table_fields(doc_path):doc = Document(doc_path)data = {}for table in doc.tables:for row in table.rows:if len(row.cells) >= 2:key = row.cells[0].text.strip()value = row.cells[1].text.strip()data[key] = valuereturn data

📌 注意事项:

  • 有些表格可能为“横向”填写,需自定义判断方式

  • 多个表格时需合并字段(非覆盖)


第二步:使用 LLM 做字段归一化(字段别名识别)

面对多种字段命名(“联系电话”、“手机”、“联系方式”),我们可以构建一个 LLM Prompt,让模型来做智能匹配。

import openaidef normalize_fields(data_dict):prompt = f"""
你是一个表单标准化工具,以下是原始字段和值:{data_dict}请将字段名标准化为以下之一:
["name", "gender", "phone", "email", "age"]返回格式:{{标准字段名: 原始值}} 的 JSON。
"""response = openai.ChatCompletion.create(model="gpt-4",messages=[{"role": "user", "content": prompt}],temperature=0.2)return eval(response['choices'][0]['message']['content'])

🧠 优势:

  • 能够处理拼写差异、语义近似的字段

  • 可以自定义标准字段集合,适配不同表单类型


第三步:批量处理文件夹中的 Word 文件

结合前两步,我们构建一个完整的提取逻辑,处理多个 Word 文档并合并为 Excel。

import os
import pandas as pddef batch_process(folder_path):records = []for filename in os.listdir(folder_path):if filename.endswith(".docx"):path = os.path.join(folder_path, filename)raw_data = extract_table_fields(path)normalized_data = normalize_fields(raw_data)normalized_data["file_name"] = filenamerecords.append(normalized_data)df = pd.DataFrame(records)df.to_excel("output.xlsx", index=False)

📂 示例输入结构:

data/
├── 表单1.docx
├── 表单2.docx
├── 表单3.docx

📄 输出文件:output.xlsx(每行代表一份 Word 表)


第四步:构建一个 Web 前端(可选)

如果你想让非程序员也能使用这个工具,可以考虑用 Streamlit 快速构建一个交互式界面:

pip install streamlit
import streamlit as stst.title("栗子表格:智能 Word 表单提取工具")
uploaded_files = st.file_uploader("上传 Word 表格", accept_multiple_files=True, type="docx")if st.button("一键提取"):results = []for file in uploaded_files:raw = extract_table_fields(file)clean = normalize_fields(raw)results.append(clean)df = pd.DataFrame(results)st.dataframe(df)df.to_excel("out.xlsx", index=False)st.success("提取完成,可下载!")

🎉 最终,你将拥有一个带界面、支持批量上传的智能表单提取系统!


🔍 延伸优化方向

  • 📊 字段聚合模型微调(支持行业自定义词汇)

  • 📌 错误字段校验(加入验证规则,如手机号长度)

  • 🔄 增量更新模式(避免重复导出)

  • 🧠 本地化 LLM(如使用 Claude、LLaMA、通义千问等国产模型)

通过 Python + LLM,我们可以快速构建一个强大、可扩展的 Word 表单提取工具。它不仅提升了效率,更解决了传统脚本难以处理的“语义理解”和“字段对齐”问题。

📌 项目关键点:

  • 利用 LLM 实现字段归一化

  • 保持字段顺序一致性和数据完整性

  • 支持批量导出 Excel,适配真实办公场景


 项目地址 & 推荐平台

想体验无代码版本?可以试试已有产品 👉
栗子表格:https://liziform.top

http://www.lryc.cn/news/591751.html

相关文章:

  • VSCode 配置 C# 开发环境完整教程(附效果截图)
  • 深入解析Hadoop:机架感知算法与数据放置策略
  • 在 Windows Server RDS 上配置用户配置文件磁盘查找对应的用户名
  • LeetCode|Day17|242. 有效的字母异位词|Python刷题笔记
  • 每日钉钉API探索:createDing一键发起DING消息
  • 嵌入式基础 -- ADC(模数转换器,Analog to Digital Converter)
  • Spring Boot 中 META-INF 的作用与功能详解
  • AI编程实战:如何让AI生成带参数和返回值的Python函数——以PDF文本提取为例
  • 锂电池制造行业MES特色解决方案:差异化生产管控与智能工厂实践
  • c++ 模板元编程
  • CAD model dataset 下载
  • centos7开启ntp并同步时间到指定时区
  • 航班管家sid参数加密纯算分析
  • 使用 Nacos + Higress 连接 Agent 和 MCP 服务进行使用
  • 相位中心偏置天线的SAR动目标检测
  • C++进阶-AVL树(平衡二叉查找树)(难度较高)
  • 由几道数量关系考题引起的思考
  • 【CodeTop】每日练习 2025.7.17
  • Python类型转换,深浅拷贝
  • 【深度学习】神经网络过拟合与欠拟合-part5
  • DiffPy-CMI详细安装教程
  • ubuntu 22.04 pam 模块设置用户登录失败锁定
  • 网络基础11 上公网--Internet接入技术
  • python的旧时光咖啡厅数据分析管理系统
  • 深入理解CSS定位:绝对定位的包含块机制
  • JUnit5 实操
  • 征程 6 UCP 任务优先级 抢占简介与实操
  • 流程控制( break与continue)
  • Xss-labs 靶场lever1~lever8通关练习
  • windows利用wsl安装qemu