项目: 扫描图书OCR Agent
环境: Conda ocr (Python 3.12.13)
最后更新: 2026-05-17
- Design.md - 需求文档
- PRD - 产品设计文档 (产品经理用)
- Tech Spec - 实现文档 (程序员用)
- Acceptance Criteria - 验收文档
- 项目目录结构 (
src/ocr_agent/,tests/,examples/) -
pyproject.toml项目配置 - Conda虚拟环境配置 (ocr, Python 3.12)
- PaddleOCR 2.9 + PaddlePaddle 2.6 安装集成
-
BoundingBox- 边界框 -
TextBlock- 文本块 -
FontInfo- 字体信息 -
ElementType/LayoutElement- 版面元素 (含HEADER/FOOTER) -
Page- 页面 -
Document- 文档 -
QualityReport/PageQuality/Region- 质量报告 -
Config- 配置类 (含correction_threshold, checkpoint_interval)
-
preprocessing.py- 图像预处理- 灰度转换
- 倾斜校正 (投影轮廓法)
- 去噪 (fastNlMeansDenoising)
- 对比度增强 (CLAHE)
- 自适应二值化 (Sauvola)
-
ocr.py- OCR封装 (PaddleOCR 2.x)- 懒加载初始化
- 中英文识别
- 结果格式化 (TextBlock)
-
output.py- 输出生成- DOCX生成 (python-docx) - 含标题/段落样式
- JSON导出 - 含完整元数据
- TXT纯文本输出
-
quality.py- 质量评估模块- 页面级质量统计
- 低置信度区域定位
- 改进建议生成
-
correction.py- 自动纠错模块- 中文混淆字纠正
- 英文混淆字纠正
- 置信度阈值控制
-
font.py- 字体检测模块- 笔画宽度估计
- 字体密度分析
- Hu矩特征提取
-
pipeline.py- Pipeline编排器- 单图处理 / 批量处理 / PDF处理
- 自动纠错集成
- 启发式版面分析
- 检查点断点续传
- 质量报告自动生成
-
cli.py- 命令行接口 (click)-
ocr-agent process- 处理命令 -
ocr-agent serve- API服务命令 - 详细日志/静默模式
-
-
api.py- FastAPI服务- POST /api/v1/jobs - 上传处理
- GET /api/v1/jobs/{id} - 查询状态
- GET /api/v1/jobs/{id}/results/{file} - 下载结果
- DELETE /api/v1/jobs/{id} - 删除任务
- GET /api/v1/health - 健康检查
- 后台异步处理
-
tests/test_basic.py- 5个基础测试 -
tests/test_comprehensive.py- 30个综合测试- 数据模型测试
- 预处理模块测试 (7项)
- 质量评估测试 (4项)
- 纠错模块测试 (4项)
- 输出模块测试 (5项)
- Pipeline集成测试 (3项)
- PaddleOCR端到端验证 (真实图像OCR)
- 基于深度学习的版面元素检测 (PP-StructureV2)
- 阅读顺序检测 (多栏布局)
- 表格结构识别 (SLANet)
- 模糊图片修复 (Real-ESRGAN/NAFNet超分辨率)
- 低分辨率图片增强 (150DPI→300DPI)
- 噪点/划痕/水渍修复
- PDF输出 (reportlab)
- EPUB电子书格式
- 样式更精确的DOCX输出
- OCR模块单元测试 (mock PaddleOCR)
- API端点测试
- 性能基准测试
- Docker镜像
- 使用文档
- 示例 notebooks
# 激活环境
conda activate ocr
# 处理单张图片
ocr-agent process /path/to/image.png -o ./output
# 处理PDF
ocr-agent process /path/to/book.pdf -o ./output
# 处理整个目录
ocr-agent process /path/to/images/ -o ./output --format docx --format json
# 启动API服务
ocr-agent serve --port 8000| 类别 | 数量 |
|---|---|
| Python模块 | 12 |
| 代码行数 | ~2200 |
| 测试用例 | 35 |
| API端点 | 5 |
| 文档数 | 4 |