智学网阅卷工作流
这个技能做什么
帮老师在智学网上完成某一道题的整场网上阅卷,从接管阅卷页到产出成绩分析一条龙。
默认走「CDP 浏览器自动化 + AI 看图判分」链路(已实战验证批完 437 份)。
两条链路,按条件选一条:
| 链路 | 适用 | 判分方式 | 说明 |
|---|---|---|---|
| CDP 自动化(推荐) | AI 接手批量阅卷 | AI 逐份看图判分 | 脚本抓卷/提交/存档,AI 负责判分 |
| Electron 桌面工具 | 老师自己盯分、无外网 | 工具内 RapidOCR 识别 | 见「工具链路」一节 |
> ⚠️ 重要前提修正:手写答案的 OCR 识别在实战中不可靠(对清晰手写也会返回空结果),
> 因此本 skill 的默认链路不使用 OCR 自动判分,改为 AI 直接看答卷图判分。
> OCR 相关能力保留给 Electron 工具链路作辅助参考。
关键前提(开工前先确认,避免白干)
向老师确认四件事:
- 考试/题目:哪场考试、第几题、满分多少、共多少份待阅。
- 标准答案与分值:每空答案 + 每空分值。没给就要求提供。
- 已阅进度:老师自己已阅到第几份。不要从第 1 份重新阅。
- 是否有人并行阅:同一题若有多位老师同时批,会出现进度跳变(见陷阱 4)。
快速开始(CDP 链路)
第 0 步:环境准备(只需一次)
pip install websocket-client pillow
- Chrome 路径:可用系统环境变量
AGENT_BROWSER_EXECUTABLE_PATH指定,
未设置时脚本默认用C:\Program Files\Google\Chrome\Application\chrome.exe。 - 首次需在该 Chrome 的独立 profile 里登录一次智学网(脚本用独立
--user-data-dir,不影响老师日常浏览器)。登录状态会持久化。
第 1 步:拿到阅卷页 URL
浏览器进智学网 → 打开本题的「个人阅卷」页 → 复制地址栏完整 URL。形如:
https://www.zhixue.com/webmarking/xxxx/#/marking/personal/
?isArbitration=false&markingPaperId=...&examId=...&gradeCode=10
第 2 步:启动调试浏览器(后台常驻)
python scripts/keep_chrome.py --url "<阅卷页URL>" --port 9222
> 必须用后台常驻方式运行(如 WorkBuddy 的 run_in_background)。
> 用 nohup ... & 启动会随会话结束被回收。
第 3 步:阅卷循环(核心)
# 查看进度与当前卷 uid
python scripts/zx_mark.py --url "<阅卷页URL>" --full 14 state
# 抓当前卷图(不提交),AI 读 <work>/view.jpg 判分
python scripts/zx_mark.py --url "<阅卷页URL>" --full 14 grab
# 判分后提交,并自动抓下一份
python scripts/zx_mark.py --url "<阅卷页URL>" --full 14 step 8
step 会依次:存档当前卷 → 点分数 → 提交 → 等切卷 → 抓下一份 → 写 gradelog.jsonl。
脚本输出的 view 字段就是下一份待判图的路径,AI 读它判分后再执行下一个 step,如此循环。
产出目录(默认 ./zx_work):
- archive/ — 每份答卷原图存档(序号_uid.jpg)
- gradelog.jsonl — 逐份得分日志
- view.jpg — 裁掉页眉后待判的当前卷图
第 4 步:收尾统计
python scripts/gen_report.py --log zx_work/gradelog.jsonl --full 14 --csv 得分明细.csv
输出平均分、满分率、及格率、零分率、分数段分布。及格线默认满分 60%,
可用 --pass 8 / --excellent 12 覆盖。
第 5 步:阅卷总结与补充练习(AI 产出)
基于统计结果,用 tencent-docx 技能生成 Word:高频失分点分析 + 分层补充练习。
判分原则见 references/ai-grading.md。
五个实战陷阱(必读)
这些是批完 437 份踩出来的坑,不遵守会卡死或误判。
-
SPA hash 路由:同 URL 的
Page.navigate是空操作
阅卷页是 hash 路由,对当前同一 URL 导航不会重新加载,图片也不刷新。
恢复方法:先Page.reload(会先跳回试卷列表),再 navigate 回阅卷 URL。
zx_mark.py的nav_marking()已封装此逻辑。 -
OSS 图片签名会过期(403)
答卷图是带签名的临时直链,闲置约 2 小时后失效。
处理:重新走reload + navigate拿新签名,不会丢失阅卷进度。 -
提交后不要盲目 reload
提交后前端会把预加载的 next 提升为 current。正确做法是等 uid 变化;
只有 uid 长时间不变(卡住)时才用nav_marking()恢复。 -
并行阅卷会导致进度跳变
同一题若有多位老师同时批,计数器可能从 231 直接跳到 399。
发现跳变时先暂停提交,向老师确认是否继续,避免重复批改。 -
OCR 不可用于自动判分
实测 RapidOCR 对清晰手写也返回空。判分必须 AI 看图。
详细恢复手册见 references/cdp-automation.md。
判分方法(AI 看图)
核心原则(详见 references/ai-grading.md):
- 划改取终值:学生划掉重写时,以最终未被划掉的值为准。
- 数值等价宽容:
0.20=0.2、1.0=1、4.0=4=4.0%(看答案是否要求带单位)。 - 逐空独立判分:多空题每空独立对错,累计总分;不要因为某空错就连带扣后面。
- 空白即 0 分:未作答的空不得分。
- 字迹不清要放大复核:用 PIL 裁剪放大局部再判,不要凭模糊印象下分。
工具链路(Electron 桌面工具,可选)
适用老师自己盯分、或环境无外网时。工具名「智学网阅卷辅助工具」
(Electron 31 + BrowserView,内嵌浏览器 + 本地 RapidOCR 离线识别)。
- 菜单「文件 → 导入答案与评分细则」导入 Word/PDF/txt(格式见
references/answer-format.md)。 - 「阅卷模式」三选一:自主 / 辅助 / 自动。
- 「数据统计 → 生成小分汇总」导出 Excel(正答率、常见错误 Top3)。
- 判分匹配规则见
references/grading-rules.md,故障排查见references/tool-troubleshooting.md。
目录
references/cdp-automation.md— CDP 链路故障排查与恢复手册(五大陷阱详解)references/ai-grading.md— AI 看图判分原则、划改取终值、数值容错、常见错误references/answer-format.md— 答案与评分细则的导入格式约定references/grading-rules.md— 判分匹配规则 + 化学 OCR 误读对照references/tool-troubleshooting.md— Electron 工具故障排查scripts/zx_mark.py— 通用阅卷客户端(state/step/grab,参数化)scripts/keep_chrome.py— 启动并保活 CDP 调试 Chromescripts/cdp_client.py— 轻量 CDP 客户端(无 playwright/selenium 依赖)scripts/gen_report.py— 阅后得分统计 + CSV 导出scripts/mark_assist.py— 判分内核独立实现(脱离浏览器也能判分/统计)