原贴所在位置:【插件分享】小镇做题家 - 智能题库管理工具
由于功能改变非常大,所以另起一贴。
SAVI Teaching Assistant
Systematic AI-powered Visual Intelligent Teaching Assistant
面向一线教师的 Obsidian 智能教学管理插件,集题库管理、智能组卷、成绩分析、AI 质量优化于一体。
版本: v2.3.1 | 官网: https://saviteachingassistant.cn
七大模块
题库查询
- 高效的题库检索系统
- 多维度筛选(来源、知识点、分类、题型、评价、难度)
- 全文搜索采用方式为:文字加空格求与
- 卡片式题目视图,一键修改题目思维层次
自动组卷
- AI驱动的智能组卷
- 多种组卷策略(综合平衡、易错题优先、新鲜题优先、高思维优先)
- 预览试卷,二次添加、排序试题
- 依据正确率、时间,智能推荐学生历史测试题目
试卷播放
- 课堂讲评辅助工具
- 选择历史测试试卷,一键全屏播放,摆脱PPT依赖
- 答案选项统计,精准显示本班学生的答题情况
- 定时自动播放,方便多样化课堂设计
题库管理
- 题目质量智能分析
- **题目解析,自动化和自适应学习
- **题目改编,AI驱动的自动化改编
- 智能分析历史数据,快速优化题库题目难度和选项质量
批量导入
- Word数据快速导入
- 图片文字提取
- 批量导入题目
- 大题细分,使知识点数据统计更加精准
数据分析
- 可视化学情分析
- 一键导入Excel,生成测试班级报告
- 多维度测评数据使知识点掌握程度、题目质量、班级和学生个人的掌握可视化
- 利用Obsidian插件Dataview,动态生成分析报告
学习跟踪
- 学习进步轨迹追踪
- 班级进步分析报告关注全班学生的进步率和退步率,知识点的正确率变化
- 学习进步分析报告关注学生个人的成长,跟踪记录历史错题
- 个人错题集帮助学生及时了解学习情况
安装
手动安装
- 从 插件下载 下载最新版本
- 解压到 Obsidian vault 的
.obsidian/plugins/intelligent-teaching-manager/目录 - 重启 Obsidian,在设置中启用插件
- Obsidian下载
沙箱
- 集成了相关的插件,新手可以直接下载使用
激活
- 首次启动自动显示激活窗口
- 免费试用: 7 天,1 台设备
- 专业版 (年费): 3 台设备
技术栈
- 框架: Obsidian Plugin API
- 构建: esbuild + JavaScript 混淆
- LLM: Deepseek /Qwen VL/ Ollama (Qwen)
数据安全
- 所有教学数据保存在本地 Markdown 文件中
- 云端分析仅传输脱敏数据(不上传学生姓名)
- HTTPS 加密传输 + JWT 认证
- License 三级验证(本地缓存 → 云端 → 宽限期)
作者
Fan Zhiyi (Charles Morse)
邮箱:[email protected]
SAVI V2.3.1 更新说明
版本号:V2.3.1
发布日期:2026-03-10
版本主题:OCR 图像提取与文字识别精度全面提升
本版本聚焦 OCR 扫描件处理与图形提取的稳定性,覆盖 4 个核心文件(savi_ocr_v6_eraser.py / savi_skeleton_combined.py / batch_import.py / batch-import.ts),共计 22 个修复提交,并补充了 Windows 全平台兼容支持。
一、OCR 文字识别精度提升
选项行置信度自适应
背景:Vision OCR 此前对所有行统一使用 0.4 置信度阈值。当选项(A./B./C./D. 开头)含有电路元件标注(如 Rp1、VD1、R₁ 等)时,OCR 引擎对这类字符的置信度偏低,导致整行被误丢弃。
改动:
- A./B./C./D. 开头的选项行:阈值降至 0.25
- 其余普通行:保持原 0.4 阈值
二、底部标注自适应捕获(全新功能)
新增 BOTTOM_EXPAND 参数
电路图、波形图等题目图形下方往往有 A/B/C/D 等标注文字,原版固定裁剪范围无法捕获这些标注。
改动:
- 新增底部自动延伸机制:检测到图形下方存在暗像素组时,自动向下扩展截取范围
- 二次扫描收紧为精确区间,仅取第一连续暗像素组末尾,避免多截内容
预设值:
| 预设 | BOTTOM_EXPAND 值 |
适用场景 |
|---|---|---|
| 标准 | 10pt | 默认推荐 |
| 宽松 | 15pt(UI 默认) | 标注距图形较远时 |
| 严格 | 7pt | 题目排列紧密时 |
- 最小值保护:不低于 1pt,防止参数设置过小导致标注截断
三、扫描件图形提取修复
本版本针对扫描件(非矢量 PDF)做了多项关键修复:
- 坐标偏低:图形排序
sort_y改用seeds_inside原生坐标,解决图形位置识别错误 - 裁图包含多余文字:修复扫描件裁剪范围错误导致题目文字被裁入图片的问题
- 全页扫描件兼容:
has_graphic=False的全页扫描件现在也能正确应用BOTTOM_EXPAND和二次扫描 - 小标注被压制:修复扫描件通道 CCA 近邻计算逻辑,防止 K、Ω 等单字符标注被误判为噪点删除
四、矢量 PDF 改进
- Stage 1 缺漏标注:修复矢量 PDF 第一阶段未扫描标注的问题,含标注时自动渲染并扩展裁图
- 过度截取文字:保护词向下扩展增加 10pt 上限,防止电路图截取范围意外包含下方题目文字
五、黑名单过滤优化
新行为:黑名单检查移入边距区域门控,仅过滤页面边距范围内的内容,不影响正文。
六、批量导入格式改进
- OCR 识别图片输出改为居中对齐(Obsidian 渲染更美观)
- 题目之间自动插入空行分隔,提升可读性
- 综合题子题移除 Markdown 标题标记(
##),避免 Obsidian 生成多余大纲层级
七、情景题修复
修复了情景题(多题共用背景图)中,图片无法正确分配给各子题的问题。
八、UI 改进
- OCR 专家参数滑块 CSS 选择器提升特异性,修复部分环境下滑块宽度显示异常
- 知识点筛选标签(pill)点击后不再自动滚动至页面顶部
九、Windows 全平台兼容
本版本正式支持 Windows 环境运行
问题:Windows 默认 stdout/stderr 编码为 GBK,中文文件名在 Python 输出和 TypeScript 子进程通信中产生乱码,部分情况下直接报错退出。
修复内容:
| 位置 | 修复 |
|---|---|
savi_skeleton_combined.py |
启动时强制设置 stdout/stderr 为 UTF-8 |
batch_import.py |
同上 |
batch-import.ts |
所有 spawn() 调用追加 PYTHONIOENCODING=utf-8 环境变量 |
batch-import.ts |
新增路径长度检查:路径超过 240 字符时给出明确提示(Windows MAX_PATH 限制) |
十、完整参数表
| 参数 | 类型 | 默认值 | 可调范围 | 说明 |
|---|---|---|---|---|
| BRIDGE_H | 对外 | 30 | 1–100 | 水平膨胀核(图形合并) |
| BRIDGE_V | 对外 | 3 | 1–5 | 垂直膨胀核 |
| MIN_HEIGHT | 对外 | 75pt | 10–200 | 图形最小高度 |
| GHOST_RADIUS | 对外 | 60pt | 10–150 | 聚类容限 |
| CROP_PADDING | 对外 | 15px | 2–30 | 裁剪边缘留白 |
| BOTTOM_EXPAND | 对外 | 15pt | 1–40 | 底部标注捕获距离(V2.3.1 新增) |
| _MAX_DOWNWARD_EXPAND | 内部 | 10pt | — | 保护词向下扩展上限(V2.3.1 新增) |
十一、环境要求
- Python:≥ 3.10
- 依赖包:
PyMuPDFpython-docxlxmlopencv-pythonnumpy - Windows:所有依赖均有官方 wheel,
pip install可直接安装,无需编译
十二、升级方法
通过 Obsidian 插件标准更新流程升级即可,无需额外配置。Windows 用户升级后自动获得兼容性修复,无需手动设置编码。
SAVI V2.3.1 · 发布于 2026-03-10 · 维护者: Fan Zhiyyi