orc-order-v2/doc/PROJECT_DOCUMENTATION.md
2025-11-15 18:46:03 +08:00

310 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 益选-OCR订单处理系统 - 项目概述文档
## 项目介绍和目标
益选-OCR订单处理系统是一个基于Python开发的智能化采购单处理解决方案。该项目旨在通过OCR光学字符识别技术自动识别采购单图片中的商品信息并将其转换为结构化的Excel数据实现采购流程的数字化和自动化。
### 项目愿景
- **自动化处理**:减少人工录入工作,提高数据处理效率
- **智能化识别**:准确识别商品条码、名称、规格、数量、单价等关键信息
- **标准化输出**:生成统一格式的采购单,便于后续处理和管理
- **批量处理能力**:支持大批量图片的并发处理
### 核心价值
- 将传统的手工录入模式转变为自动化处理
- 提高采购单处理准确率,减少人为错误
- 大幅缩短采购单处理时间,提升工作效率
- 提供友好的图形界面,降低使用门槛
## 系统功能特性
### 核心功能模块
#### 1. OCR识别模块
- **图片识别**支持JPG、JPEG、PNG、BMP等多种图片格式
- **表格识别**:专门优化表格结构识别,准确提取行列信息
- **文字识别**:高精度中文数字混合识别
- **智能纠错**:自动纠正识别过程中的常见错误
#### 2. Excel处理模块
- **数据提取**从OCR结果中提取商品信息
- **格式转换**:将识别结果转换为标准采购单格式
- **数据清洗**:自动清理和标准化不规范数据
- **模板应用**:支持自定义采购单模板
#### 3. 采购单合并模块
- **多文件合并**:支持合并多个采购单文件
- **商品汇总**:自动汇总相同商品,计算总数量
- **格式统一**:确保合并后的采购单格式一致性
- **冲突处理**:智能处理合并过程中的数据冲突
#### 4. 条码映射模块
- **条码转换**:支持将特定条码映射为其他条码
- **系统适配**:适应不同供应商系统的条码要求
- **映射配置**:提供灵活的条码映射规则配置
#### 5. 规格处理模块
- **单位识别**:智能识别商品计量单位
- **单位转换**:自动进行单位换算(如箱转个)
- **规格解析**:解析复杂的商品规格描述
#### 6. 烟草订单处理模块
- **专用优化**:针对烟草行业订单的特殊格式优化
- **规则适配**:适配烟草公司的特殊要求和格式
### 辅助功能
#### 图形用户界面
- **直观操作**:提供简洁明了的操作界面
- **进度显示**:实时显示处理进度和状态
- **结果预览**:处理完成后显示结果摘要
- **日志查看**:提供详细的处理日志查看功能
#### 配置管理
- **灵活配置**:支持多种处理参数的配置
- **配置文件**使用INI格式配置文件易于修改
- **运行时调整**:支持运行时的参数调整
#### 性能优化
- **批量处理**:支持大批量图片的并发处理
- **断点续传**:支持处理中断后的继续处理
- **内存优化**:优化内存使用,支持大文件处理
## 技术栈和架构
### 核心技术栈
#### 后端技术
- **Python 3.8+**:主要开发语言
- **百度OCR API**提供高精度的OCR识别服务
- **Pandas**:数据处理和分析
- **OpenPyXL**Excel文件读写
- **ConfigParser**:配置文件管理
#### 前端技术
- **Tkinter**Python标准GUI库
- **Threading**:多线程处理,避免界面卡顿
- **ttk**:现代风格的界面组件
#### 工具库
- **Requests**HTTP请求处理
- **Logging**:日志记录和管理
- **JSON**:数据序列化和配置存储
- **Pathlib**:文件路径处理
- **Datetime**:日期时间处理
### 系统架构
```
┌─────────────────────────────────────────────────────────────┐
│ 用户界面层 (UI Layer) │
├─────────────────────────────────────────────────────────────┤
│ 业务逻辑层 (Service Layer) │
│ ┌─────────────┬──────────────┬─────────────┬──────────┐ │
│ │ OCR服务 │ Excel服务 │ 合并服务 │ 配置管理 │ │
│ │ (OCRService)│ (OrderService)│ (MergeService)│ (Config) │ │
│ └─────────────┴──────────────┴─────────────┴──────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 核心处理层 (Core Layer) │
│ ┌─────────────┬──────────────┬─────────────┬──────────┐ │
│ │ OCR处理器 │ Excel处理器 │ 数据清洗 │ 工具函数 │ │
│ │ (OCRProc) │ (ExcelProc) │ (Cleaner) │ (Utils) │ │
│ └─────────────┴──────────────┴─────────────┴──────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 数据访问层 (Data Access Layer) │
│ ┌─────────────┬──────────────┬─────────────┬──────────┐ │
│ │ 文件系统 │ 配置文件 │ 日志文件 │ 模板文件 │ │
│ │ (FileSystem)│ (Config) │ (Logs) │ (Templates)│ │
│ └─────────────┴──────────────┴─────────────┴──────────┘ │
└─────────────────────────────────────────────────────────────┘
```
### 模块划分
#### 应用层 (app/)
- **cli/**:命令行接口模块
- **config/**:配置管理模块
- **core/**:核心业务逻辑模块
- **services/**:服务层模块
#### 核心层 (app/core/)
- **ocr/**OCR识别相关功能
- **excel/**Excel处理相关功能
- **utils/**:工具函数和辅助功能
#### 数据层
- **data/**:数据文件存储目录
- **templates/**:模板文件存储目录
- **logs/**:日志文件存储目录
## 安装配置说明
### 系统要求
#### 软件要求
- **操作系统**Windows 7/8/10/11LinuxmacOS
- **Python版本**Python 3.8 或更高版本
- **依赖库**详见requirements.txt文件
#### 硬件要求
- **CPU**:双核处理器或以上
- **内存**4GB RAM或以上
- **存储**至少1GB可用磁盘空间
- **网络**需要网络连接用于OCR API调用
### 安装步骤
#### 1. 环境准备
```bash
# 确保已安装Python 3.8+
python --version
# 安装项目依赖
pip install -r requirements.txt
```
#### 2. 配置百度OCR API
1. 注册百度智能云账号
2. 创建OCR应用获取API Key和Secret Key
3. 在config.ini文件中配置API密钥
```ini
[API]
api_key = 你的API密钥
secret_key = 你的密钥
```
#### 3. 配置文件设置
编辑config.ini文件设置相关路径和参数
```ini
[Paths]
input_folder = data/input
output_folder = data/output
temp_folder = data/temp
[Performance]
max_workers = 4
batch_size = 5
skip_existing = true
```
### 运行配置
#### 启动方式
```bash
# 方式1直接运行启动器
python 启动器.py
# 方式2运行主程序
python run.py
```
#### 可执行文件
项目提供编译好的可执行文件:
- **OCR订单处理系统.exe**:主程序可执行文件
- **release/**目录:完整的发布版本
## 使用指南
### 基本操作流程
#### 1. 准备图片文件
- 将需要识别的采购单图片放入`data/input`目录
- 支持的图片格式JPG、JPEG、PNG、BMP
- 建议图片清晰度在300DPI以上
#### 2. 启动系统
- 运行`启动器.py`或`OCR订单处理系统.exe`
- 系统会自动加载配置并初始化
#### 3. 选择功能
主界面提供以下功能选项:
- **OCR识别**:识别图片中的商品信息
- **Excel处理**将OCR结果处理成标准采购单
- **采购单合并**:合并多个采购单文件
- **完整流程**执行OCR识别+Excel处理+合并的完整流程
#### 4. 执行处理
- 点击相应功能按钮
- 系统会显示处理进度和状态
- 处理完成后显示结果预览
#### 5. 查看结果
- 处理结果保存在`data/output`目录
- 可以查看生成的Excel采购单文件
- 通过日志查看详细处理过程
### 高级功能使用
#### 批量处理配置
在config.ini中设置批量处理参数
```ini
[Performance]
batch_size = 5 # 每批处理的文件数量
max_workers = 4 # 最大并发线程数
skip_existing = true # 跳过已处理的文件
```
#### 条码映射配置
编辑`config/barcode_mappings.json`文件,设置条码映射规则:
```json
{
"原条码1": "目标条码1",
"原条码2": "目标条码2"
}
```
#### 模板配置
在`templates`目录中放置自定义的采购单模板文件,系统会自动识别并使用。
### 故障排除
#### 常见问题
1. **OCR识别失败**:检查图片清晰度和格式
2. **网络连接失败**检查API密钥和网络设置
3. **文件权限错误**:确保有读写权限
4. **内存不足**:减少批量处理的大小
#### 日志查看
查看`logs`目录下的日志文件,获取详细的错误信息和处理过程。
### 最佳实践
#### 图片质量
- 使用高分辨率扫描或拍照
- 确保图片清晰,无反光和阴影
- 保持采购单平整,避免折叠
#### 处理效率
- 合理设置批量处理大小
- 使用多线程处理提高效率
- 定期清理临时文件
#### 数据管理
- 定期备份重要的采购单数据
- 建立规范的文件命名规则
- 及时清理已处理的文件
## 项目维护
### 版本管理
- 使用Git进行版本控制
- 定期更新CHANGELOG.md文件
- 维护版本发布记录
### 依赖管理
- 定期更新依赖库版本
- 测试新版本的兼容性
- 维护requirements.txt文件
### 文档维护
- 保持文档的及时更新
- 根据用户反馈完善文档
- 提供多语言支持
## 版权信息
© 2025 益选-OCR订单处理系统
作者:欢欢欢
本项目采用模块化设计,遵循最佳实践,致力于为用户提供高效、准确的采购单自动化处理解决方案。