【开源】用 Gemini 与 OCR 打造智能错题本

大孝子初中了,不记录错题,逼得我造轮子,用Antigravity 手搓了一个错题本,支持docker 部署,浏览器访问,只通过拍照上传识别错题,当前我主要用的是gemini。

1. 项目概览

Smart Wrong Notebook 是一个基于 Next.js 全栈框架开发的智能错题管理系统。它利用 AI (Google Gemini / OpenAI) 强大的多模态能力,实现了从错题录入、智能分析、分类管理到针对性练习的全流程闭环。

核心价值

  • 自动化录入:通过 OCR 和 AI 语义分析,极大降低了错题整理的时间成本。
  • 结构化管理:利用知识点标签和科目分类,将碎片化的错题转化为结构化的知识库。
  • 个性化提升:基于错题生成相似题进行变式训练,并支持自定义打印,回归纸笔练习。

2. 业务流程详解

2.1 用户准入与配置 (User Onboarding & Config)

  • 流程
    1. 注册/登录:用户通过邮箱/密码注册,系统创建独立账户。

2.2 错题录入全流程 (Error Item Entry)

这是系统的核心入口,分为四个阶段:

阶段一:上传与预处理

  • 操作:用户在错题本页面点击 “添加错题” 或拖拽图片。
  • 处理
    1. 图片压缩:前端使用 browser-image-compression 对大图进行压缩(目标 1MB),减少传输延迟。
    2. 裁剪:弹出裁剪框 (ImageCropper),用户手动框选题目区域,去除无关背景。

阶段二:AI 智能分析

  • 触发:裁剪完成后,前端将图片 Base64 发送至 /api/analyze
  • 后端处理
    1. Provider 选择:系统根据配置自动选择 Gemini 或 OpenAI Provider。
    2. Prompt 构建:使用标准化的 Prompt 模板,要求 AI 返回结构化的 JSON 数据,包含详细的 JSON Schema 示例。
    3. 响应验证:使用 Zod Schema (src/lib/ai/schema.ts) 进行类型验证和业务规则检查。
    4. 标签标准化:AI 返回的知识点标签会与人教版课程大纲进行智能匹配,确保标签的一致性。

阶段三:人工校对 (Review & Edit)

  • 界面:进入 CorrectionEditor 界面。
  • 操作
    • 用户对比左侧原图,检查右侧 AI 识别的文本。
    • 科目归类:系统自动推荐科目,用户可修改。
    • 标签管理:用户可增删 AI 生成的知识点标签。标签输入支持自动补全,从标准标签库和自定义标签中选择。
    • LaTeX 编辑:使用 react-markdown + rehype-katex 实现数学公式的实时预览。

阶段四:持久化存储

  • 触发:用户点击 “保存到错题本”。
    1. 图片存储:原图以 Base64 格式存储在数据库中。

2.3 错题管理与复习 (Management & Review)

  • 错题本视图
    • 按科目展示错题本卡片
    • 进入特定科目,列表展示该科目的所有错题
  • 筛选与检索
    • 支持按 掌握程度 (待复习/已掌握)、时间范围知识点标签年级/学期卷等级 筛选

2.4 智能练习与打印 (Practice & Print)

  • 生成练习
    • 用户在错题详情页点击 “举一反三”
    • AI 变式:后端调用 /api/practice/generate,生成相似题(支持 4 种难度:简单、适中、困难、挑战)
    • 错误处理细化 :sparkles::前端会根据不同的错误类型显示具体提示:
      • 网络连接失败
      • AI 解析异常
      • 认证失败
      • 未知错误
  • 打印预览
    • 用户可选择是否打印答案、解析,调整图片缩放比例 (30%-100%)
    • 调用浏览器打印功能,生成 PDF 或直接打印

image

image

image

image

GitHub – wttwins/wrong-notebook: 一个基于AI的学生错题本

一个基于AI的学生错题本

发表评论