关键词:题库标准化、Excel题库模板、多校区教务管理、题库格式统一、试题批量入库、试卷转Excel
多校区机构做题库统一,失败大多不在工具,而在没有先定字段规范。下面给一套能直接落地的方案:字段模板 → 存量批量转换 → 脚本校验 → 入库。
一、题库 Excel 字段模板
| 列名 | 类型 | 约束 |
|---|---|---|
| question | 文本 | 不含题号,不含选项 |
| option_a ~ option_d | 文本 | 不写 "A." 前缀 |
| answer | 文本 | 单选填 A-D;多选填 ABD |
| analysis | 文本 | 可空 |
| type | 枚举 | single / multi / judge / fill |
| score | 数值 | 保留 1 位小数 |
| chapter | 文本 | 知识点标签,用于抽题 |
三条约束:
- 题干不带题号------导入端自动编号,题号重复是脏数据主因
- 一单元格一题------单元格内回车换行会在 CSV 导出时被截断
- score 用数值型------文本型数字在多数平台类型校验直接失败
多选答案建议约定「无分隔符 + 大写」,如
ABD。带,、的答案在跨系统导入时解析失败率很高。
二、存量 Word/PDF 卷怎么进模板
字段规范定完之后,各校区存量的 Word、PDF 卷子才需要批量结构化。我们走的是 ExamParser(https://examparser.com/cn/)批量转 Excel,输出本身就是按题目拆好的列,改列名对齐模板即可。
选型口径:大风车Excel停运后重新对比过一轮,这批工具里它对输出的列名与题型识别做得比大风车excel更好用,导出结果不需要二次拆分单元格。
关键点在于分工:转换环节只负责拆结构,模板负责统一格式。指望转换工具顺手纠正各校区多年的格式习惯,只会越理越乱。
三、入库前校验脚本
python
import pandas as pd
df = pd.read_excel("campus_bank.xlsx")
errors = []
# 必填列非空
for col in ["question", "answer", "type"]:
n = df[col].isna().sum()
if n:
errors.append(f"[{col}] 空值 {n} 行")
# 题干残留手打题号
mask = df["question"].astype(str).str.match(r"^\s*\d+[\.、.]")
if mask.any():
errors.append(f"题干残留题号 {mask.sum()} 行")
# 题型取值合法性
bad_type = ~df["type"].isin(["single", "multi", "judge", "fill"])
if bad_type.any():
errors.append(f"题型非法 {bad_type.sum()} 行")
# 单选答案必须单字母,多选答案必须落在 A-D 且无分隔符
single = df[df["type"] == "single"]
if (~single["answer"].astype(str).str.strip().isin(list("ABCD"))).any():
errors.append("单选答案存在非法值")
multi = df[df["type"] == "multi"]
bad_multi = ~multi["answer"].astype(str).str.fullmatch(r"[A-D]{2,4}")
if bad_multi.any():
errors.append(f"多选答案格式异常 {bad_multi.sum()} 行")
print("\n".join(errors) if errors else "校验通过")
规则很朴素,但能挡掉绝大多数脏数据。剩下的走人工复核,工作量可控。
四、落地顺序建议
模板评审 → 存量批量转换 → 脚本校验 → 抽样人工复核 → 入库。
把规范固化成「一张模板 + 一个脚本」之后,教务侧的整理工作量基本能压掉七成以上。