跳转至

RubricSpan

RubricSpan · 阅微 —— 中文主观题智能阅卷:本地化、可解释、双后端(Rust+GPU 在线 / WASM 离线)的文科主观题评分教师模型

项目信息
仓库 https://github.com/Maicarons/RubricSpan
在线体验 https://maicarons.github.io/RubricSpan/
主要语言 Python
Stars 1
类型 原创项目
许可证 AGPL-3.0
最近更新 2026-09-10
主题 ai · chinese · edu-tech · education · grading · mrc · nlp · ocr · onnx · rust · vitepress

RubricSpan · 阅微 —— 主观题阅卷教师模型

AGPL-3.0 Docs Models

面向中文主观题(文科简答题 / 论述题 / 材料解析题)的本地化智能阅卷系统:大模型离线生成训练标签,训练轻量编码器模型,在普通 PC / 本地 GPU 上完成"上传试卷 → 作答识别 → 自动评分 → 审阅反馈"闭环。

仓库 github.com/Maicarons/RubricSpan · 文档站 maicarons.github.io/RubricSpan · 模型 Hugging Face / ModelScope(RubricSpan-{mrc,similarity}-1.0-flash) 版本 v1.0.0

核心特性

  • 可解释评分:给出分数的同时,标注学生答案中命中每个得分点的原文片段
  • 本地可运行:评分链路全程本地推理,不依赖在线大模型
  • 同义答案识别:等价表述扩展(aliases)+ 语义相似度兜底,正确处理"戊戌变法 / 百日维新 / 维新运动"类答案
  • 自然语言标准答案:教师粘贴自然语言评分说明,自动解析为结构化评分配置
  • 纸质试卷接入:扫描件 / 照片 OCR 识别(RapidOCR PP-OCRv6 · Rust 侧推理,M8.1 恢复;模型首次启动自动下载)
  • 双后端模式:Rust + GPU 在线服务(生产首选)与 WASM 浏览器离线演示(备选)

技术栈

层级 选型
前端 React 19 + Next.js 15(App Router)+ Radix UI + Tailwind CSS
后端(在线) Rust 全栈:Axum 网关 + ort(ONNX Runtime)原生推理,单二进制无 Python(GPU/CPU EP 可选)
后端(离线) 轻量模型 + WASM(浏览器内推理)
模型 Langboat/mengzi-bert-base(MRC 抽取)+ shibing624/text2vec-base-chinese(相似度兜底)
文本识别 RapidOCR(PP-OCRv6 · Rust 侧推理,M8.1 恢复;Python 仅用于训练)
训练 Python + PyTorch + Transformers / Sentence-Transformers(仅训练侧,推理已全部 Rust 化)
存储 SQLite(本地测试/单机)/ MySQL(生产)/ Memory(临时兼容)

仓库结构

RubricSpan/
├── contracts/          # 冻结契约:OpenAPI、JSON Schema、模型产物规范
├── train/              # Python 训练侧:打标 / 对齐 / 训练 / 评估 / 导出
├── backend/            # Rust 后端(Cargo workspace:服务 / 评分 / 推理 / OCR / 存储)
├── frontend/           # Next.js 15 前端(阅卷工作台等)
├── wasm/               # WASM 离线推理构建(备选模式)
├── data/               # 数据目录(原始 / 合成 / 处理后,不入库)
├── models/             # 模型产物目录(不入库,见 contracts/model-artifacts.md)
├── docs/               # 项目文档:契约变更记录、评估报告、bad case、部署手册
└── .github/            # CI 工作流与 Issue/PR 模板

快速开始

环境基线:Rust 工具链、Node.js、Python(仅训练需要);可选 NVIDIA GPU 用于推理加速。

后端(Rust 在线服务)

cd backend
cargo run -p rubricspan-server

前端(Next.js)

cd frontend
npm install
npm run dev

训练流水线(Python)

cd train
python -m venv .venv
.venv\Scripts\activate        # Windows;Linux/macOS 用 source .venv/bin/activate
pip install -r requirements.txt

文档索引

文档统一由 VitePress 站点管理,通过 GitHub Pages 自动部署(见 .github/workflows/docs.yml)。

文档 说明
技术方案(计划书) 技术方案(v4):架构、算法、训练、双后端、OCR、指标与风险
执行计划 执行计划:里程碑、WBS、验收标准、风险登记册
后端指南 / 前端指南 / 训练指南 三大组件的构建、结构与约定(组件目录内 README 为指针)
部署与运行手册 在线/离线/训练三种模式的部署步骤与环境陷阱
全链路评估报告 系统级 §13 指标实测与调优实验结论
VitePress 文档站 部署后的在线文档(构建产物,详见 docs/)
contracts/ 接口与数据契约(冻结后变更走 变更记录)
docs/quality/bad-cases.md bad case 登记(迭代闭环入口)

里程碑

数据与环境 → 大模型打标 → 模型训练与导出 → OCR 集成 → Rust 在线后端 → 前端开发 → WASM 离线备选 → 联调评估与交付(共 13 周,详见执行计划 §3)。

当前进度:M0–M8 完成。M8 将推理栈去 Python 化:ort + tokenizers 原生实现与旧运行时金标对拍(53 MRC + 180 相似度逐位一致),e2e 指标零回退后删除 backend/runtime/,交付物收敛为单个 Rust 二进制。交付 FP32+INT8 双模型(ONNX)、Rust 在线服务、WASM 浏览器离线演示与完整训练/评估工具链。全链路评估报告:系统级 ScoreCorr 0.959(目标 ≥0.85 ✅)、等价给分率 97.4%(目标 ≥80% ✅);Point-Acc 78.4%(受金标口径分歧影响,34 条仲裁清单见 arbitration-sheet)与模型级 EM/F1 经评审裁剪至迭代闭环(M7 评审)。

浏览器离线单题评分演示:启动前端后访问 /offline(使用说明);部署细节见部署与运行手册。

许可证

AGPL-3.0 —— 本项目代码以 GNU Affero General Public License v3.0 发布。 通过网络提供服务时,服务端修改后的源代码同样须向用户提供(见 LICENSE 第 13 条)。

模型权重(MRC/相似度 ONNX,发布至 HF/ModelScope 厂库)以 CC BY-NC-SA 4.0 发布: 训练数据含 CC BY-NC 4.0(CMMLU)与 CC BY-NC-SA 4.0(C-Eval)等非商业来源,模型发布许可 对齐最严格的数据许可,保证全部训练数据合规可用;商业使用需另行取得相关数据集商业授权。 完整数据集许可审计见 docs/quality/licenses.md。