nops_eval()未识别开放式字符串题扫描结果,扫描文件含重复页
解决exams包nops_eval无法读取开放式字符串题扫描结果的问题
问题背景
- 通过
exams::exams2nops()制作包含单选题、多选题、开放式字符串题的笔试 - 分别用
nops_scan("xx.pdf")和nops_scan("yy.pdf", string = TRUE)扫描试卷,生成的nops_scan_*.zip(内含Daten.txt)和nops_string_scan_*.zip(内含Daten2.txt)文件外观正常 - 执行以下代码后,单选题、多选题结果可正常识别,但
ev对象的scan2列全为空字符串"":ev <- nops_eval(register = "participants.csv", solutions = "solutions.rds", scans = "nops_scan_20251203064700.zip", string_scans = "nops_string_scan_20251203065026.zip") - 后续排查发现:字符串扫描文件
yy.pdf存在重复扫描的页面
原因分析
nops_scan(string = TRUE)依赖PDF页面的顺序和唯一性匹配考生ID与对应的字符串题答案。当扫描PDF包含重复页面时,生成的Daten2.txt会出现页码错位或重复记录,导致nops_eval无法正确关联考生信息与字符串题答案,最终scan2列无有效数据。
解决方案
- 清理扫描PDF
- 打开
yy.pdf,删除所有重复的扫描页面,确保每个考生的字符串题页面唯一且按考生顺序排列正确
- 打开
- 重新生成字符串扫描压缩包
- 对清理后的PDF文件重新执行扫描命令:
nops_scan("cleaned_yy.pdf", string = TRUE)
- 对清理后的PDF文件重新执行扫描命令:
- 重新运行nops_eval
- 使用新生成的
nops_string_scan_*.zip文件替换原文件,再次执行评分代码:ev <- nops_eval(register = "participants.csv", solutions = "solutions.rds", scans = "nops_scan_20251203064700.zip", string_scans = "nops_string_scan_新生成的文件名.zip")
- 使用新生成的
- 验证结果
- 检查
ev$scan2列,确认开放式字符串题的扫描内容已正确加载
- 检查
内容的提问来源于stack exchange,提问作者sammerk
相关产品推荐
相关产品推荐

