GraderFlow 是一个面向学校、培训机构和考试场景的桌面端智能阅卷系统,基于 Python + PySide6 + OpenCV + YOLOv5 + LLM 构建,支持客观题识别、主观题 AI 评分、条形码识别、阅卷痕迹留存、报告联动预览和智能助手配置。
系统支持 3 天全功能试用,试用结束后可通过激活码完成授权,适合本地交付和独立部署。
- 支持左侧导航式工作台,覆盖
阅卷中心、阅卷痕迹、阅卷报告、数据统计、参数设置。 - 支持客观题与主观题混合阅卷,形成从配置到识别到导出的完整闭环。
- 支持 AI 助手通过文字或图片自动生成客观题和主观题答案配置,并一键应用到系统。
- 支持 AI 助手流式输出与模型思考展示,提升配置过程的可解释性。
- 支持 API Key、API 地址、模型名称持久化保存,重启后自动加载,并可在界面内测试连接。
- 支持条形码识别,将识别结果写入学号或准考证号字段。
- 支持阅卷痕迹与报告文件自动归档,并在界面中联动预览。
- 支持开发环境与打包环境的相对路径适配,提升跨电脑交付稳定性。
- 批量扫描答题卡后,系统自动完成客观题识别与成绩汇总。
- 对包含主观题的试卷,系统基于标准答案与提示词调用大模型进行评分。
- 对新试卷或新题型,老师可直接通过 AI 助手输入自然语言或上传图片,自动生成答案配置。
- 阅卷完成后,可查看阅卷痕迹、批改报告、统计信息,并导出 Excel 成绩单。
- 基于 OMR 流程识别答题卡填涂区域。
- 支持单选题、多选题答案配置。
- 支持题列布局配置、题组大小配置和 A/B 识别模式切换。
- 支持标准评分与部分扣分等客观题评分规则。
- 支持按
题号:答案:分值:选项个数格式读取答案配置。
- 支持主观题题号、总分、参考答案、用户提示词配置。
- 支持调用兼容 OpenAI 格式接口的大模型完成评分。
- 支持主观题报告生成与归档。
- 支持按需开启或关闭主观题评分流程。
- 支持学生信息识别开关。
- 支持条形码识别开关。
- 支持
pyzbar与图像回退策略结合的条形码识别流程。 - 条形码识别结果可作为学号或准考证号字段使用。
- 支持通过对话生成客观题配置块和主观题配置块。
- 支持上传试卷图片辅助解析配置。
- 支持流式输出,边生成边展示。
- 支持模型思考内容显示,并在正式回答出现后收起思考区。
- 支持一键应用客观题配置和主观题配置。
- 支持配置应用后即时刷新到系统配置界面。
- 支持 API Key、API 地址、模型名称的保存、自动回填和连接测试。
- 自动归档
read目录中的阅卷痕迹文件。 - 自动归档
reports目录中的文本报告和图片报告。 - 支持结果表与痕迹文件、报告文件联动。
- 支持文本预览和图片预览双模式切换。
- 在匹配不到目标文件时支持回退展示,避免联动区空白。
- 支持查看
read与reports目录下的文件数量、体积和时间信息。 - 支持在统计页浏览文件清单并直接预览。
- 支持导出成绩到
Excel或CSV。 - 支持批量阅卷结果汇总展示。
- 在
参数设置中配置答案、主观题、识别模式与 API 信息。 - 在
阅卷中心选择单张图片或批量文件夹。 - 点击开始识别,系统执行客观题识别、主观题评分和学生信息提取。
- 在结果表查看每份试卷的识别结果、主观题分数和总分。
- 在
阅卷痕迹与阅卷报告页面复核每份试卷的处理结果。 - 在
数据统计页面查看文件总量、体积与归档情况。 - 按需导出成绩或继续通过 AI 助手调整配置。
- 直接输入题目答案,例如单选题、多选题和主观题采分点。
- 上传标准答案图片或试卷截图,让模型辅助整理配置。
- 让模型帮助生成符合系统格式的客观题配置和主观题配置。
- 客观题会输出
objective代码块,格式为题号:答案:分值:选项个数。 - 主观题会输出
subjective代码块,格式为题头加采分点。 - 用户点击应用后,系统会把配置写入
config/answer_config/下对应文件并回刷界面。
- 支持兼容 OpenAI 格式的接口。
- 支持自定义
API Key、Base URL和模型名称。 - 支持在设置页点击“测试连接”验证配置是否有效。
- 保存后的配置会写入
config/config.json,重启后自动加载。
- 原始试卷图。
- 标注后的识别图。
- 识别过程记录。
- 结果摘要信息。
- 方便老师复核识别过程与识别结果。
- 方便定位异常试卷、漏识别和误识别问题。
- 方便在售后交付和问题排查中快速复现现场。
GraderFlow/
├── config/ # 配置文件、答案文件、权重文件
├── core/
│ ├── data/ # 数据模型
│ ├── omr/ # 客观题识别与阅卷主流程
│ ├── subjective/ # 主观题评分与大模型调用
│ └── llm_agent.py # 智能助手核心逻辑
├── interface/
│ ├── dialogs/ # 激活、智能助手等对话组件
│ └── main_window.py # 主界面与工作台
├── utils/ # 配置管理、路径管理、导出等工具
├── test_script/ # 调试和验证脚本
├── main.py # 程序入口
├── build_onefile.ps1 # 单文件打包脚本
└── README.md
+-----------+ +------------------------+ +-----------------------+
| main.py | ---> | interface.main_window | <--> | utils.config_manager |
+-----------+ +------------------------+ +-----------------------+
| | |
v v v
+-------------------+ +--------------------+ +--------------------+
| core.omr.processor| | SmartAgentDialog | | path_utils/export |
+-------------------+ +--------------------+ +--------------------+
| | |
v v v
+-------------------+ +--------------------+ +--------------------+
| detector/recognizer| | core.llm_agent | | config files |
+-------------------+ +--------------------+ +--------------------+
|
v
+-------------------+
| subjective grader |
+-------------------+
pip install -r requirements.txtpython main.py- Python
3.8+ - Windows
- 已安装
PySide6、OpenCV、PyTorch、OpenAI等依赖 - 如果使用条形码识别,需确保
pyzbar及其依赖动态库可用
- 文件位置:
config/config.json - 主要字段:
objective_answer_path:客观题答案文件路径subjective_answer_path:主观题答案文件路径api_key:大模型接口密钥api_base_url:接口地址model_name:当前模型名recognition.mode:A/B 识别模式recognition.layout:题列布局recognition.group_size:每图题组大小enable_barcode:是否启用条形码识别
config/answer_config/objective_answer.txtconfig/answer_config/subjective_answer.txt
1:A:1.0:4
2:BC:1.0:4
3:ABCD:2.0:4
21题(10分)
(1)叶绿体(+3)
(2)光合作用(+2)
- 项目支持通过
PyInstaller打包为 Windows 可执行程序。 - 当前仓库包含
build_onefile.ps1,用于单文件打包场景。 - 项目已处理相对路径、答案文件路径和大部分配置持久化问题,适合本地交付。
- 若启用条形码识别,打包时需确保
pyzbar相关动态库被正确收集。
PySide6OpenCVPyTorchOpenAIPandasOpenPyXLFlaskCryptographypyzbar
- 支持试用期与激活机制。
- 支持本地独立部署与离线交付。
- 当前版本已完成多轮业务迭代,具备真实教育场景落地能力。
- 优化自动更新与版本检测能力。
- 继续提升打包体积和单文件交付体验。
- 继续扩展 AI 助手在答案整理、异常解释和配置审查场景中的能力。