310 lines
11 KiB
Markdown
310 lines
11 KiB
Markdown
# 益选-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/11,Linux,macOS
|
||
- **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订单处理系统
|
||
作者:欢欢欢
|
||
|
||
本项目采用模块化设计,遵循最佳实践,致力于为用户提供高效、准确的采购单自动化处理解决方案。
|