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

发布时间:2026/11/5 5:32:56

基于机器学习的古籍文字识别与断句校正系统 基于机器学习的古籍文字识别与断句校正系统1. 项目定位本仓库实现一套面向古籍页面图像的端到端可复现流水线从上传图卷、版面归一与预处理、深度学习文字识别OCR、文本整理、勘校与异体处理、句读标注深度学习模型与规则后处理到多格式导出与微调 / 标注数据闭环。系统以任务卷宗为粒度管理全流程状态登录用户仅能访问本人任务管理员可查看全部便于课题演示、文章实验与多用户隔离。模型与调优原则本课题约定不自研 backbone 网络识文、句读均依托第三方开源/预训练模型PaddleOCR、HuggingFace 上的 BERT 类 TokenClassification 等做推理。线上系统默认只做加载权重 前向推理不在 Web 内嵌 GPU 训练作业。后期调优句读支持离线手动微调——由接口导出业务数据或管理员标注 JSONL在独立 Python 环境中用仓库脚本继续训练产出新目录后通过MODU_SEGMENT_MODEL_DIR切换部署。技术形态Vue 3 单页应用调用Flask REST APIJWT 鉴权数据落SQLite与本地uploads//outputs/PaddleOCR、句读 Transformers 等按依赖与权重可选启用缺失时走明确降级例如无 Paddle 时可手改勘校正文继续后续步骤。2. 功能总览2.1 用户与权限能力说明注册 / 登录POST /api/v1/auth/register、/login返回 JWTBearer当前用户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-textUnicode 规范化、空白/换行规整等TextPreprocessService人工修订PUT .../preprocess-text保存preprocessed_text勘校输入优先级自动勘校优先使用preprocessed_text其次raw_text2.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/finetuneNDJSON参数limit、only_segmented标注数据导出管理员GET /api/v1/admin/annotations/exportJSONL2.9 管理员能力能力说明模型效果评估POST /api/v1/admin/eval/run、GET .../eval/latest结合data/eval_gold.jsonl与任务快照计算指标断句数据集标注样本 CRUD、POST .../annotations/from-task/:id从任务导入、筛选与导出 JSONL导航入口顶栏「模型评估」「数据集标注」仅is_admin2.10 前端交互六步流水线步骤路由说明① 上传图片/upload拖拽/选择 JPG、PNG② 识别文字/recognizePaddle OCR低置信可视化③ 整理文本/preprocess需已有识文结果或测试种子数据④ 改正文字/correct自动/人工勘校⑤ 加标点/segment自动句读 人工修订⑥ 导出/exportTXT / Word / JSON管理员另可见「全部任务汇总」另卷宗/tasks、登录/注册、侧栏步骤导航StepSidebar。界面文案为简体中文古籍正文可为繁体。2.11 刻意不纳入当前版本可作文章展望Web 内一键 GPU 训练 / 自动调度微调句读见scripts/finetune_token_classification.pyOCR 领域重训练使用飞桨官方工具链再改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、本地目录users、tasks、annotation_samples、eval_report等数据库升级SQLite 无自动迁移脚本app/__init__.py对旧库补列如user_id、preprocessed_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:e2e5. HTTP API 契约摘要统一前缀/api/v1除注册/登录外业务接口需请求头Authorization: Bearer token。5.1 认证方法路径说明POST/auth/register注册普通用户不可占用admin用户名POST/auth/login登录GET/auth/me当前用户需 JWTPUT/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?formattxt|docx|json导出附件POST/tasks/:id/feedbacks用户反馈5.3 数据集与管理员须 JWT 管理员方法路径说明GET/datasets/finetune任务快照 NDJSONlimit、only_segmentedPOST/admin/eval/run执行评估body 可选scope: all|mineGET/admin/eval/latest最近一次评估报告GET/POST/admin/annotations列表 / 新建样本POST/admin/annotations/from-task/:task_id从任务导入GET/PUT/DELETE/admin/annotations/:id单条 CRUDGET/admin/annotations/export标注 JSONLGET/admin/users用户列表PUT/admin/users/:id设置is_admin内置 admin 不可降权5.4 静态资源GET /uploads/path预处理预览图等。字段与请求体细节以《项目设计方案》及app/api/v1/*.py源码为准。6. 配置与环境变量后端变量作用MODU_PORTHTTP 端口默认与前端代理一致如 8800MODU_SECRET_KEYFlask 密钥生产务必覆盖MODU_JWT_SECRETJWT 签名密钥默认同SECRET_KEYMODU_JWT_EXPIRE_HOURSToken 有效期默认 168 小时MODU_ADMIN_USERNAME内置管理员用户名默认adminMODU_ADMIN_PASSWORD内置管理员初始密码仅首次创建账号时写入MODU_DATABASE_URLSQLAlchemy 连接串MODU_SEGMENT_MODEL_DIR句读模型目录MODU_FINETUNE_EXPORT_MAX微调导出单次上限默认 5000MODU_UPLOAD_MAX_EDGE上传压缩最长边像素MODU_UPLOAD_JPEG_QUALITYJPEG 质量MODU_SEGMENT_POSTPROCESS句读后处理开关MODU_POETRY_7_SPLIT七言节奏如2_5MODU_SEGMENT_PUNCT_MODE句读标点风格如AMODU_EVAL_GOLD_PATH评估 gold 文件路径前端VITE_BACKEND_URL如.env.development指向后端基址。7. 自动化测试业务功能以pytestAPI/服务与Playwright浏览器 E2E覆盖不替代Paddle 识文准确率与离线微调脚本的现场验证。7.1 一键自测仓库根目录bashscripts/run_all_tests.sh7.2 分模块# 仅后端约 23 项mock OCR/句读不依赖 Paddlecdmodu-backendbashscripts/run_tests.sh# 仅前端 E2E8 项自动起临时后端 Vitecdmodu-frontendCI1npmrun test:e2e7.3 覆盖范围说明类别已覆盖摘要后端注册/登录/鉴权、任务 CRUD/统计/反馈、全流程 APImock ML、导出三格式、管理员评估与标注、微调 NDJSON前端注册登录、六步页与导出、卷宗删除、管理员页与权限拦截未自动化Paddle 识文效果、20MB 超限/坏图、压测、finetune_*脚本执行详细用例索引见modu-backend/tests/README.md。TESTINGTrue时存在内部接口POST /tasks/:id/__test/seed仅 pytest/E2E 后端生产TESTINGFalse不注册。8. 相关文档与操作指引文档或入口用途项目设计方案.mdAPI 表、路由、数据模型modu-backend/tests/README.md测试命令与功能对照表modu-backend/scripts/README_FINETUNE.md句读微调数据格式与训练命令mac/项目部署手册_macOS.md、windows/项目部署手册_Windows.md环境安装与启动mac/必须执行__模型文件下载步骤.md、windows/…克隆后下载句读权重与 Paddle 缓存mac/手动微调执行步骤.md、windows/…离线微调逐步命令8.1 环境与安装提示摘要推荐Python 3.12创建modu-backend/.venv安装requirements.txtWindows 安装时勾选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脚本为准。
延伸阅读

更多相关文章

2026/11/5 5:32:56

Vue 3.4 子组件标题不更新:保留 prop 的响应式读取

父组件已经切换标题,子组件却一直显示第一次传入的内容,先别急着加 key 强制重建。这篇针对 Vue 3.4 默认编译配置下的 script setup,定位基础类型 prop 被解构后失去后续关联的问题,并给出保留属性访问和 toRef 两种写法。同时说…

2026/11/5 5:32:56

制造可控故障,生成 Core Dump,并用匹配的程序和符号定位问题

制造可控故障,生成 Core Dump,并用匹配的程序和符号定位问题 前几篇已经在 QEMU ARM64 中运行了交叉编译的程序,并使用 Dropbear 完成了密钥登录和 SSH 端口转发。本篇继续练习故障定位:在 guest 中运行一个会主动触发 SIGABRT 的…

2026/11/5 5:27:56

FDE如何从一个陌生行业中,找到10个值得落地的AI场景?

从行业研究、业务流程拆解到场景评估,一套可复用的企业AI机会发现方法论 作者|FDE前线 当AI Agent、RAG、工作流自动化等技术逐渐成熟,企业AI落地的一个重要问题正在发生变化:技术人员已经能够较快地搭建应用原型,但…

2026/11/5 6:23:01

在线表格组件选型指南:从Excel导入到协作编辑的工程实践

从一个在线表格需求说起如果你在团队里待过,大概率遇到过这类需求:"做个页面,把Excel传上来,能看能编辑,最好还能多人同时改。"第一次听到这种需求的人,通常觉得不难——放个表格组件不就行了吗&…

2026/11/5 6:23:01

智能弹窗处理技术在自动化测试中的应用与实践

1. 项目背景与核心价值墨迹天气作为国内头部天气服务应用,其App在功能迭代过程中面临着复杂的测试挑战。特别是在自动化测试场景下,各类系统弹窗、权限请求弹窗、活动推广弹窗成为测试脚本稳定性的主要威胁。传统录制回放式自动化测试在面对这类非预期弹…

2026/11/5 6:23:01

贝叶斯模型:从原理到实践的核心指南

1. 贝叶斯模型的核心直觉贝叶斯模型最迷人的地方在于它完美模拟了人类认知世界的方式——我们总是基于已有经验(先验)来理解新信息(似然),然后不断修正自己的认知(后验)。举个生活中的例子&…

2026/11/5 6:23:01

MaxKB开源企业级智能体平台架构与应用实践

1. 项目背景与里程碑意义MaxKB作为一款开源企业级智能体平台,近期迎来了一个重要里程碑——全网累计下载量突破100万次。这个数字不仅代表了技术社区对产品的认可,更反映了当前企业智能化转型的迫切需求。作为一个长期关注AI落地的从业者,我见…

2026/11/5 6:23:01

Univer开源在线表格实战:高性能渲染、公式计算与协同编辑全解析

近几年接手的项目里,只要需求文档里出现“在线表格”四个字,我第一反应永远是先深吸一口气。原因很简单:看似只是“把 Excel 搬进浏览器”,实际牵扯到渲染性能、公式计算、格式兼容、协同编辑、权限控制一堆问题。Univer 是我在反…

2026/11/5 6:18:01

Archery开源SQL审核平台Docker部署指南

1. Archery项目简介与部署概述Archery是一款开源的SQL审核平台,由国内技术团队开发维护,主要用于企业级数据库管理、SQL审核和慢查询分析。作为一款基于Docker容器化部署的应用,它整合了MySQL、Redis、Inception等组件,为DBA和运维…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑