Skip to content

encyc/exam-master

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

自动阅卷系统

基于Python的自动阅卷系统,支持屏幕截图、大模型OCR识别和自动评分功能。

功能特性

🖥️ 屏幕截图功能

  • 交互式区域选择:可视化界面选择截图区域,一次配置多次使用
  • 高精度截图:支持高分辨率截图,确保文字清晰可识别
  • 智能命名:自动保存截图,文件名包含时间戳和学生信息
  • 图片预处理:自动增强对比度、锐化,优化OCR识别效果

🤖 大模型集成

  • 多模型支持:支持OpenAI GPT-4 Vision、Claude等主流大模型
  • 可配置接口:灵活的API配置,支持自定义模型参数
  • 智能预处理:去噪、增强、二值化等图像优化技术
  • 高精度识别:基于大模型的文字识别,支持手写和印刷文字

📊 自动评分功能

  • 多种题型:支持选择题、填空题、简答题、论述题等
  • 智能比对:关键词匹配 + 语义相似度双重评分机制
  • 部分得分:支持根据相似度给予部分得分
  • 详细反馈:提供具体的得分点和扣分原因

📋 报告导出

  • Excel导出:生成标准化的Excel成绩报告
  • PDF导出:专业的PDF格式成绩单
  • 批量导出:支持批量学生成绩导出
  • 历史记录:完整的阅卷历史查询功能

系统架构

exam-master/
├── src/exam_master/
│   ├── core/           # 核心模块(模型、配置、工具)
│   ├── gui/            # GUI界面模块
│   ├── ocr/            # OCR识别模块
│   ├── grading/        # 评分引擎模块
│   └── export/         # 报告导出模块
├── screenshots/        # 截图保存目录
├── exports/            # 导出文件目录
├── logs/               # 日志文件目录
└── config.json         # 配置文件

快速开始

环境要求

  • Python 3.13+
  • uv 包管理器

安装依赖

# 使用uv安装依赖
uv pip install -e .

配置API密钥

创建 .env 文件并添加API密钥:

LLM_API_KEY=your_api_key_here

启动应用

# 运行GUI应用
python main.py

# 或使用命令行
exam-master

使用说明

1. 首次使用配置

  1. 启动应用后,点击"工具" → "配置截图区域"
  2. 拖拽选择答题卡区域,松开鼠标确认
  3. 区域配置会自动保存,后续无需重复配置

2. 学生信息管理

  1. 在"学生信息"区域填写学号、姓名、班级
  2. 点击"设置学生"按钮确认
  3. 截图文件会自动以"学号_姓名_时间戳"格式命名

3. 题目管理

  1. 点击"添加题目"按钮创建新题目
  2. 设置题目ID、题型、分值、标准答案
  3. 支持选择题、填空题、简答题、论述题

4. 阅卷流程

  1. 截图:点击"截图"按钮获取答题卡
  2. OCR识别:点击"OCR识别"提取文字
  3. 自动评分:点击"自动评分"进行评分
  4. 导出报告:点击"导出报告"保存结果

5. 评分标准

  • 选择题:完全匹配标准答案
  • 填空题:基于相似度阈值,支持部分得分
  • 简答题:关键词匹配(60%) + 语义相似度(40%)
  • 论述题:更注重关键词匹配(70%),标准相对宽松

配置说明

截图配置

{
  "screenshot": {
    "save_dir": "screenshots",
    "image_format": "PNG",
    "quality": 95,
    "auto_naming": true
  }
}

大模型配置

{
  "llm": {
    "provider": "openai",
    "api_key": "your_api_key",
    "model_name": "gpt-4-vision-preview",
    "max_tokens": 1000,
    "temperature": 0.1,
    "timeout": 30
  }
}

评分配置

{
  "grading": {
    "similarity_threshold": 0.8,
    "keyword_matching_weight": 0.6,
    "semantic_similarity_weight": 0.4,
    "enable_partial_credit": true
  }
}

API接口

OCR识别

from exam_master.ocr import OCRProcessor

processor = OCRProcessor()
result = processor.process_image(image_path, custom_prompt="识别数学公式")

自动评分

from exam_master.grading import GradingEngine
from exam_master.core import Question, QuestionType

engine = GradingEngine()
question = Question(
    question_id="q1",
    question_type=QuestionType.SHORT_ANSWER,
    content="什么是人工智能?",
    standard_answer="人工智能是模拟人类智能的技术科学",
    score=10.0
)
result = engine.grade_question(question, student_answer)

报告导出

from exam_master.export import ReportExporter
from exam_master.core import ExamResult

exporter = ReportExporter()
success = exporter.export(exam_result, "report.xlsx", is_excel=True)

开发指南

添加新的OCR提供商

  1. 继承 LLMProvider 基类
  2. 实现 recognize_text 方法
  3. OCRProcessor 中注册新提供商

添加新的题型支持

  1. 继承 QuestionGrader 基类
  2. 实现 grade 方法
  3. GradingEngine 中注册新评分器

添加新的导出格式

  1. 创建新的导出器类
  2. 实现 export 方法
  3. ReportExporter 中集成新格式

故障排除

OCR识别失败

  • 检查API密钥是否正确
  • 确认网络连接正常
  • 检查图片质量是否清晰
  • 尝试调整图片预处理参数

评分不准确

  • 调整相似度阈值配置
  • 优化标准答案的表述
  • 检查关键词提取是否准确
  • 考虑调整权重配置

截图区域不准确

  • 重新配置截图区域
  • 检查屏幕分辨率设置
  • 确保截图时窗口位置固定

更新日志

v0.1.0 (2024-01-01)

  • ✨ 初始版本发布
  • 🖥️ 屏幕截图功能
  • 🤖 大模型OCR集成
  • 📊 自动评分引擎
  • 📋 Excel/PDF导出

贡献指南

欢迎提交Issue和Pull Request来改进项目。

开发环境设置

git clone https://github.com/your-username/exam-master.git
cd exam-master
uv pip install -e ".[dev]"

运行测试

pytest tests/

代码格式化

black src/
isort src/

许可证

MIT License - 详见 LICENSE 文件

联系方式

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages