Via 作文批改:一个面向学生与教师的英语作文智能批改系统

Via 作文批改:一个面向学生与教师的英语作文智能批改系统
项目简介
Via 作文批改是一个面向中学英语写作场景的作文批改系统,提供学生端和教师端两套使用入口。
学生可以直接输入作文,也可以上传作文图片、Word 或 PDF 文件;系统会对图片作文进行 OCR 识别,经过人工校正后,再生成结构化的 AI 批改报告。教师可以查看学生作文、筛选批改状态、阅读详细报告,并补充教师意见。
项目同时提供 Web 网站和 Android APP:
- Web 网站:适合电脑浏览器使用,保留完整的后台与报告能力。
- Android APP:使用原生 Android WebView 承载网站,针对手机屏幕重新设计了页面布局和交互。
项目地址(部署版本):https://grade.viaenglish.xyz
为什么做这个项目
传统英语作文批改通常需要教师逐句阅读、标注错误、给出评分,再整理成评语。这个过程耗时较长,而且学生往往只能看到一个总分,无法快速定位自己在语法、词汇、结构和内容方面的问题。
这个项目希望把作文批改拆成一条可追踪的数字化流程:
提交作文 ↓图片 OCR 识别 / 文本读取 ↓人工校正(图片作文) ↓AI 生成结构化批改报告 ↓按维度查看评分与建议 ↓网页阅读或导出 Word 报告重点不是只给出一个“作文分数”,而是把评分依据、错误位置、修改建议和参考范文组织成可以继续学习的反馈。
核心功能
1. 学生端作文提交
学生登录后可以创建作文记录,并填写以下内容:
- 作文标题
- 作文正文
- 作文要求或题干
- 作文图片、Word、PDF 等文件
- 作文要求图片
图片作文会进入 OCR 流程;纯文本作文可以直接进入批改流程。系统会保存作文原文、确认后的文本、文件信息和处理状态,便于后续查看历史记录。
2. OCR 识别与人工校正
对于手写或拍照作文,系统会优先调用腾讯云 OCR 进行识别,并保存 OCR 原文和识别质量信息。
OCR 结果不直接作为最终批改文本,而是先进入人工校正页面。教师或学生可以检查段落、单词和标点,确认后再生成 AI 报告。这样可以减少因为图片模糊、手写连笔或版面复杂导致的误判。
当 OCR 服务不可用时,系统会保留可继续编辑的兜底状态,而不是让整个提交流程直接中断。
3. AI 结构化批改
报告生成模块优先调用腾讯混元大模型,并对返回结果做 JSON 解析、字段校验和分数归一化。
当前报告主要包含:
- 语法评分与语法错误分析
- 词汇评分与词汇替换建议
- 结构评分与段落改进建议
- 内容评分与扣题反馈
- 综合得分和等级
- 改进建议
- 教师确认意见
- 标准版参考范文
- 高级版参考范文
- 原文标注与错误详解
提示词中明确要求模型引用学生原句、针对真实作文进行评价,并限制各评分项和输出格式。服务异常时,系统会生成明确的兜底报告,提示用户核对 OCR 文本或稍后重新生成。
4. 报告分类阅读
报告页面不是把所有内容一次性堆在长页面中,而是按学习目标拆分成多个入口:
- 错误详解
- 语法错误分析
- 词汇使用
- 结构改进
- 内容反馈
- 改进建议(含老师)
- 参考范文标准版
- 高级版
- 导出报告
在 APP 中,报告首页只展示这些分类菜单;点击菜单后进入对应详情页,再通过返回按钮回到分类首页。这样可以让学生先选择自己想看的维度,降低阅读复杂报告时的信息压力。
评分标准、学生习作图片版和学生习作文字版等原始页面内容没有继续作为独立菜单展示,避免和“错误详解”及评分维度重复。
5. 教师端管理
教师端可以:
- 查看学生作文列表
- 按状态筛选作文
- 搜索学生
- 查看作文详情和批改报告
- 补充或修改教师确认意见
- 创建、修改和停用学生账号
- 重置学生密码
学生和教师使用不同的角色权限,登录后会进入各自对应的工作区。
6. Word 报告导出
网站提供 /api/word/[id] 接口,根据作文和报告数据生成真实的 .docx 文件,并设置下载文件名和正确的 MIME 类型。
导出文档使用 docx 库生成,内容可以继续在 Microsoft Word 或其他兼容软件中编辑、打印和归档。
APP 对导出链接做了专门兼容处理:报告导出请求可以交由系统浏览器接管,使用方式与网站原本的下载行为保持一致。由于网站登录 Cookie 与手机浏览器的登录 Cookie 相互独立,首次在浏览器下载时可能需要先在浏览器中登录网站。
技术架构
Web 项目
网站使用 Next.js App Router 构建,主要技术包括:
- Next.js 15
- React 19
- TypeScript
- Prisma ORM
- SQLite(开发环境)
- bcryptjs(密码哈希校验)
- Zod(表单数据校验)
- docx(Word 文档生成)
- 腾讯云 OCR
- 腾讯混元大模型
项目的主要目录如下:
grade-web/├─ src/app/ # 页面、路由和 API Route Handler├─ src/components/ # 报告、布局和交互组件├─ src/lib/actions.ts # Server Actions:登录、提交、生成报告等├─ src/lib/auth.ts # Cookie 会话和角色权限├─ src/lib/ocr.ts # OCR 调用与兜底逻辑├─ src/lib/review.ts # AI 批改、提示词、JSON 校验和兜底报告├─ src/lib/word-export.ts # Word 报告生成├─ prisma/schema.prisma # 数据模型└─ public/ # 模板、示例图片和字体资源数据模型
系统围绕以下几类数据组织:
User:登录账号和角色Student/Teacher:角色扩展信息Essay:作文主记录、正文、题目要求和处理状态EssayFile:作文图片、Word、PDF 等附件OcrResult:OCR 原文、校正文本、识别质量和供应商信息CorrectionReport:总分、分项评分、分析文本和参考范文ReportAnnotation:原文中的错误、修改结果和批注
登录状态使用签名 Cookie 保存,密码在数据库中以哈希形式存储。APP 的“记住密码”功能不直接把密码写入网页存储,而是通过 Android 原生桥接,使用 Android Keystore 中的 AES-GCM 密钥加密后保存。
Android APP 适配
Android APP 位于 android-app/,本质上是一个轻量的原生 Android WebView 客户端。
APP 的设计目标
- 网站继续作为主要业务系统,不重复实现后端逻辑
- 手机端界面更简洁,减少说明性文字
- 报告内容按分类分屏查看
- 保留图片选择、登录、网页后退和断网重试能力
- 通过 Logo、APP 名称和移动端菜单形成独立的 APP 体验
APP 专属界面
APP 通过 assets/app.js 和 assets/app.css 注入移动端样式与交互,不改变网站在普通浏览器中的视觉布局。
主要适配包括:
- 首页隐藏冗余描述,只保留学生、教师入口和图标
- 开屏显示
logo.jpg,并限制 Logo 在合理尺寸内,保持原图比例 - 登录页增加“记住密码”功能,并避免 WebView 重复注入造成多个复选框
- 提交页优化输入框、文件上传区和按钮布局
- 进度页展示作文图片预览
- 报告页改为分类菜单 + 详情页的交互模式
- 普通页面使用底部导航,报告分类页使用铺满屏幕的菜单布局
- APP 名称设置为“Via作文批改”
原生层职责
MainActivity.java 主要负责:
- 创建和配置 WebView
- 注入 APP CSS 和 JavaScript
- 控制页面加载时机,避免原网页开屏界面闪现
- 调用 Android 文件选择器
- 保存和读取加密登录凭据
- 处理外部链接和报告导出链接
- 显示加载失败页面和重试按钮
网站业务仍由 Next.js 服务端完成,因此 APP 不需要复制数据库、OCR 或 AI 逻辑。
一个完整的使用示例
以学生上传作文图片为例:
- 学生打开 Via 作文批改,选择“学生入口”。
- 登录后填写作文标题,可上传作文图片和题干图片。
- 系统保存作文记录,并把图片送入 OCR。
- 学生或教师在 OCR 页面检查识别结果并确认文本。
- 点击生成报告,服务端调用 AI 模型生成四项评分和详细建议。
- 生成页展示作文图片预览与处理进度。
- 报告首页显示九个分类入口。
- 学生依次查看语法、词汇、结构、内容和改进建议。
- 需要归档时,从“导出报告”进入 Word 导出流程。
项目中的几个关键问题
OCR 不能直接等同于最终文本
图片识别存在漏字、错字、断行和标点问题。因此项目把“识别”和“确认”拆开,先让人检查,再让 AI 批改。
AI 输出需要结构化约束
大模型输出可能出现字段缺失、格式不统一或分数不合法。项目通过提示词约束、JSON 解析、字段校验、分数归一化和兜底报告,保证页面始终能渲染。
移动端不适合直接照搬桌面页面
原始报告内容较多,如果在手机上连续展示,会形成很长的滚动页面。因此 APP 把报告拆成多个分类入口,让用户按需查看。
WebView 下载与浏览器下载存在会话差异
网站报告接口依赖登录 Cookie。WebView、Android 系统下载服务和外部浏览器之间的 Cookie 并不天然共享,因此导出功能需要根据实际设备环境选择接管方式,并在真机上验证登录态和文件保存行为。
本地运行与构建
启动网站
cd grade-webnpm.cmd installnpm.cmd run prisma:generatenpm.cmd run db:resetnpm.cmd run dev默认访问地址:http://localhost:3000
生产环境需要配置数据库、会话密钥、上传目录、腾讯云 OCR 凭据和混元模型凭据。真实密钥不应写入仓库或博客文章。
构建 Android APP
cd android-app$env:JAVA_HOME='E:\Program Files\Android\Android Studio\jbr'$env:ANDROID_HOME='E:\Android\Sdk'$env:ANDROID_SDK_ROOT='E:\Android\Sdk'$env:GRADLE_USER_HOME='E:\Android\Gradle'.\gradlew.bat clean :app:assembleDebug --offline --console=plain生成的 Debug APK 位于:
android-app/app/build/outputs/apk/debug/app-debug.apk后续计划
后续可以继续完善以下方向:
- 增加 PDF 报告导出
- 支持更多 OCR 供应商和本地 OCR
- 增加作文版本对比和修改前后 diff
- 增加班级统计、分数趋势和错误类型统计
- 增加报告分享和教师批量导出
- 对 APP 下载流程做更多 Android 版本和浏览器兼容性测试
- 将开发环境 SQLite 平滑迁移到生产级数据库
- 增加自动化测试、接口监控和报告生成耗时统计
总结
下载
Via 作文批改并不是简单地把一个大模型接口包装成“打分工具”,而是围绕作文批改建立了一条完整流程:从文件上传、OCR 识别、人工确认,到 AI 分项评分、教师复核和 Word 归档。
这个项目的核心价值在于把复杂的批改结果拆解成学生能理解、教师能复核、系统能持续扩展的结构化数据,同时通过 Web + Android WebView 的方式,用较低成本兼顾电脑端和移动端使用体验。




























