← 返回文章列表

为什么必须先切题再 OCR:题库入口的证据与人工准入

TeachFlow 如何从整页试卷、边界检测、人工修框、逐题 OCR 到正式题目准入,避免成本和错误沿流水线放大。

返回 TeachFlow 项目总览 · 交互图:QUESTION · OCR · 血缘

最初看起来最直接的流程是:把整页试卷交给视觉模型,让它一次完成 OCR、切题、知识点判断和题库入库。样本验证很快暴露了根因:整页识别错误会跨题传播,公式和栏布局会污染边界,昂贵模型调用发生在教师尚未决定是否加工之前,最后还说不清正式题目来自哪一块原图。

TeachFlow 因此把主链改成“先确定题目边界,再对单题做识别”。

题库材料从整页原图进入人工确认和正式题库的数据血缘

原图是证据,不是临时输入

教师上传形成导入批次,原文件、页码和内容指纹先被保存。版面分析只产生候选框,不直接制造正式题目。教师可以移动、缩放、拆分或拒绝候选框;确认后的裁片拥有稳定来源,后续 OCR、知识点建议和发布都能回到它。

版面分析得到的单题候选框示例

这让错误被限制在最早的可见层:边界错了先修框,不让错误文本继续进入题干、答案和知识点映射。

OCR 输出与人工修正分开保存

OCR 模型原文和教师修正不是同一字段反复覆盖。当前文本可以由最新修正派生,但原始模型输出仍然存在;重复点击已成功的来源不会再次调用 Provider。PDF 与 Office 文件在尚未提供可靠页面渲染时明确保留原件,不伪装成已识别。

知识点建议也允许返回 no-match。主动弃权比硬塞一个目录 ID 更重要,因为一旦错误映射进入正式题目,它会继续污染作业、评分和学情。

正式入库是一个原子门

只有确认裁片、有效题干、答案合同和教师确认的知识关系都满足要求,题目版本才进入正式题库。题目后续修改会产生新版本,并重新要求知识点确认;旧作业继续指向旧版本。

错误为什么会沿流水线放大

设想一张双栏试卷,版面模型把左栏第 3 题和右栏第 8 题框成同一块。如果系统先对整页 OCR,再让模型拆题,错误文本可能已经混入题干、答案和解析;知识点建议又会基于这段错误文本给出看似合理的目录 ID。到教师发现问题时,至少三层派生数据都需要回滚。

先切题把错误压缩在候选框层:教师只需修正坐标,后面的 OCR 与建议重新基于同一来源裁片运行。裁片内容指纹还能区分“相同来源的安全重试”和“边界变化后的新识别”,避免重复调用模型或错误复用旧结果。这不是单纯提高 OCR 准确率,而是改变错误成本和可追溯性。

设计取舍:人工确认会不会让 AI 失去价值

人工门禁不等于每一步从零操作。版面分析负责提出候选,OCR 负责转写,映射器负责排序候选知识点;教师只在高风险转折处确认边界、文本和正式关系。产品目标是把人工注意力放在“是否进入权威题库”,而不是让教师手工完成整条流水线。

评价 OCR 准确率时,需要注意当前没有代表性复杂试卷集的本轮统计。单题候选图、数据血缘图和 question-bank.ts 的追加记录合同只能证明现有处理路径,不能由单个样本推导模型泛化能力。

当前边界

现有图表、评估裁片、源码和历史回归记录支持这条设计,但本轮没有重新调用 OCR 模型或执行完整题库浏览器流程,因此状态为 partial。识别准确率不能从单页样本外推;复杂多栏、跨页题、手写公式和生产模型成本仍需代表性数据集评估。

结论

题库流水线的核心不是 OCR 多快,而是错误在哪里被看见、被拒绝和被纠正。先切题、再识别、最后人工准入,让 AI 成为候选生成器,而不是题库事实的匿名写入者。

← 返回文章列表