fix: improve OCR indexing and evidence review

This commit is contained in:
2026-09-25 19:03:19 +08:00
parent ac1f0ff46d
commit df5fcb4bda
12 changed files with 185 additions and 36 deletions
+12 -10
View File
@@ -6,9 +6,11 @@
- 已实现《自动化专业综合实践》的教师端闭环:课程与规则版本、挂载目录扫描和导入、文档解析、课程及项目知识库、独立评分批次、逐项复核、Excel 成绩表和逐生 PDF 反馈。
- 前端为 React/TypeScript/Vite/Ant Design;后端为 FastAPI/SQLAlchemy;PostgreSQL + pgvector 存储数据,Redis + RQ 执行评分任务,Nginx 提供前端并代理 `/api`。
- 本机 Compose 预览使用 `127.0.0.1:18080`,因为 `8080` 已被占用;仓库默认端口仍为 `8080`。本机 `.env` 已生成随机加密密钥,但不在 Git 中。
- 已执行数据库迁移 `0001`,初始课程及其版本已写入 PostgreSQL。当前未导入学生项目。
- 本机 Compose 预览使用 `127.0.0.1:18080`,因为 `8080` 已被占用;仓库默认端口仍为 `8080`。本机 `.env` 已生成随机加密密钥并填入 DeepSeek API Key,但不在 Git 中。
- 已执行数据库迁移 `0002`,初始课程及其版本已写入 PostgreSQL。本机已从 `docs/` 示例报告导入 1 个验收项目;汇报 PPTX 由示例报告内容生成,并非学生原始 PPT。
- `docs/阶段报告3.pdf` 已纳入示例材料和端到端测试。
- 本机已下载 BGE-M3 到 `models/bge-m3/`,固定 Hugging Face 修订版 `5617a9f61b028005a4858fdac845db406aefb181`;模型目录不提交到 Git。
- 本机已下载 PP-OCRv5 mobile 检测与中文识别模型到 `models/ocr/`;下载与解压命令见部署指南。
## 代码入口与数据流
@@ -49,17 +51,17 @@ uv run pytest -q
## 已验证与尚未验证
- 最终后端测试:**15 通过、1 跳过**;跳过项是宿主机 LibreOffice 缺失。容器内另行验证了 DOCX/PPTX 渲染。
- 前端生产构建通过;Compose 的 PostgreSQL、Redis、API、worker、Web 当前均已启动,首页、深链接、`/api/health`、课程及仪表盘 API 返回正常。数据库版本为 `0001`。
- 最终后端测试:**18 通过、1 跳过**;跳过项是宿主机 LibreOffice 缺失。容器内 LibreOffice 25.2.3.2 已实际转换课程 DOCX 和验收 PPTX,页数、文字及页面图片均正常。
- 前端生产构建通过;Compose 的 PostgreSQL、Redis、API、worker、Web 当前均已启动,首页、深链接、`/api/health`、课程及仪表盘 API 返回正常。数据库版本为 `0002`;全新 SQLite 数据库迁移至 `0002` 也已验证。
- RQ worker 曾在空闲期间因 Redis 连接超时退出,日志显示正常退出码 0;已在 `compose.yaml` 设置 `restart: unless-stopped` 并重新启动。接手后应观察是否反复超时。
- 当前未提供真实 BGE-M3/OCR 权重和 DeepSeek API Key。测试对外部模型使用 mock;**尚未验证真实模型请求、真实嵌入检索与扫描 PDF OCR**。模型缺失时系统可启动和导入,但知识库入库或评分会给出错误。
- Windows Docker Desktop 的步骤已写入部署指南,尚未在 Windows 机器上实测。
- 使用 `docs/` 的四份示例报告及生成的汇报 PPTX,经目录扫描、确认、课程资料入库、真实 BGE-M3/pgvector 检索和真实 DeepSeek API 完成批次 `3`:**22/22 项成功**。首轮有 1 项引文不匹配,重试后成功;保留了成功项。项目索引重建后有 316 段、平均 506 字,向量均为 1024 维;77 条评分证据均能匹配对应文档页的原文和页面图片。
- 对批次 `3` 完成教师复核和修改历史验证;Excel 成绩表及 11 页 PDF 反馈均可下载且可解析,文件位于 `data/exports/`。批次 `2` 保留为首次真实运行的对照记录(16 项成功、6 项证据不匹配)。
- 将 `docs/阶段报告1.pdf` 的一页栅格化为无文本层 PDF 后,离线 PaddleOCR 提取 496 字,识别到目录和章节标题。真实扫描仪产生的不同质量扫描件尚未实测。Windows Docker Desktop 尚未在 Windows 机器上实测。
## 接手后优先完成
1. 放入离线 BGE-M3 模型,配置 DeepSeek 密钥和可处理图像的 `deepseek-flash` 兼容端点;有扫描版 PDF 时再放入离线 OCR 模型。重启服务并确认模型设置页。
2. 用一套脱敏的学生目录执行真实流程:扫描和确认、课程知识库入库、创建并运行评分批次、核对每项证据与页码、教师修改、导出 Excel 和 PDF。尤其检查真实模型 JSON、页面图像和批次失败重试。
3. 在目标 Windows Docker Desktop 环境验证目录挂载、模型路径和完整启动。
4. 持续查看 worker 日志;若 Redis 超时重复出现,再定位 Docker/WSL 休眠或网络原因。不要仅凭容器显示“已启动”判断评分任务可用。
1. 使用独立提供、已脱敏的学生目录再次验收五类原始材料,尤其是学生原始 PPTX 和真实扫描仪 PDF;当前验收使用仓库示例报告与生成材料。
2. 在目标 Windows Docker Desktop 环境验证目录挂载、模型路径和完整启动。
3. 持续查看 worker 日志;若 Redis 空闲超时重复出现,再定位 Docker 后端休眠或网络原因。不要仅凭容器显示“已启动”判断评分任务可用。
当前代码位于 `main` 分支,阶段提交使用 Conventional Commits。交接前工作区应保持干净;`.env`、`models/`、`data/`、缓存和构建产物由 `.gitignore` 排除。