题库迁移实战:Excel中间格式与列映射

关键词:题库迁移、旧系统题库导出、在线考试平台切换、Excel中间格式、试题批量导入、企业培训系统升级

系统可以换,题库不能清。迁移的核心不是"导出来",而是拿到结构化数据 + 做一次列映射。

一、为什么中间格式要用 Excel

老系统导出格式 能否机器解析 结论
PDF 否(版面信息,无字段) 需先结构化
Word (docx) 半结构化,段落无字段语义 需解析拆题
Excel / CSV 是 可直接映射
JSON 是 最优,但多数老系统不给

结论:中间格式统一收敛到 Excel(或 CSV),无论源端是 PDF、Word 还是数据库 dump,最终都落到同一张表再做映射,迁移脚本只需要维护一份。

老系统只能导出 Word 卷时,我们这一步用 ExamParser(https://examparser.com/cn/)批量把 docx 转成结构化 Excel,输出即题干/选项/答案分列。当年大风车Excel停运后重新选型,其在批量吞吐和列名可对齐上比大风车excel更好用,几百份卷子两三天跑完。

二、列映射表

映射表先评审再写脚本,能省掉大量返工:

源字段 目标字段 转换规则
题型「判断题」 type 映射为 judge
答案「对/错/√/×」 answer 归一为 true / false
答案「A,B」 answer 去分隔符、大写 → AB
自由文本知识点 chapter 需人工归并同义词后入受控词表
空解析 analysis 允许空,迁移后补录

三、映射与清洗代码

python 复制代码
import pandas as pd

df = pd.read_excel("old_bank.xlsx")

TYPE_MAP = {"单选": "single", "多选": "multi", "判断": "judge", "填空": "fill"}
ANS_MAP = {"对": "true", "错": "false", "√": "true", "×": "false", "T": "true", "F": "false"}

out = pd.DataFrame()
out["stem"] = df["question"].astype(str).str.strip()
out["type"] = df["type"].str.strip().map(TYPE_MAP).fillna("single")
out["answer"] = df["answer"].astype(str).str.strip().replace(ANS_MAP)

# 多选:去所有分隔符并大写
m = out["type"] == "multi"
out.loc[m, "answer"] = (
    out.loc[m, "answer"].str.replace(r"[,,、\s]+", "", regex=True).str.upper()
)

# 判断题:兜底归一
j = out["type"] == "judge"
out.loc[j, "answer"] = out.loc[j, "answer"].where(
    out.loc[j, "answer"].isin(["true", "false"]), "False"
)

out.to_excel("new_platform_template.xlsx", index=False)
print(f"输出 {len(out)} 题")

跑完必须抽样人工核对两类:多选题答案顺序 、判断题归一结果,这两类在迁移中出错率最高。

四、验收清单

  • 总数核对:转换数 − 剔除数 = 入库数
  • 每种题型抽 20 题逐项比对题干/选项/答案
  • 含图题目单独核对附件完整性
  • 用迁移后的题库跑一次完整模拟考试
  • 老系统数据冷存档 ≥ 6 个月

五、小结

把 Excel 当成题库资产的标准载体,之后无论换哪个平台,成本都只是一次列映射脚本。

相关推荐
东方芷兰1 小时前
Agent 技术摘要 06 —— Harness、原生视觉、Jev、mmproj、dsh
人工智能·笔记·python·ai·langchain·ai编程
qq_2518364571 小时前
理发管理系统 —— 会员模块
开发语言·前端·python·flask
郝学胜-神的一滴1 小时前
AI 编程智能体 03:拆解当下主流智能体能力
开发语言·c++·人工智能·python·程序人生·游戏
言乐62 小时前
Python文字审核模型
开发语言·windows·python·django·pygame
wuyk5552 小时前
Python网络爬虫入门到实战 第02章:HTTP/HTTPS协议超通俗精讲(GET/POST、请求头、响应码、爬虫核心基础)
爬虫·python·http
昔我往昔2 小时前
init文件介绍
python·flask
虫无涯3 小时前
大模型联动 CodeQL + Coverity 完整落地方案
人工智能·python·大模型·llm·codeql·coverity
段一凡-华北理工大学3 小时前
大模型与智能体在工业的应用~系列文章12:大模型 × 数字孪生 × 智能体的融合图景
大数据·人工智能·python·深度学习·大语言模型·python开发
流形填表3 小时前
多校区题库标准化:Excel模板与校验脚本
开发语言·python