orc-order-v2/README.md
2025-05-02 19:05:42 +08:00

247 lines
7.7 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订单处理系统 v1.0
基于百度OCR API的订单处理系统用于识别采购订单图片并生成Excel采购单。
## 版本信息
- **当前版本**: v1.0
- **发布日期**: 2025-05-02
- **作者**: OCR订单处理团队
## 功能特点
- **图像OCR识别**支持对采购单图片进行OCR识别并生成Excel文件
- **Excel数据处理**读取OCR识别的Excel文件并提取商品信息
- **采购单生成**按照模板格式生成标准采购单Excel文件
- **采购单合并**:支持多个采购单合并为一个总单
- **批量处理**:支持批量处理多张图片
- **图形界面**:提供简洁直观的图形界面,方便操作
- **命令行支持**:支持命令行方式调用,便于自动化处理
## 系统架构
### 目录结构
```
orc-order-v2/
├── app/ # 应用主目录
│ ├── config/ # 配置目录
│ │ ├── settings.py # 配置管理
│ │ └── defaults.py # 默认配置值
│ │
│ ├── core/ # 核心功能
│ │ ├── ocr/ # OCR相关功能
│ │ │ ├── baidu_ocr.py # 百度OCR接口
│ │ │ └── table_ocr.py # 表格OCR处理
│ │ │
│ │ ├── excel/ # Excel处理
│ │ │ ├── processor.py # Excel处理核心
│ │ │ ├── merger.py # 订单合并功能
│ │ │ └── converter.py # 单位转换与规格处理
│ │ │
│ │ └── utils/ # 工具函数
│ │ ├── file_utils.py # 文件处理工具
│ │ └── log_utils.py # 日志工具
│ │
│ └── services/ # 服务层
│ ├── ocr_service.py # OCR服务
│ └── excel_service.py # Excel处理服务
├── data/ # 数据目录
│ ├── input/ # 输入图片目录
│ ├── output/ # 处理结果输出目录
│ ├── temp/ # 临时文件目录
│ └── backup/ # 备份目录
├── logs/ # 日志目录
├── templates/ # 模板目录
│ └── 银豹-采购单模板.xls # Excel模板文件
├── config.ini # 配置文件
├── run.py # 命令行入口脚本
├── 启动器.py # 图形界面启动器
└── README.md # 项目说明文档
```
## 安装与配置
### 环境要求
- Python 3.8+
- 百度OCR API账号及密钥
### 安装依赖
```bash
pip install -r requirements.txt
```
### 配置文件
在`config.ini`中配置以下信息:
```ini
[OCR]
api_key = 你的百度OCR API Key
secret_key = 你的百度OCR Secret Key
[Paths]
input_folder = data/input
output_folder = data/output
template_file = templates/银豹-采购单模板.xls
```
## 使用方法
### 图形界面
运行`启动器.py`启动图形界面:
```bash
python 启动器.py
```
图形界面包括以下功能:
- **处理单个文件**:选择并处理单个图片文件
- **批量处理**处理data/input目录中的所有图片文件
- **合并处理**:合并多个采购单
- **清理文件**清理input和output目录中的文件
- **查看日志**:实时显示处理日志
### 命令行模式
```bash
# 处理单个文件
python run.py --file=image.jpg
# 批量处理目录中的所有文件
python run.py --batch
# 合并采购单
python run.py --merge
```
## 单位处理规则
系统支持多种单位的智能处理,自动识别和转换不同的计量单位。单位处理逻辑如下:
### 标准单位处理
| 单位 | 处理规则 | 示例 |
|------|----------|------|
| 件 | 数量×包装数量<br>单价÷包装数量<br>单位转换为"瓶" | 1件(规格1*12) → 12瓶<br>单价108元/件 → 9元/瓶 |
| 箱 | 数量×包装数量<br>单价÷包装数量<br>单位转换为"瓶" | 2箱(规格1*24) → 48瓶<br>单价120元/箱 → 5元/瓶 |
| 包 | 保持原数量和单位不变 | 3包 → 3包 |
| 其他单位 | 保持原数量和单位不变 | 5瓶 → 5瓶 |
### 提和盒单位特殊处理
系统对"提"和"盒"单位有特殊的处理逻辑:
1. 当规格是三级格式如1*5*12
- 按照件的计算方式处理
- 数量 = 原始数量 × 包装数量
- 单位转换为"瓶"
- 单价 = 原始单价 ÷ 包装数量
示例3提(规格1*5*12) → 36瓶
2. 当规格是二级格式如1*16
- **保持原数量不变**
- **保持原单位不变**
示例3提(规格1*16) → 仍然是3提
### 特殊条码处理
系统支持对特定条码进行特殊处理,这些条码的处理规则会覆盖上述的标准单位处理规则:
1. 特殊条码配置:
```python
special_barcodes = {
'6925019900087': {
'multiplier': 10, # 数量乘以10
'target_unit': '瓶', # 目标单位
'description': '特殊处理:数量*10单位转换为瓶'
}
# 可以添加更多特殊条码的配置
}
```
2. 处理规则:
- 当遇到特殊条码时,无论规格是二级还是三级
- 无论单位是提还是盒还是件
- 都按照特殊条码配置进行处理
- 数量乘以配置的倍数
- 单位转换为配置的目标单位
- 如果有单价,单价除以配置的倍数
## 智能规格推断
当规格信息为空时,系统能从商品名称自动推断规格:
1. 匹配"xx入"格式:
- 如"445水溶C血橙15入纸箱" → 规格推断为 1*15
2. 匹配直接包含规格的格式:
- 如"500-东方树叶-绿茶1*15-纸箱装" → 规格推断为 1*15
3. 匹配容量格式:
- 如"12.9L桶装水" → 规格推断为 12.9L*1
4. 其他商品命名模式:
- 如"900树叶茉莉花茶12入纸箱" → 规格推断为 1*12
- 如"500茶π蜜桃乌龙15纸箱" → 规格推断为 1*15
## 注意事项
1. 确保输入文件格式正确支持jpg、png等图片格式
2. 处理结果将输出到data/output目录下
3. 定期清理临时文件和日志文件
4. 及时更新百度OCR API密钥
5. 为避免数据丢失,可使用清理功能前的备份选项
## 错误排查
- **OCR识别失败**检查API密钥是否正确图片是否符合要求
- **Excel处理失败**检查OCR识别结果是否包含必要的列条码、数量、单价等
- **模板填充错误**:确保模板文件存在且格式正确
## 开发说明
如需进行二次开发或扩展功能,请参考以下说明:
1. 核心逻辑位于`app/core`目录
2. 添加新功能建议遵循已有的模块化结构
3. 使用`app/services`目录中的服务类调用核心功能
4. 日志记录已集成到各模块,便于调试
## 许可证
MIT License
## 更新日志
### v1.0 (2025-05-02)
#### 主要功能
- 图像OCR识别支持对采购单图片进行OCR识别并生成Excel文件
- Excel数据处理智能处理Excel文件提取和转换商品信息
- 采购单生成按照模板格式生成标准采购单Excel文件
- 采购单合并:支持多个采购单合并为一个总单
- 图形界面:提供简洁直观的操作界面
- 命令行支持:支持命令行调用,方便自动化处理
#### 技术改进
- 模块化架构重构代码为配置、核心功能、服务和CLI等模块
- 单位智能处理:完善的单位转换规则,支持多种计量单位
- 规格智能推断:从商品名称自动推断规格信息
- 日志管理完善的日志记录系统支持终端和GUI同步显示
- 表头智能识别自动识别Excel中的表头位置兼容多种格式
- 改进用户体验:界面优化,批量处理支持,实时状态反馈
## 联系方式
如有问题请提交Issue或联系开发者。