基于机器学习的古籍文字识别与断句校正系统

Vue3+Flask 古籍 OCR 流水线:PaddleOCR 识文、文本整理勘校、BERT 句读标注与多格式导出,JWT 任务隔离,支持离线微调数据闭环,适合 OCR+NLP 毕业设计。

评分:4.8/5.0
销量:27
发布:5/20/2026
难度:L3 高级

获取完整源码

演示视频仅作效果参考。完整源码、项目说明与运行答疑,请私聊沟通(适合毕业设计 / 课程设计 / 课设参考)。

获取完整源码观看演示视频
含项目说明文档,便于对照学习
可本地运行,适合课设演示
沟通获取后可咨询运行问题

项目封面

截图 1

项目概览

以卷宗任务管理上传→预处理→OCR→整理→改正→加标点→导出全流程,含版式主向估计、行字分割、异体映射与 HuggingFace 句读模型(可 MODU_SEGMENT_MODEL_DIR 切换权重)。管理员可导出 JSONL 微调、模型评估与数据集标注;无 Paddle 时可手改勘校继续后续步骤,适合 Python 古籍数字化、OCR 与句读 NLP 类毕业设计。

项目说明

基于机器学习的古籍文字识别与断句校正系统

1. 项目定位

本仓库实现一套面向古籍页面图像的 端到端可复现流水线:从上传图卷、版面归一与预处理、深度学习文字识别(OCR)、文本整理、勘校与异体处理、句读标注(深度学习模型与规则后处理),到多格式导出与 微调 / 标注数据闭环。系统以 任务(卷宗) 为粒度管理全流程状态;登录用户 仅能访问本人任务(管理员可查看全部),便于课题演示、文章实验与多用户隔离。

模型与调优原则(本课题约定)

  • 不自研 backbone 网络:识文、句读均 依托第三方开源/预训练模型(PaddleOCR、HuggingFace 上的 BERT 类 TokenClassification 等)做 推理
  • 线上系统:默认只做 加载权重 + 前向推理;不在 Web 内嵌 GPU 训练作业。
  • 后期调优:句读支持 离线手动微调——由接口导出业务数据或管理员标注 JSONL,在独立 Python 环境中用仓库脚本继续训练,产出新目录后通过 MODU_SEGMENT_MODEL_DIR 切换部署。

技术形态:Vue 3 单页应用 调用 Flask REST API(JWT 鉴权),数据落 SQLite 与本地 uploads/ / outputs/;PaddleOCR、句读 Transformers 等 按依赖与权重可选启用,缺失时走明确降级(例如无 Paddle 时可手改勘校正文继续后续步骤)。


2. 功能总览

2.1 用户与权限

能力说明
注册 / 登录POST /api/v1/auth/register/login;返回 JWT(Bearer)
当前用户GET /api/v1/auth/me;前端启动时刷新 is_admin 等字段
任务隔离普通用户仅见、仅改 user_id 为本人的任务
内置管理员启动时写入 SQLite:默认 admin / admin(可用 MODU_ADMIN_* 覆盖);已存在则不重置密码
账号设置PUT /api/v1/auth/me:修改自己的用户名、密码
管理员可访问全部任务;用户管理(授予/取消 is_admin)、模型评估、数据集标注、微调导出

2.2 任务与资源管理

能力说明
新建任务multipart 上传 JPG/PNG;服务端压缩大图、图像预处理、预览与元数据落库
任务列表卷宗页浏览;按 status 显示进度文案
任务详情GET /api/v1/tasks/:id;含 preprocessed_text、勘校/句读元数据等
断点续作卷宗「继续」按状态跳转对应步骤;刷新后通过 sessionStorage + 详情接口恢复
任务删除删除记录及关联原图、预览文件
简易统计GET /api/v1/tasks/:id/stats:字数、行数、低置信字格等

任务状态(status)与续作路径

status含义续作默认进入
done / pending已上传,待识文识别文字
ocr_done已识文,待整理整理文本
preprocessed已整理,待改正改正文字
corrected已改正,待加标点加标点
segment_done可加标点或导出导出

2.3 图像与版面(传统视觉)

能力说明
上传压缩过长边缩放、PNG 大图可转 JPEG,减小体积(upload_compress 元数据写入预处理记录)
图像增强灰度、去噪、二值化、倾斜校正等
版式主向估计粗判横排 / 竖排;竖排时旋转到统一处理空间
行级 / 字级分割行带与单字条带(投影法;粘连字块为粗分割,文章中需说明局限)
预处理元数据行带、字框、预览文件等;导出 JSON 时一并携带

2.4 文字识别(机器学习)

能力说明
深度学习 OCRPaddleOCR(依赖 paddlepaddle 2.6.2 + paddleocr 2.7.3);未安装时 paddle_ready: false,可手改勘校
置信度与存疑字格级置信度;前端低置信高亮
行级坐标line_results 含每行 box 与字符信息
识文后整理识文成功且 Paddle 就绪时,可自动触发一次 文本预处理

2.5 文本整理(预处理)

能力说明
自动整理POST .../preprocess-text:Unicode 规范化、空白/换行规整等(TextPreprocessService
人工修订PUT .../preprocess-text 保存 preprocessed_text
勘校输入优先级自动勘校优先使用 preprocessed_text,其次 raw_text

2.6 文本勘校(纠错子系统)

能力说明
自动勘校异体/混淆映射;可选 OpenCC 繁转简
人工勘校PUT .../corrections无识文结果也可手输全文(适配 Paddle 未装场景)
勘校事件写入 correctionsPOST .../feedbacks 合并用户反馈

2.7 句读(机器学习 + 规则)

能力说明
深度句读模型本地 HuggingFace 格式权重(默认 models_weights/sikubert-segment);否则降级并提示
规则后处理标点校验与修正;环境变量控制后处理、七言节奏、标点风格等
自动 / 人工句读POST / PUT .../segmentation;手改非空时 status 置为 segment_done
句读元数据segment_meta:校验警告、模型是否加载等

2.8 导出与数据闭环

能力说明
多格式导出TXT(句读稿优先)、DOCX、JSON(含 preprocessed_text、坐标与元数据);须带 JWT,前端 blob 下载
用户反馈POST .../feedbacks
微调数据导出管理员 GET /api/v1/datasets/finetune(NDJSON);参数 limitonly_segmented
标注数据导出管理员 GET /api/v1/admin/annotations/export(JSONL)

2.9 管理员能力

能力说明
模型效果评估POST /api/v1/admin/eval/runGET .../eval/latest;结合 data/eval_gold.jsonl 与任务快照计算指标
断句数据集标注样本 CRUD、POST .../annotations/from-task/:id 从任务导入、筛选与导出 JSONL
导航入口顶栏「模型评估」「数据集标注」(仅 is_admin

2.10 前端交互(六步流水线)

步骤路由说明
① 上传图片/upload拖拽/选择 JPG、PNG
② 识别文字/recognizePaddle OCR;低置信可视化
③ 整理文本/preprocess需已有识文结果(或测试种子数据)
④ 改正文字/correct自动/人工勘校
⑤ 加标点/segment自动句读 + 人工修订
⑥ 导出/exportTXT / Word / JSON;管理员另可见「全部任务汇总」

另:卷宗 /tasks登录/注册、侧栏步骤导航(StepSidebar)。界面文案为 简体中文;古籍正文可为繁体。

2.11 刻意不纳入当前版本(可作文章展望)

  • Web 内一键 GPU 训练 / 自动调度微调(句读见 scripts/finetune_token_classification.py
  • OCR 领域重训练(使用飞桨官方工具链,再改 app/ml/ocr_model.py 加载逻辑)
  • 外置标注平台(如 Label Studio);本系统采用 内置 Vue 标注页
  • 分语体多模型路由、与 Paddle 并行的 TrOCR 管线等

3. 技术栈与架构要点

层级技术职责
前端Vue 3、Vite、Pinia、Vue Router、Element Plus、Axios六步流水线、JWT 拦截器、卷宗与管理员页
后端Flask 3、SQLAlchemy、Flask-CORS、PyJWT/api/v1、任务与用户 ORM、推理编排
图像OpenCV、Pillow预处理、上传压缩
OCRPaddleOCR(可选)行级文本与 box
句读PyTorch、Transformers(可选)TokenClassification
勘校OpenCC、映射表繁简与异体/混淆
评估scikit-learn 等EvalService 指标
存储SQLite、本地目录userstasksannotation_sampleseval_report

数据库升级:SQLite 无自动迁移脚本;app/__init__.py 对旧库 补列(如 user_idpreprocessed_text)。结构大改时可删除 modu.db 后由 create_all() 重建。旧任务若 user_id 为空,仅管理员可访问。


4. 目录结构

python-gushici-corrective/
├── 项目说明.md                          # 本文档
├── 项目设计方案.md
├── scripts/
│   └── run_all_tests.sh                 # 一键:后端 pytest + 前端 E2E
├── mac/、windows/                       # 部署手册、setup_and_run、模型下载步骤
├── modu-backend/
│   ├── app.py                           # 启动入口(须在本目录执行)
│   ├── requirements.txt
│   ├── requirements-dev.txt             # pytest 等
│   ├── tests/                           # pytest;说明见 tests/README.md
│   ├── scripts/
│   │   ├── run_tests.sh
│   │   ├── e2e_server.sh                # Playwright 临时后端
│   │   ├── README_FINETUNE.md
│   │   ├── build_segment_train_jsonl.py
│   │   └── finetune_token_classification.py
│   ├── app/
│   │   ├── auth/                        # JWT 签发与装饰器
│   │   ├── api/v1/
│   │   │   ├── auth.py
│   │   │   ├── tasks.py
│   │   │   ├── datasets.py
│   │   │   ├── admin_eval.py
│   │   │   └── admin_annotations.py
│   │   ├── services/                    # 导出、勘校、预处理、评估、压缩等
│   │   └── ml/                          # OCR、句读模型封装
│   ├── data/eval_gold.jsonl
│   ├── models_weights/                  # 句读权重(不进 Git,见下载步骤 md)
│   ├── uploads/、outputs/
│   └── modu.db
└── modu-frontend/
    ├── e2e/                             # Playwright 用例
    ├── src/views/                       # 各流水线页 + 登录 + 管理员页
    └── package.json                     # test:e2e

5. HTTP API 契约(摘要)

统一前缀 /api/v1;除注册/登录外,业务接口需请求头 Authorization: Bearer <token>

5.1 认证

方法路径说明
POST/auth/register注册(普通用户;不可占用 admin 用户名)
POST/auth/login登录
GET/auth/me当前用户(需 JWT)
PUT/auth/me修改自己的用户名 / 密码

5.2 任务(须 JWT;任务按用户隔离)

方法路径说明
GET/POST/tasks列表 / 创建(multipart 上传)
GET/DELETE/tasks/:id详情 / 删除
GET/tasks/:id/stats统计
POST/tasks/:id/ocr识文
POST/PUT/tasks/:id/preprocess-text自动/人工文本整理
POST/tasks/:id/corrections/auto自动勘校
PUT/tasks/:id/corrections人工勘校
POST/PUT/tasks/:id/segmentation自动/人工句读
GET/tasks/:id/export?format=txt|docx|json导出附件
POST/tasks/:id/feedbacks用户反馈

5.3 数据集与管理员(须 JWT + 管理员)

方法路径说明
GET/datasets/finetune任务快照 NDJSON;limitonly_segmented
POST/admin/eval/run执行评估;body 可选 scope: all|mine
GET/admin/eval/latest最近一次评估报告
GET/POST/admin/annotations列表 / 新建样本
POST/admin/annotations/from-task/:task_id从任务导入
GET/PUT/DELETE/admin/annotations/:id单条 CRUD
GET/admin/annotations/export标注 JSONL
GET/admin/users用户列表
PUT/admin/users/:id设置 is_admin(内置 admin 不可降权)

5.4 静态资源

  • GET /uploads/<path>:预处理预览图等。

字段与请求体细节以《项目设计方案》及 app/api/v1/*.py 源码为准。


6. 配置与环境变量(后端)

变量作用
MODU_PORTHTTP 端口(默认与前端代理一致,如 8800)
MODU_SECRET_KEYFlask 密钥(生产务必覆盖)
MODU_JWT_SECRETJWT 签名密钥(默认同 SECRET_KEY
MODU_JWT_EXPIRE_HOURSToken 有效期(默认 168 小时)
MODU_ADMIN_USERNAME内置管理员用户名(默认 admin
MODU_ADMIN_PASSWORD内置管理员初始密码(仅首次创建账号时写入)
MODU_DATABASE_URLSQLAlchemy 连接串
MODU_SEGMENT_MODEL_DIR句读模型目录
MODU_FINETUNE_EXPORT_MAX微调导出单次上限(默认 5000)
MODU_UPLOAD_MAX_EDGE上传压缩最长边像素
MODU_UPLOAD_JPEG_QUALITYJPEG 质量
MODU_SEGMENT_POSTPROCESS句读后处理开关
MODU_POETRY_7_SPLIT七言节奏(如 2_5
MODU_SEGMENT_PUNCT_MODE句读标点风格(如 A
MODU_EVAL_GOLD_PATH评估 gold 文件路径

前端:VITE_BACKEND_URL(如 .env.development)指向后端基址。


7. 自动化测试

业务功能以 pytest(API/服务)Playwright(浏览器 E2E) 覆盖;不替代 Paddle 识文准确率与离线微调脚本的现场验证。

7.1 一键自测(仓库根目录)

bash scripts/run_all_tests.sh

7.2 分模块

# 仅后端(约 23 项,mock OCR/句读,不依赖 Paddle)
cd modu-backend && bash scripts/run_tests.sh

# 仅前端 E2E(8 项,自动起临时后端 + Vite)
cd modu-frontend && CI=1 npm run test:e2e

7.3 覆盖范围说明

类别已覆盖(摘要)
后端注册/登录/鉴权、任务 CRUD/统计/反馈、全流程 API(mock ML)、导出三格式、管理员评估与标注、微调 NDJSON
前端注册登录、六步页与导出、卷宗删除、管理员页与权限拦截
未自动化Paddle 识文效果、20MB 超限/坏图、压测、finetune_* 脚本执行

详细用例索引见 modu-backend/tests/README.md
TESTING=True 时存在内部接口 POST /tasks/:id/__test/seed(仅 pytest/E2E 后端),生产 TESTING=False 不注册


8. 相关文档与操作指引

文档或入口用途
项目设计方案.mdAPI 表、路由、数据模型
modu-backend/tests/README.md测试命令与功能对照表
modu-backend/scripts/README_FINETUNE.md句读微调数据格式与训练命令
mac/项目部署手册_macOS.mdwindows/项目部署手册_Windows.md环境安装与启动
mac/必须执行__模型文件下载步骤.mdwindows/…克隆后下载句读权重与 Paddle 缓存
mac/手动微调执行步骤.mdwindows/…离线微调逐步命令

8.1 环境与安装提示(摘要)

  • 推荐 Python 3.12 创建 modu-backend/.venv,安装 requirements.txt;Windows 安装时勾选 Add Python to PATH
  • 句读权重与 Paddle 按各平台 「必须执行__模型文件下载步骤」 操作;权重目录默认 modu-backend/models_weights/sikubert-segment
  • 前端:cd modu-frontend && npm install;开发时 npm run dev,代理 /api/uploads 至后端。
  • 句读微调建议在独立 venv 使用 requirements-train.txt,避免与 Paddle 包冲突。

本文档不展开逐条日常 shell 教程;命令级步骤以各平台 部署手册setup_and_run 脚本为准。

获取完整源码

技术分类

包含内容

完整源码
项目说明文档
演示材料

适合方向

适合计算机、古典文献数字化交叉毕业设计中 Flask REST、Vue3 SPA、PaddleOCR 与 Transformers 句读方向;强调第三方模型推理+离线微调课题约定。

关于 AI源码

AI源码 整理计算机毕业设计、课程设计向的可运行项目参考,含说明文档与演示材料。完整源码请通过联系方式沟通获取。

QQ: 861077046
邮箱: 861077046@qq.com
已帮助 27+ 位同学完成选题参考
问能不能做我的题目

相关推荐

查看全部 →
基于用户画像的食谱推荐系统
高级

基于用户画像的食谱推荐系统

Flask+SQLite 食谱推荐 Web:问卷与活动数据构建用户向量,KMeans 聚类画像 + 规则过滤 + RandomForest 融合排序,输出可解释推荐,含 Hit@K/NDCG 离线评估,适合推荐系统毕业设计。

PythonHTMLSQLite
4.885
基于协同过滤的电影推荐系统设计与实现
高级·新上架

基于协同过滤的电影推荐系统设计与实现

Flask+SQLite 豆瓣电影推荐平台:scikit-surprise 实现 UserCF/ItemCF,三级冷启动降级、星级评分收藏、Pyecharts 后台图表与一键重训,含算法讲解页,适合推荐算法毕业设计。

PythonHTMLSQLite
4.881
基于深度学习的音乐风格分类系统
高级·新上架

基于深度学习的音乐风格分类系统

Django+Vue2 音乐平台:Mel 频谱 CNN+Bi-LSTM 八类风格分类,含在线 MP3 播放、协同过滤推荐、热榜与 SimpleUI 管理后台,MySQL 预置 12 首歌曲,适合深度学习+Web 毕业设计。

PythonVue2MySQL
4.833
基于深度学习的日常服饰分类与推荐系统设计
高级·新上架

基于深度学习的日常服饰分类与推荐系统设计

PyTorch CNN 对 Fashion-MNIST 服饰图像 Top-5 分类,融合协同过滤与 Embedding 相似度的混合推荐引擎,含 120 件商品目录与评分收藏,适合深度学习推荐系统类毕业设计。

PythonHTMLSQLite
4.877
微小异物检测与识别系统
高级·新上架

微小异物检测与识别系统

YOLOv8 工业表面六类微小缺陷(龟裂、夹杂、点蚀等)检测平台,基于 NEU-DET 钢材数据集,支持单张/批量检测、在线训练与 PDF 报告导出,适合计算机视觉质检类毕业设计。

PythonHTMLSQLite
4.88
微小金属碎屑识别系统设计与实现
高级·新上架

微小金属碎屑识别系统设计与实现

MobileNetV2 对 NEU-CLS 六类金属表面缺陷图像分类识别平台,输出置信度与 Top 概率分布,含在线训练与多维度统计图表,适合轻量级深度学习质检类毕业设计。

PythonHTMLSQLite
4.88