目录
目录README.md

📝 表单自动填写软件(决赛版 · 智能多模态 LLM)

本项目实现了一款 完全离线、零学习成本、智能多模态 的表单自动填写软件。
用户只需在简洁的 PySide6 界面上 选择资料文件夹和表单模板,系统即可自动完成:

  • 图片、PDF、Word、Excel、音频、文本 等多模态数据中提取用户信息;
  • 通过 本地部署的大语言模型 进行智能推理、冲突治理、字段对齐;
  • 将结果写入 .docx.xlsx 表单,并一键打开 LibreOffice 查看。

✨ 核心特点

  • 极简操作,零学习成本
    用户界面直观,操作流程简单 → 选择文件夹 → 选择模板 → 点击开始
    即使完全没有技术背景,也能立即上手。
  • 智能推理与冲突治理
    • Round 1:证据收集(优先展示异常/冲突/缺失字段)
    • Round 2:结构化 JSON 输出(字段对齐)
    • Round 3:单字段追问(自动补齐缺失值)
    • 支持用户指令:如“身份证号不要填写”,“学历以最高为准”。
  • 模型可切换
    内置多种本地大模型(通过 Ollama 管理):
    • Qwen3-32B → 高精度
    • Qwen-7B → 更快响应
    • NuExtract Tiny → 极速提取
  • 真实数据测试,更贴近实际
    我们在 /data 文件夹中使用了真实的个人数据
    • 身份证正反面照片
    • 简历 PDF
    • 个人简介 DOC
    • 手写图片
    • 语音录音
      让系统在真实环境下充分验证鲁棒性。
  • 三大模式,灵活选择
    • 自动填写(可解释模式):适合展示系统智能,带完整日志和冲突分析。
    • 极速填写(Fast Fill):一次出 JSON,立即写回结果。
    • 知识问答(QA 模式):用户可直接提问,如“我的医保卡号是多少?”,系统快速回答并给出来源文件。
  • 安全与隐私
    完全离线运行,所有数据仅在本地处理,不依赖任何外部 API。

数据来源

6d33cffeb3f961f9d6d26a9e3246c88c.png

运行效果

c44647af6655f5feb0fecbafb3d99e5f.png

a666b3a53d4a68847f26804e5cda906f.png f37c7af26300ad763222823899beb4aa.png


🧰 项目目录结构(简略)

form_filler/
├── main.py                 # 主程序入口
├── script.py               # 各个功能不同版本代码
├── requirements.txt        # pip依赖文件
├── data/                   # 测试文件夹,内含 pdf/docx/jpg/mp3 等
├── result/                 # 自动填写后的输出文档
└── README.md               # 本部署说明文件

⚙️ 环境搭建步骤(推荐使用 Conda)

✅ 第一步:创建 Conda 虚拟环境

conda create -n form_filler python=3.10 -y
conda activate form_filler

🔧 使用 Python 3.10 是为了兼容 paddleocrvosk 等依赖包,避免版本冲突。


✅ 第二步:安装 pip 依赖

pip install -r requirements.txt

💡 requirements.txt 包含了 OCR(PaddleOCR)、音频识别(VOSK)、PDF处理(PyMuPDF)、Excel/Word处理、可视化界面(Tkinter)、本地模型调用(Ollama)等所有依赖库。


🧠 第三步:本地部署 Qwen 7B 模型(通过 Ollama)

本项目通过 Ollama 进行本地化大语言模型推理,确保离线环境可用。

🧩 安装 Ollama(需具备 GPU 运行环境)

  1. 前往官方:https://ollama.com 下载并安装 Ollama。
  2. 启动 Ollama 后,在终端中拉取 Qwen-7B 模型:
ollama pull qwen:7b

🧠 Qwen-7B 是阿里云开源的大语言模型,推理能力强、响应速度快,且支持本地部署。

🔄 验证模型是否可用:

ollama run qwen:7b

键入任意问题即可验证是否启动成功。项目中的 main.py 会调用本地接口。


🚀 启动项目(main.py)

项目主程序为 main.py,通过图形界面操作文件夹批量导入信息。

python main.py

✨ 功能简介

  • ✅ 支持多模态数据读取(图像、音频、文本、PDF、Word、Excel)
  • ✅ 自动调用本地 Qwen-7B 大模型进行语义理解
  • ✅ 结构化提取常见用户字段(姓名、性别、电话、身份证、毕业院校等)
  • ✅ 支持自动填写 .docx.xlsx 表单模板
  • ✅ 完全离线运行,保障数据隐私
  • ✅ 可视化界面,支持中文滚动查看与任务提示

🛡️ 注意事项

  • 内存资源:推荐在 16GB RAM 以上设备运行本项目,Qwen-7B 建议 GPU >= 8GB
  • Ollama 配置:首次拉取模型约需下载数 GB,请确保磁盘空间足够;
  • 兼容性:推荐使用 Windows/Linux,macOS 部分视觉模型支持受限;
  • 中文字体显示问题:推荐系统中安装 fangsong ti 字体,并作为 Tkinter 默认字体。

📚 示例展示

如下图所示,项目将从图像/PDF/音频等中提取的信息通过 Qwen-7B 结构化为 JSON:

{
  "姓名": "张三",
  "性别": "男",
  "出生日期": "1995-01-01",
  "身份证号": "142724199501019876",
  "手机号": "13800135678",
  "毕业院校": "上海交通大学",
  "兴趣爱好": "篮球、编程"
}

并将以上信息自动写入 .docx.xlsx 表单。


📦 模型和依赖推荐说明

模块 工具/框架 描述
文本抽取 Python-docx / fitz / openpyxl 处理 Word、PDF、Excel 文档
图像识别 PaddleOCR(predict) 结构化中文图像文字识别
音频识别 VOSK + FFmpeg 离线语音转文本支持 mp3/wav
多模态理解与结构化 Qwen 7B @ Ollama 本地大语言模型,信息抽取助手
GUI 可视化 Tkinter + ScrolledText 原生 GUI 支持中文与滚动视图

🧪 示例测试文件夹

请在 data2/ 中准备如下文件进行功能测试:

  • *.jpg:带有身份信息等的图像;
  • *.docx:带有身份信息等的word文档;
  • *.xlsx:带有身份信息等的Excel表单;
  • *.mp3:带有身份信息的语音内容;
  • *.pdf / *.txt:带有身份信息的文本文件。

请在 result/ 中准备如下文件进行功能测试:

  • *.docx:表单模板;
  • *.xlsx:Excel表单模板;

🧾 授权 License

本项目遵循 MIT License,欢迎学习与二次开发,禁止用于非法用途。

关于
736.4 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号