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

如何用 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.xdnf.cn/news/15556.html

相关文章:

  • AWS Lambda 最佳实践:构建高效无服务器应用的完整指南
  • Python 网络爬虫 —— requests 库和网页源代码
  • 永磁同步电机MTPA与MTPV曲线具体仿真实现
  • 大模型领域主流向量模型相似度算法、架构及指标对比
  • 在windows平台上基于OpenHarmony sdk编译三方库并暴露给ArkTS使用(详细)
  • 数据结构 栈(1)
  • 聚观早报 | 英伟达股价再创新高;中国联通eSIM手机业务开通上线;中国AI加速出海 阿里云提供全栈能力支持
  • Cookie 与 Session概述
  • 第2章通用的高并发架构设计——2.6 高并发写场景方案1:数据分片之数据库分库分表
  • R语言基础| 基本图形绘制(条形图、堆积图、分组图、填充条形图、均值条形图)
  • 软件项目管理学习笔记
  • 如何在PyCharm中删除虚拟环境
  • 项目--五子棋(模块实现)
  • mysql备份与视图
  • MyBatis延迟加载(Lazy Loading)之“关联查询”深度解析与实践
  • Spring原理揭秘--Spring的AOP
  • linux_线程同步
  • 「Java案例」递归实现整数的倒置
  • springboot打包二次压缩Excel导致损坏
  • git@github.com: Permission denied (publickey).
  • 基于5G系统的打孔LDPC编码和均匀量化NMS译码算法matlab性能仿真
  • 前端-HTML
  • 算法竞赛备赛——【图论】求最短路径——Dijkstra
  • 【Bluedroid】btif_a2dp_sink_init 全流程源码解析
  • (转)Kubernetes基础介绍
  • flask request实现两台PC之间文件传输通信
  • 解锁 iOS 按键精灵辅助工具自动化新可能:iOSElement.Click 让元素交互更简单
  • 【AI News | 20250716】每日AI进展
  • 《C++初阶之STL》【auto关键字 + 范围for循环 + 迭代器】
  • Java双冒号操作符全面解析