三步生成与真题题型结构完全一致的仿真试题,内置质量自动校验:
知识库资料 真题模板
│ │
▼ ▼
[OCR文字提取] [OCR文字提取] ← 支持图片/扫描件
│ │
▼ ▼
[AI提取知识点] [AI分析题型结构]
│ │
└───────┬───────────┘
▼
[AI生成仿真试题]
│
▼
[自动质量校验] ← 新增
│
▼
Markdown / Word / TXT
核心能力:
如果已有 ocr-pro 环境,无需额外安装——直接复用:
PYTHON="C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\python.exe"
# 1. 创建虚拟环境
C:\Users\Administrator\.workbuddy\binaries\python\versions\3.13.12\python.exe -m venv C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro
# 2. 安装核心依赖(RapidOCR,必装,约100MB)
C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\pip.exe install rapidocr-onnxruntime opencv-python PyMuPDF
# 3. 安装 EasyOCR(可选,仅处理手写体/多语言时需要,约1.5GB)
C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\pip.exe install easyocr
> 说明:RapidOCR 足以覆盖 90% 场景(中英文印刷体)。EasyOCR 仅在手写体或低质量扫描件时需要,装不装看需求。首次 OCR 时会自动下载 ONNX 模型(约 60MB),无需手动操作。
命令中的 {{PYTHON}} 和 {{SCRIPTS_DIR}} 约定:
| 变量 | 实际路径 |
|---|---|
| ------ | --------- |
{{PYTHON}} | C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\python.exe |
{{SCRIPTS_DIR}} | C:\Users\Administrator\.workbuddy\skills\知识库仿真题生成\scripts |
提供两类文件(支持 PDF / 图片 / Word / TXT):
仅图片/扫描件需要此步骤。文字型 PDF/Word/TXT 直接读取。
# 图片OCR(自动选择最佳引擎)
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine auto --detail
# 扫描版PDF → 先转图片再OCR
{{PYTHON}} {{SCRIPTS_DIR}}/pdf_to_images.py --input "<scan_pdf>.pdf" --output "<temp_dir>" --dpi 300
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<temp_dir>" --engine auto --output "<ocr_output>"
# 英文试卷专项
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "<image>" --output "<temp>" --mode english
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<temp>" --engine english --detail
将知识库文本发送给 AI,提取结构化知识点:
将真题模板文本发送给 AI,提取:
将知识点 + 题型结构发给 AI,生成要求:
{{PYTHON}} {{SCRIPTS_DIR}}/quality_checker.py \
--paper "<生成的试题>.md" \
--knowledge "<知识点JSON>.json" \
--template "<题型结构JSON>.json" \
--output "<质量报告>.json"
校验通过(评级 A 或 B)即可使用;不通过则返回 Step 5 重新生成,或进入反馈迭代。
quality_checker.py 对生成的试卷进行 6 维度自动检查,满分 100 分:
| 维度 | 满分 | 检查内容 |
|---|---|---|
| ------ | :---: | --------- |
| 答案完整性 | 25 | 是否每道题都有答案/解析;答案覆盖率 |
| 知识点覆盖率 | 20 | 提取的知识点有多少实际被出题;各难度知识点是否均衡覆盖 |
| 难度分布 | 15 | 难:中:易比例是否合理(期望 ~2:5:3) |
| 题型结构匹配 | 20 | 生成试卷的题型是否与模板一致;总分是否匹配 |
| 内容去重 | 10 | 是否存在高度相似的重复题目(相似度 > 70% 即标记) |
| 格式检查 | 10 | Markdown 结构是否完整、题号是否连续、是否 AI 拒绝生成 |
评级标准:
≥90% → A(优秀,可用于正式场景)
≥75% → B(良好,建议小幅修改)
≥60% → C(及格,存在明显问题)
≥40% → D(较差,建议重新生成)
<40% → F(不合格,必须重新生成)
输出示例:
{
"overall": {
"total_score": 85.0,
"max_score": 100,
"percentage": "85.0%",
"grade": "B(良好)",
"verdict": "试卷质量良好,建议小幅修改后使用"
},
"dimensions": [
{"name": "答案完整性", "weight": 25, "score": 25.0, "issues": []},
{"name": "知识点覆盖率", "weight": 20, "score": 16.0, "issues": ["知识点覆盖率偏低:45%"]},
...
],
"issue_summary": {
"critical": [],
"warnings": ["知识点覆盖率偏低:45%"],
"suggestions": ["部分题目缺少解析"]
}
}
只检查格式和去重(无需知识点/模板 JSON):
{{PYTHON}} {{SCRIPTS_DIR}}/quality_checker.py --paper "output.md"
如果质量校验不通过,或用户想修改特定题目,支持以下操作:
对 Agent 说"选择题的第 3 题考点重复了,换成过去完成时的题目"——Agent 会带上原文 + 修改指令重新调用 AI,只替换指定部分。
# 查看摘要
{{PYTHON}} {{SCRIPTS_DIR}}/quality_checker.py --paper "paper.md" \
--knowledge "kb.json" --template "tmpl.json" --brief
根据输出的问题清单,告诉 Agent 要修正什么:
支持在不改变整卷结构的情况下,只替换某一题型或某一道题:
> Agent,只重新生成阅读理解部分,其他保持不变。
每次生成后命名为 v1 / v2 / v3,保留历史版本便于回溯对比。
| 场景 | OCR 引擎 | 预处理模式 |
|---|---|---|
| ------ | --------- | ----------- |
| 中英文混合印刷 | rapidocr | standard |
| 纯英文试卷 | english(en_PP-OCRv3) | english |
| 手写体/低质量 | handwriting(EasyOCR+V5) | handwriting |
| 扫描版 PDF | 先转图片再 auto | 按内容选择 |
| 数字 PDF/Word/TXT | 无需 OCR,直接读取 | — |
# 用户有:Unit5-7笔记.pdf(扫描件)、2024期末真题.pdf(数字版)、知识点汇总.docx
# Step 1: 处理扫描件笔记
{{PYTHON}} {{SCRIPTS_DIR}}/pdf_to_images.py \
--input "D:/materials/Unit5-7笔记.pdf" \
--output "D:/materials/笔记_images" --dpi 300
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py \
--input "D:/materials/笔记_images" \
--engine auto \
--output "D:/materials/笔记_ocr.txt"
# Step 2: 真题是数字版,直接让 Agent 读取
# Agent: 读取 D:/materials/2024期末真题.pdf → 识别为数字PDF → 直接提取文本
# Step 3: 知识点汇总也是文字版
# Agent: 读取 D:/materials/知识点汇总.docx → 提取文本
# Step 4: 合并知识库文本(笔记OCR + 知识点汇总)
# Step 5: Agent 调用 AI → 提取知识点 JSON → 保存为 kb.json
# Step 6: Agent 调用 AI → 分析真题结构 JSON → 保存为 tmpl.json
# Step 7: Agent 调用 AI → 生成仿真试题 → 保存为 paper_v1.md
# Step 8: 质量校验
{{PYTHON}} {{SCRIPTS_DIR}}/quality_checker.py \
--paper "D:/materials/paper_v1.md" \
--knowledge "D:/materials/kb.json" \
--template "D:/materials/tmpl.json" \
--output "D:/materials/quality_report.json"
# 如果评级 B 以上 → 直接用;否则 → 反馈迭代
# 预处理手写体笔记
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py \
--input "D:/materials/handwritten_notes.jpg" \
--output "D:/materials/handwritten_preprocessed.jpg" \
--mode handwriting
# 手写体 OCR
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py \
--input "D:/materials/handwritten_preprocessed.jpg" \
--engine handwriting --detail
# 英文试卷预处理 + OCR
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py \
--input "D:/materials/english_exam.jpg" \
--output "D:/materials/english_preprocessed.jpg" \
--mode english
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py \
--input "D:/materials/english_preprocessed.jpg" \
--engine english --detail
# 知识库和真题都是 Word/TXT,直接让 Agent 读取
# 跳过 OCR 步骤,直接进入 AI 分析 → 生成 → 校验
# 生成后质量校验
{{PYTHON}} {{SCRIPTS_DIR}}/quality_checker.py \
--paper "D:/materials/paper_v1.md" \
--brief
生成 Markdown 试题后,必须调用 md_to_docx.py 自动转换为 Word (.docx) 交付:
{{PYTHON}} {{SCRIPTS_DIR}}/md_to_docx.py \
--input "<试卷>.md" \
--output "<试卷>.docx"
所需依赖(首次使用需安装):
{{PYTHON}} -m pip install python-docx
转换特性:
~/.workbuddy/skills/知识库仿真题生成/
├── SKILL.md # 本文件
├── scripts/
│ ├── ocr_pipeline.py # OCR 流水线(5引擎+智能选择+合并)
│ ├── preprocess.py # 图像预处理(3种模式)
│ ├── pdf_to_images.py # PDF → 图片
│ ├── format_correction.py # LLM 纠错 Prompt 生成器
│ ├── model_downloader.py # 模型自动下载(首次运行触发)
│ └── quality_checker.py # 试题质量自动校验器(6维度)
└── references/
└── engine_comparison.md # OCR 引擎对比参考
共 2 个版本