大孝子初中了,不记录错题,逼得我造轮子,用Antigravity 手搓了一个错题本,支持docker 部署,浏览器访问,只通过拍照上传识别错题,当前我主要用的是gemini。
1. 项目概览
Smart Wrong Notebook 是一个基于 Next.js 全栈框架开发的智能错题管理系统。它利用 AI (Google Gemini / OpenAI) 强大的多模态能力,实现了从错题录入、智能分析、分类管理到针对性练习的全流程闭环。
核心价值
- 自动化录入:通过 OCR 和 AI 语义分析,极大降低了错题整理的时间成本。
- 结构化管理:利用知识点标签和科目分类,将碎片化的错题转化为结构化的知识库。
- 个性化提升:基于错题生成相似题进行变式训练,并支持自定义打印,回归纸笔练习。
2. 业务流程详解
2.1 用户准入与配置 (User Onboarding & Config)
- 流程:
- 注册/登录:用户通过邮箱/密码注册,系统创建独立账户。
2.2 错题录入全流程 (Error Item Entry)
这是系统的核心入口,分为四个阶段:
阶段一:上传与预处理
- 操作:用户在错题本页面点击 “添加错题” 或拖拽图片。
- 处理:
- 图片压缩:前端使用
browser-image-compression对大图进行压缩(目标 1MB),减少传输延迟。 - 裁剪:弹出裁剪框 (
ImageCropper),用户手动框选题目区域,去除无关背景。
- 图片压缩:前端使用
阶段二:AI 智能分析
- 触发:裁剪完成后,前端将图片 Base64 发送至
/api/analyze。 - 后端处理:
- Provider 选择:系统根据配置自动选择 Gemini 或 OpenAI Provider。
- Prompt 构建:使用标准化的 Prompt 模板,要求 AI 返回结构化的 JSON 数据,包含详细的 JSON Schema 示例。
- 响应验证:使用 Zod Schema (
src/lib/ai/schema.ts) 进行类型验证和业务规则检查。 - 标签标准化:AI 返回的知识点标签会与人教版课程大纲进行智能匹配,确保标签的一致性。
阶段三:人工校对 (Review & Edit)
- 界面:进入
CorrectionEditor界面。 - 操作:
- 用户对比左侧原图,检查右侧 AI 识别的文本。
- 科目归类:系统自动推荐科目,用户可修改。
- 标签管理:用户可增删 AI 生成的知识点标签。标签输入支持自动补全,从标准标签库和自定义标签中选择。
- LaTeX 编辑:使用
react-markdown+rehype-katex实现数学公式的实时预览。
阶段四:持久化存储
- 触发:用户点击 “保存到错题本”。
- 图片存储:原图以 Base64 格式存储在数据库中。
2.3 错题管理与复习 (Management & Review)
- 错题本视图:
- 按科目展示错题本卡片
- 进入特定科目,列表展示该科目的所有错题
- 筛选与检索:
- 支持按 掌握程度 (待复习/已掌握)、时间范围、知识点标签、年级/学期、卷等级 筛选
2.4 智能练习与打印 (Practice & Print)
- 生成练习:
- 用户在错题详情页点击 “举一反三”
- AI 变式:后端调用
/api/practice/generate,生成相似题(支持 4 种难度:简单、适中、困难、挑战) - 错误处理细化
:前端会根据不同的错误类型显示具体提示:
- 网络连接失败
- AI 解析异常
- 认证失败
- 未知错误
- 打印预览:
- 用户可选择是否打印答案、解析,调整图片缩放比例 (30%-100%)
- 调用浏览器打印功能,生成 PDF 或直接打印
GitHub – wttwins/wrong-notebook: 一个基于AI的学生错题本
一个基于AI的学生错题本



