智能古籍文字识别与数字化工具
专为古籍、书法、竖排文本优化的OCR解决方案
链接: https://yun.139.com/shareweb/#/w/i/2tyafRyqjX6e4 提取码:tdej 复制内容打开中国移动云盘手机APP,操作更方便哦
- 竖排文字智能识别 - 针对古籍从右至左、从上至下的排版特点深度优化
- 古文顺序复制 - 一键按传统阅读顺序复制识别结果,保留古籍原有的阅读体验
- 多字体支持 - 完美识别楷体、宋体、隶书等传统书法字体
- 图片格式: PNG, JPG, JPEG, BMP
- 文档格式: PDF(自动分页识别)
- 批量处理: 支持多文件同时上传,一键批量识别
- 在线编辑 - 识别结果支持实时修改与校对
- 多视图预览 - 原图 / 标注图 / 纯文字图三视图切换
- 历史记录 - 自动保存识别记录,随时回溯查看
- JSON导出 - 结构化数据导出,便于二次开发
Python 3.10+
CUDA 12.0+ (GPU加速可选)# 1. 克隆仓库
git clone https://github.com/yourusername/moread.git
cd moread
# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 启动应用
python app.py启动后自动打开浏览器,或手动访问:
http://127.0.0.1:5005
- 点击上传区域或拖拽文件至页面
- 支持图片(PNG/JPG/BMP)和 PDF 文档
- 等待识别完成,查看结果
- 选择多个文件(按住 Ctrl/Cmd 可多选)
- 系统自动依次处理,显示进度
- 完成后可逐个查看或批量导出
识别完成后,点击「复制古文顺序」按钮,系统将按照传统竖排阅读顺序(从右到左、从上到下)整理并复制文字内容。
- 点击识别结果中的任意文字块
- 直接修改识别错误的文字
- 修改后自动重新生成预览图
┌─────────────────────────────────────────────────┐
│ 前端层 │
│ HTML5 + JavaScript │
└───────────────────┬─────────────────────────────┘
│
┌───────────────────▼─────────────────────────────┐
│ 服务层 │
│ Flask Web Server │
│ RESTful API + 静态文件服务 │
└───────────────────┬─────────────────────────────┘
│
┌───────────────────▼─────────────────────────────┐
│ OCR引擎层 │
│ PaddleOCR PP-OCRv5 │
│ 文字检测 (Det) + 文字识别 (Rec) │
│ 支持 GPU 加速 │
└───────────────────┬─────────────────────────────┘
│
┌───────────────────▼─────────────────────────────┐
│ 文件处理层 │
│ PDF转图片 · 图像预处理 · 结果生成 │
└─────────────────────────────────────────────────┘
moread/
├── app.py # Flask 应用主入口
├── ocr_engine.py # OCR 核心引擎
├── pdf_utils.py # PDF 处理工具
├── requirements.txt # Python 依赖
├── models/ # OCR 模型文件
│ ├── PP-OCRv5_server_det/ # 文字检测模型
│ └── PP-OCRv5_server_rec/ # 文字识别模型
├── static/ # 静态资源
│ ├── css/
│ └── js/
├── templates/ # HTML 模板
│ └── index.html
├── uploads/ # 上传文件存储
├── outputs/ # 识别结果存储
└── fonts/ # 字体文件
默认启用 CUDA 加速,如需使用 CPU 模式,请修改 requirements.txt:
- paddlepaddle-gpu==3.2.0
+ paddlepaddle==3.2.0编辑 app.py 修改服务端口:
app.run(host='0.0.0.0', port=5005) # 修改端口号app.config['MAX_CONTENT_LENGTH'] = 50 * 1024 * 1024 # 50MB| 类别 | 依赖项 | 版本 |
|---|---|---|
| Web框架 | Flask | 3.1.3 |
| Werkzeug | 3.1.6 | |
| OCR核心 | paddleocr | 3.2.0 |
| paddlepaddle-gpu | 3.2.0 | |
| paddlex | 3.2.1 | |
| 图像处理 | opencv-contrib-python | 4.10.0.84 |
| Pillow | 12.1.1 | |
| pdf2image | 1.17.0 | |
| pypdfium2 | 5.5.0 | |
| imagesize | 1.4.1 | |
| PDF处理 | shapely | 2.1.2 |
| pyclipper | 1.4.0 |
POST /upload
Content-Type: multipart/form-data
files: <file>响应:
{
"session_id": "uuid",
"results": [{
"original": "/uploads/...",
"result": "/outputs/...",
"text_only": "/outputs/...",
"page": "filename",
"texts": [{"text": "", "box": [], "score": 0.99}]
}]
}GET /api/historyPUT /api/history/{session_id}/texts
Content-Type: application/json
{
"page": "filename",
"index": 0,
"text": "修正后的文字"
}Q: PDF 识别失败怎么办?
确保已安装 PDF 处理依赖:
pip install pdf2image pypdfium2Q: GPU 识别速度慢?
首次运行需要加载模型到显存,后续识别会加速。确保 CUDA 和 cuDNN 正确安装。
欢迎提交 Issue 和 Pull Request!
# 1. Fork 本仓库
# 2. 创建特性分支
git checkout -b feature/AmazingFeature
# 3. 提交更改
git commit -m 'Add some AmazingFeature'
# 4. 推送分支
git push origin feature/AmazingFeature
# 5. 打开 Pull Request本项目基于 MIT License 开源。
墨读 - 让古籍数字化更简单
Made with ❤️ for ancient book digitization