一次作业,不该只留下分数。
知析面向学生的日常作业和阶段试卷,解决批改之后的信息断层:题目虽然改完了,错误原因、关联知识点和后续训练却仍然分散。项目把这些步骤收拢到一个工作台,让一次作答成为下一轮学习的依据。
用户上传作业图片后,系统提取题目和答案,进行 AI 辅助判分,再交给人逐题核对。确认后的结果进入报告、错题、掌握度和知识图谱;需要巩固时,可按薄弱点生成练习,并分别打印题目卷与答案卷。
让 AI 处理重复工作,让人保留判断与修正。
这个案例着重展示完整业务流程如何落地:如何处理不可靠的识别结果、耗时的 AI 任务、人工修正后的数据一致性,以及练习生成的可用性。
需求,从批改之后开始。
目标不是增加一份孤立的报告,而是缩短“发现问题”到“开始巩固”之间的距离。
减少重复整理
多张作业图片进入统一任务,保留题号、题干、学生答案、标准答案与分值,让报告可以逐题追溯。
允许纠正 AI
识别到的学科或年级不确定时先确认;答案或判分不准确时可修改,避免错误结果继续影响诊断。
追踪薄弱知识点
按科目、年级、知识点和题型归集错误,结合最近表现与历史作答,区分偶发错误与持续薄弱项。
形成可执行练习
围绕选中的错题或教材知识点分配题量,生成可核对、可打印、题目与答案分开的练习。
- 上传作业
- 辅助判分
- 逐题复核
- 薄弱诊断
- 专项出题
- 练习巩固
亲手改一道题,看后续如何变化。
样例里,第 1 题的正确答案被识别错了,第 2 题则确实算错了。试着修正识别结果、确认复核,再查看诊断与对应练习,体验人工介入的意义。
固定样例演示,不调用真实 AI,不保存个人数据。
先载入固定样例,再进行识别复核;确认后开放诊断和练习。
从两道题开始
数学样例 · 原始作答
第 1 题 50 分
2x + 3 = 7,求 x。
学生作答:x = 2
第 2 题 50 分
计算 1/3 + 1/6。
学生作答:2/9
第 1 题作答正确,但固定识别结果把 2 读成了 7。第 2 题识别无误,学生却直接把分子、分母分别相加。
接下来区分识别错误和知识错误,体验人工复核如何影响诊断。
先核对,再确认
识别结果 · 请对照原作答
第 1 题 一元一次方程
2x + 3 = 7
- 原作答
- x = 2
- 固定识别
- x = 7 识别有误
- 复核后作答
- x = 7
第 2 题 异分母分数加法
1/3 + 1/6
原作答与识别均为 2/9,此处保留学生真实错误。
这个开关只更正识别,不替学生修改答案。第 2 题的错误将进入后续诊断。
第 1 题仍有识别错误。直接确认会把本来做对的方程题误计为错题。
重新修改识别后,旧评分、诊断和练习立即失效,必须再次确认。
本次需要练习什么
已确认作答 · 评分结果
每题 50 分,共 0 道错题
第 1 题
2x + 3 = 7,求 x。
第 2 题
计算 1/3 + 1/6。
方程题原作答正确,当前错判来自尚未纠正的识别。请返回复核页纠正后重新确认。
一元一次方程
先两边减去 3,再除以 2,得到 x = 2。
异分母分数加法
先通分:1/3 = 2/6,因此 2/6 + 1/6 = 3/6 = 1/2。
仅按本次已确认的作答列出错题知识点,不推断长期学习水平。
练习,再对照答案
固定变式题 · 对应本次诊断
一元一次方程
2x + 5 = 11,求 x。
答案:x = 3
两边减去 5,得到 2x = 6,再除以 2。
异分母分数加法
计算 1/4 + 1/6。
答案:5/12
先通分:1/4 = 3/12,1/6 = 2/12,相加得到 5/12。
按当前错题知识点展示预设变式题。可先独立计算,再展开参考答案;也可导出题目和答案继续练习。
如浏览器未下载,可选中下方文本复制。
等待载入样例。
页面负责交互,任务在后台完成。
识别和生成耗时不稳定,因此 Web 请求负责校验与创建任务,独立 Worker 执行 AI 流程。任务状态保存在数据库中,页面通过查询状态展示进度与结果。
任务状态与业务记录共同构成可恢复的处理流程
浏览器工作台
Next.js / React
作业、复核、报告、图谱与练习
服务端 API
身份与归属校验
输入校验、任务入队、结果查询
后台 Worker
领取任务、识别、判分、出卷
调用兼容接口的 AI 服务
- Next.js 16 / React 19 / TypeScript
- 统一组织工作台页面与服务端 API,约束数据结构与交互状态。
- PostgreSQL 17 / Prisma 7
- 用关系模型、唯一约束和事务维护业务一致性,数据库也承担当前任务队列。
- 独立 Worker / Docker
- Web、Worker 和数据库分别运行,耗时 AI 请求不依赖浏览器页面保持打开。
- AI 服务适配 / 结构化校验
- 通过兼容接口调用模型;对返回结果做结构与业务规则校验,再进入后续流程。
教材知识图谱使用项目维护的知识点与关系目录;个人表现来自作答记录的聚合,不把模型推测当作已有学习事实。
把关键规则写进系统。
以下是当前源码中已经实现的机制。展开可查看处理方式与对应模块。
识别与判分:先校验,再交给人复核
图片先提取题干、题号、题型、满分和学科元信息,再执行判分。只有元信息置信度达到 0.8、分类完整且识别到题目,流程才自动继续;否则要求人工确认。这个阈值用于控制流程,不代表判分准确率。
AI 输出保留学生答案、标准答案、得分、诊断和知识点,配合结构化校验、题号对齐和分值边界检查。用户仍可修改每道题的结果。
对应模块:analysis-task-runner.ts、analysis-task-rules.mjs
任务执行:可领取、可重试、可接管
分析任务与出卷任务进入数据库队列。Worker 使用 SKIP LOCKED 领取任务,避免多个执行者同时拿到同一条任务;租约限制占用时间,进程中断后,过期任务可由后续执行者接管。
上传内容使用 SHA-256 指纹识别重复文件,并通过用户范围内的请求 ID 与唯一约束处理重复提交。页面离开不会取消数据库中已经创建的后台任务。
对应模块:analysis-worker.mjs、analysis-task-runner.ts、practice-task-runner.ts、schema.prisma
人工修改:防止覆盖,保持总分与明细一致
逐题修改支持答案、得分、诊断和知识点。提交带有版本信息;如果另一页面已修改过同一记录,服务端返回 409 冲突,让用户刷新确认,避免静默覆盖。
题目更新与考试总分重算放在同一事务中。报告、错题与图谱根据题目事实聚合,减少多份独立结果互相矛盾的机会。
对应模块:api/exams/[id]/questions/[number]/route.ts
学习诊断:有证据才展示掌握情况
知识点掌握度按相关题目的累计得分与满分计算;没有作答证据的知识点显示“未知”,不会自动给出 0%。错题按科目、年级、知识点和题型归组。
强化建议结合累计错误、最近错误和连续对错表现。图谱把这些个人表现映射到教材知识节点,帮助定位需要巩固的范围。
对应模块:learning-rules.mjs、graph-rules.mjs、mistake-groups.mjs
专项练习:拆批生成,校验后再交付
支持错题查缺补漏与教材知识点出卷,题量范围为 1~30 题。系统按工作量预算拆批调用,校验题数、题型、知识点分配与答案结构,对可修复的结构问题进行受限重试。
生成前预占积分,成功后结算,失败进入退款流程;请求键和数据库事务控制重复结算。题目卷与答案卷采用不同服务端数据投影,生成的 SVG 配图通过标签和属性白名单检查。
对应模块:practice-generation.mjs、practice-rules.mjs、practice-task-runner.ts、workspace/print-rules.mjs
用户隔离:从页面身份到数据归属
Web 使用 Cookie 会话,移动调用使用 Bearer 身份,两种身份不一致时明确拒绝。服务端按用户 ID 校验任务、报告与图谱的数据归属,避免只依赖页面上的可见性控制。
这一实现面向个人账号的数据隔离,不能等同于完整的教师、家长、班级和学校多角色权限体系。
对应模块:session.mjs、principal.ts、api/graphs/personal/route.ts
工程选择,也包括控制复杂度。
AI 自动化到哪一步?
把自动化建立在可确认、可修正的数据之上。对不确定元信息要求人工确认,逐题保留编辑入口。代价是多一次交互,换来后续诊断有可追溯的依据。
为什么用数据库队列?
复用 PostgreSQL 能把任务状态、业务记录与结算放在同一数据系统内,减少运维组件。实现中需要正确处理领取、锁与租约;更大规模的任务调度仍需压测与容量评估。
为什么不能只校验 JSON?
结构正确不代表题目可用。还要核对数量、题型、知识点、分值与答案,控制重试范围;打印场景要进一步区分题目和答案,处理生成配图的安全边界。
如何处理结果变化?
把逐题作答作为事实来源。人工修改有版本校验,总分在事务中重算,诊断基于明细聚合,让用户看到的多个视图有共同依据。
真实界面,完整的使用场景。
以下截图来自实际产品组件,考试、学生与题目均为虚构演示数据。图中的分数和趋势用于说明功能,不代表真实学生成绩或学习效果。点击图片可查看原图。
已经做到了什么,边界在哪里。
当前成果是一条可运行的个人学习诊断流程,并围绕异步执行、人工修正、生成校验与用户数据隔离建立了工程机制。
当前已实现
- 图片作业识别、AI 辅助判分与逐题人工复核。
- 报告、错题聚合、知识点掌握度与个人知识图谱。
- 错题和教材知识点专项出卷,题目与答案独立打印。
- 可恢复后台任务、重复提交控制与积分结算流程。
- Web、Worker、数据库容器化;移动端共享 API 契约。
仍有明确边界
- PDF 上传目前进入人工录入,尚未完成 PDF 自动 OCR。
- AI 使用外部模型服务,非自研教育大模型;仍需人工核对。
- 教师、家长与班级的完整多角色体系尚待完善。
- Android 处于内部调试阶段,iOS 尚未完成构建与真机闭环。
- 准确率、长期学习效果与大规模任务吞吐仍需专项评估。
技术内容依据当前项目源码与边界文档整理,核对日期:2026 年 9 月 11 日。本页交互演示采用固定样例,展示业务流程,不代表在线 OCR、实时 AI 判分或正式产品的完整功能。



