继听写助手之后,我又给儿子做了第二个学习工具——错题本。如果说听写助手是”输入型”工具(念单词→写单词),那错题本就是”输出型”——把做错的题拍下来、整理好、反复练。
缘起
儿子上初中后,作业量和考试频率明显上来了。数学、物理的错题如果不好好整理,隔几天就忘了当时为什么错。传统的错题本靠手抄——抄题、抄答案、抄思路——一道题下来三五分钟没了,抄完也不一定再看。
作为一个程序员爸爸,我看到的是另一个问题:错题的价值不在抄写,在于回顾。能不能拍个照、标个科目、存起来,想练的时候随机抽几道出来做?能不能自动统计哪些题错得最多,哪些知识点是薄弱环节?
于是,错题本应运而生。前后端分离、支持图片+PDF上传、带计时做题模式和错题统计——一个周末搭好框架,后面陆陆续续打磨了细节。
主要功能
📸 拍照录入,告别手抄
核心痛点的解决方案:拍一张试卷或作业的照片(支持 JPG/PNG/PDF),在图片上框选出每一道错题,系统自动裁剪、归类。一本练习册几十道错题,五分钟搞定。
- 支持 PDF:直接上传 PDF 试卷,逐页框选题目,自动分割
- 批量框选:一张图上可以框多道题,一次性保存
- 科目归类:数学、物理、化学……按科目分开管理
- 书本+单元:支持二级分类(如”八年级数学上册 → 第三章”),方便按进度复习
- 答案录入:可以上传答案图片,也可以输入文字答案
⏱️ 限时做题,模拟考试
选几道错题,开启做题模式。页面上方显示计时器,支持暂停/继续,模拟考试的时间压力。做完后进入批改模式——逐题对比自己的作答和正确答案,自己标记对错。
为什么是”自己批改”而不是自动判?和听写助手的思路一样:批改本身就是一次深度复习。看着正确答案反思自己为什么错,比系统直接告诉你”答错了”要有用得多。
📊 错题本:统计+回顾
所有做错的题自动汇总到错题本页面,每道题记录:
- 错误次数 / 正确次数
- 最近错误日期
- 所属书本和单元
支持按书本、单元筛选,按”正确次数最少优先”排序——最薄弱的题目排在最前面,专治”钉子户”错题。
还有一个实用功能:一键导出 PDF。把所有错题排版导出成 A4 纸张的 PDF 文件,打印出来带到学校随时翻看。
📋 做题记录,追踪进步
每次做题的记录永久保存:日期、科目、书本、单元、用时、正确/错误题数。点击任意一条记录,可以看到每道题的详细对错情况和当时的答案。
技术栈
和听写助手跑在同一台 2 核 2G 的腾讯云轻量应用服务器上,这次技术选型升级了一下:
| 技术 | 用途 |
|---|---|
| Vue 3 + Vite | 前端框架(Composition API) |
| Element Plus | UI 组件库 |
| Pinia | 状态管理 |
| Node.js + Express | 后端 API |
| Sequelize | ORM(数据库操作) |
| MariaDB | 数据存储 |
| Caddy | 反向代理 + 自动 HTTPS |
| PM2 | 进程守护 |
| jsPDF + html2canvas | PDF 导出 |
| PDF.js | PDF 预览和解析 |
这次用了 Vue 3 而不是原生 JS,主要原因是错题本的交互比听写助手复杂很多——图片框选裁剪、PDF 逐页预览、多步骤表单——用框架管理状态会干净很多。Element Plus 的组件也省了大量 UI 开发时间。
写在最后
听写助手做的是”输入”——帮儿子把英语单词听写流程自动化。错题本做的是”输出”——帮儿子把做错的题整理、回顾、再练。两个工具配合起来,基本覆盖了他日常学习中最花时间的两个环节。
做这些工具的初衷很简单:用自己会的方式帮儿子。我不会辅导他的数学压轴题,但我可以写个程序让他的错题不再零散地丢在书包里。每次看到他打开错题本,选几道题开始计时练习的时候,就觉得键盘没白敲。
如果你家也有上学的孩子,或者你自己就是学生,欢迎参考这个思路。代码暂不开源(写得比较随性 😅),但技术栈和功能设计都在上面了,给有类似需求的朋友一个参考。
P.S. 域名 correction.sfumes.cloud 可以直接访问体验。

发表回复