云计算百科
云计算领域专业知识百科平台

题库迁移实战: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 允许空,迁移后补录

三、映射与清洗代码

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 当成题库资产的标准载体,之后无论换哪个平台,成本都只是一次列映射脚本。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 题库迁移实战:Excel中间格式与列映射
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!