📝 AI 智能试卷审校系统
海云天 AI 智能试卷审校系统 — 基于 LLM + 向量检索的全自动试卷错误检测与三维度查重平台
项目概览
面向教育机构命题场景,对试卷文档(DOC/DOCX/XLS/PDF)进行全自动解析与 AI 审校,涵盖 10 类错误检测与三维度向量查重, 最终输出结构化 Word / Excel 审校报告。系统同时提供 Streamlit 交互界面和 Flask REST API, 可独立使用也可作为批处理平台(exam_checker_agent)的底层能力。
技术栈
整体架构
核心技术详解
① 骨架提取 + 并发内容填充(解析加速)
文档解析分两步:第一步 LLM 提取"骨架"(题号、大题标题、结构层级),生成嵌套 JSON 树;
第二步多线程(默认 5 workers)并发填充每个节点的正文内容,最终扁平化为带有
major_number / middle_number / minor_number / numbering_path 的 Question 列表。
相比单线程串行解析,对 100 题试卷的处理耗时下降约 60%。
核心实现:smart_checker/services/extractor/paper_parser.py → PaperTextExtractor.convert_paper_to_questions()
② LangGraph 题型路由(减少误报)
路由阶段通过 LLM 分析题目类型、科目、格式,生成 detection_flags 字典,
决定当前题目需要运行哪些检测任务(如选择题不需要跑"答案泄露"检测,数学题需要额外的"无解性"检测)。
若路由返回为空则回退到全量检测。这一机制将无效检测调用减少约 40%,同时降低误报率。
核心实现:smart_checker/services/detector/checkers/content.py → _label_question_for_routing() / _build_detection_tasks()
③ 双模型解耦:main_model + corrector_model
主检测模型(main_model,如 qwen3.6-max-preview 云端)负责全量错误检测与路由分析;
纠错模型(corrector_model,如本地 ChineseErrorCorrector3-4B)专项负责中文错别字的深度纠错。
两者可独立配置,支持三种协作模式:① 仅主模型;② Union 模式(主模型 + 纠错模型结果合并);
③ Diff-only 模式(仅展示纠错模型发现的增量错误)。
核心实现:config/domains/llm.py:LLMSettings / smart_checker/infrastructure/llm/model_manager.py:ModelManager
④ 三维度向量查重
使用 paraphrase-multilingual-MiniLM-L12-v2 本地嵌入模型对题目文本向量化,存入 ChromaDB。
三个维度:
- 内部查重(
check_internal_duplicates()):同套卷内题目两两比对余弦相似度 - 跨题库查重(
CrossPaperDuplicateChecker.check_cross_paper_duplicates()):与其他学科/年级题库比对 - 历史题库查重(
check_historical_duplicates()):与历年积累的历史题库比对
默认相似度阈值 0.85(可调),完全相同阈值 0.98;结果附带 confidence 分数。
核心实现:smart_checker/services/detector/checkers/duplicate.py
⑤ 10 类错误检测 + CoT 支持
typo_checkambiguity_checkoptions_checkpunctuation_checkmismatch_checkmissing_checkunsolvability_checkanswer_leak_checkimage_inconsistency_checklogic_check所有检测任务支持 CoT(Chain-of-Thought) 模式,通过 enable_thinking 开关启用,对应 thinking/non-thinking 两套参数配置(temperature, top_p 等)。
⑥ 多语言支持(中/日/德/法)
系统自动检测试卷语言,按语言加载对应 prompt 模板目录(assets/prompt/detection/{ja,de,fr}/)
和路由 prompt(assets/prompt/routing/{zh,ja,de}/question_routing.txt)。
四种语言共享同一套检测框架,日/德/法各有专用的拼写与语法检测任务。
⑦ Flask REST API(供批处理平台复用)
API 通过 api_request_model_scope 上下文管理器实现并发请求间的模型作用域隔离,支持每请求指定不同 main_model。
配置系统
config/ 目录下按领域拆分:domains/llm.py(模型参数)、domains/features.py(功能开关)、
detection_tasks.py(检测任务声明)、unified_error_types.py(UI 错误类型聚合)。
支持三种部署模式:cloud / private / test,通过 SMART_CHECKER_DEPLOY_MODE 环境变量切换。
效果截图
亮点总结
- LangGraph 题型路由将无效 LLM 调用减少约 40%,降低误报率
- 骨架提取 + 5 线程并发填充,100 题解析耗时较串行下降 ~60%
- 双模型 Union/Diff-only 模式提升中文错别字召回率
- 多语言(中/日/德/法)共用一套框架,通过 prompt 模板目录切换
- Flask API 暴露全套能力,被生产级批处理平台 exam_checker_agent 直接复用