Install
openclaw skills install @beek5996admin/skill-exam-bank试卷转题库:真题 PDF/图片 → 内网 exam-ocr(:8000, RapidOCR) 解析 → 抽取成 17 列表头题库 Excel。适用于"把真题转成题库/excel""整理试卷成题库""PDF 真题入库"。来源:OpenClaw「真题转题库」技能的本地化版本(2026-09-08 生成,2026-09-09 迁移到 WorkBuddy)。
openclaw skills install @beek5996admin/skill-exam-bankarchive.py,归档目录由调用方用 --to 或环境变量 EXAM_BANK_ARCHIVE_DIR 指定,未指定则跳过归档;技能不再内置任何固定路径,便于分发给外部用户/parse-async + 轮询 /task/{id},--owner 跨用户公平轮转(单用户上限 20、结果保留 1h、并发不阻塞);--sync 可退回同步 /parse;新增 NAS 题库归档规范2026年4月 格式(原为纯年份 2026);auto_run 的 --month 参数接通/parse-async//task/{id}//write-excel);地址由环境变量 EXAM_OCR_URL 提供,示例 http://<服务IP>:8000(本技能不内置固定地址)C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/python.exe(venv 已装 requests)parse_ocr.py / write_excel.py / check_missing.py / auto_run.py / archive.py(可选归档)parse_ocr.py 默认走异步 /parse-async + 轮询 /task/{id},多智能体并发时按 owner 公平轮转、不阻塞;--owner <名> 标识调用方(本机建议 --owner workbuddy);加 --sync 退回同步 /parse。单 owner 队列上限 20(超了返回 429),结果保留 1 小时课程 | 知识点 | 题型 | 题目内容 | 选项A | 选项B | 选项C | 选项D | 选项E
正确答案 | 难度 | 状态 | 是否真题 | 是否模拟试卷 | 是否考前押题 | 年份 | 解析
题号(供漏题自检,写 xlsx 时自动丢弃)EXAM_OCR_URL="$EXAM_OCR_URL" <python> parse_ocr.py <试卷> <试卷>.ocr.md --owner <你的标识>
--sync)<试卷>.json<python> write_excel.py <试卷>.json <输出.xlsx> --url "$EXAM_OCR_URL"
<venv python> check_missing.py <试卷>.json <试卷>.ocr.md,退出码 1=缺题DEEPSEEK_API_KEY=sk-xxx <venv python> auto_run.py <pdf> <out.xlsx> \
--course 马克思主义基本原理 --year 2026 [--month 4] \
--url "$EXAM_OCR_URL" [--ocr-md out.md]
内部自动完成 OCR→deepseek 抽取→写表→自检→补题(≤3 轮)。key 用调用方自己的,不共用 OpenClaw 的。--month 4 会拼进年份列写成 2026年4月;同课程同年多考期务必带上。
你是自考题库整理助手。下面是一份真题 OCR 文本。请按以下字段把每道题抽成一条 JSON 记录,
并额外给每条加一个整数 题号(全局连续编号:单选从1起、简答续编、论述续编;若原卷分节编号也请按阅读顺序编成全局连续号)。
输出 JSON 数组,每条字段顺序:
["题号","课程","知识点","题型","题目内容","选项A","选项B","选项C","选项D","选项E","正确答案","难度","状态","是否真题","是否模拟试卷","是否考前押题","年份","解析"]
规则:
- 选择题答案通常在试卷末尾"参考答案"区,请把正确选项字母关联到对应题目;找不到答案填 ""。
- 选项只填 A~E 有内容的;无则空字符串。
- 题型从"单选/多选/判断/填空/简答/计算/论述"中归类。
- 年份列填试卷考期(从页首标题提取,如"2026年4月高等教育自学考试…"则填 2026年4月),格式固定"XXXX年X月";是否真题=是;状态=启用;是否模拟试卷/是否考前押题=否。
- 题目内容保留完整题干(含题号文字),去掉页码/页眉页脚噪点。
- 解析列必填(重点):客观题写 1~3 句,讲清正确项成立的依据,并点明主要干扰项为什么错;主观题写 3~5 条得分要点;判断题说明正确的表述应该是什么。禁止留空、禁止只写"略"、禁止照抄题干。
只输出 JSON 数组,不要任何解释文字。
GET /health → 健康检查(含队列状态 queued/tasks/users)POST /parse(multipart file)→ {ok, pages, markdown, blocks}(同步,会阻塞)POST /parse-async(file, ?owner=)→ 异步提交,立即返回 {task_id, status}(推荐)GET /task/{task_id} → 任务状态 queued→running→done/failed,done 带完整 resultGET /tasks?limit=20&owner=xx → 任务列表(可按 owner 过滤,倒序)POST /write-excel(json {schema, records})→ 返回 .xlsx 文件流本技能不内置任何固定归档路径——部署环境不同,归档位置由调用方给出:
# 方式1:显式指定归档根目录
python archive.py <xlsx> <原卷.pdf> <.ocr.md> <.json> <.json.check.json> \
--to "<你的归档根目录>" --subject "<课程代码><科目名>"
# 方式2:预先设置环境变量,之后省略 --to
export EXAM_BANK_ARCHIVE_DIR="<你的归档根目录>"
python archive.py <文件...> --subject "15044马克思主义基本原理"
--subject "<课程代码><科目名>",如 06869实验室管理学;不给 subject 则直接放根目录.bak.ocr.md + .json + .json.check.json(漏题自检报告)$EXAM_OCR_URL 填对、exam-ocr 容器在跑、端口可达--ownercurl "$EXAM_OCR_URL/task/<task_id>" 查状态;结果只保留 1 小时