当前位置: 首页 > 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.dtcms.com/a/284114.html

相关文章:

  • Spring,Spring Boot 和 Spring MVC 的关系以及区别
  • 深入解析Hadoop:机架感知算法与数据放置策略
  • #Linux内存管理# vm_normal_page()函数返回的什么样页面的struct page数据结构?为什么内存管理代码中需要这个函数?
  • 【机器学习】第三章 分类算法
  • 如何判断你的EDA工具安装是否真的成功?
  • 数据呈现:让图表说话,从数字到洞察的可视化艺术
  • “显著性”(Saliency)是计算机视觉中的一个重要概念,主要指的是图像或视频中最吸引人注意力的区域或对象
  • Python进阶操作——创建容器
  • Ubuntu开启root用户登陆
  • MyBatis延迟加载(Lazy Loading)之“关联查询”深度解析与实践
  • ros0基础-day13
  • java之json转excel生成
  • Oracle11.2.0.4 RAC迁移升级Oracle19.3 RAC
  • R语言基础| 基本图形绘制(条形图、堆积图、分组图、填充条形图、均值条形图)
  • 规则引擎rule-engine(三)可视化api设计和实现解释
  • 解读一个大学专业——信号与图像处理
  • 2025年Java后端秋招面试的高频八股文+场景题
  • NFS、iSCSI 和lnmp部署操作
  • 深度学习之神经网络(二)
  • 神经网络常见激活函数 15-B-SiLU 函数
  • OCR 赋能档案数字化:让沉睡的档案 “活” 起来
  • 无线充电技术详解:原理、芯片选型与应用场景
  • Android开发中Retrofit使用方法与底层原理详解
  • 学习设计模式《十八》——备忘录模式
  • 第5天 | openGauss中一个用户可以访问多个数据库
  • 数据分析:从数据到决策的核心逻辑与实践指南
  • 微信小程序地理定位功能
  • SLG 游戏如何进行防破解和防盗版保护?
  • 从 SEO 到 GEO:解锁 AI 时代的搜索优化新机遇
  • 数据结构:集合操作(Set Operations): 并集(Union)、交集(Intersection)、 差集(Difference)