orc-order-v2/README.md

191 lines
5.9 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订单处理系统 v2.0
基于百度OCR API的订单处理系统用于识别采购订单图片并生成Excel采购单。
## 功能特点
- **图像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 # 日志工具
│ │ └── string_utils.py # 字符串处理工具
│ │
│ └── services/ # 业务服务
│ ├── ocr_service.py # OCR服务
│ └── order_service.py # 订单处理服务
├── data/ # 数据目录
│ ├── input/ # 输入文件
│ ├── output/ # 输出文件
│ └── temp/ # 临时文件
├── logs/ # 日志目录
├── templates/ # 模板文件
│ └── 银豹-采购单模板.xls # 采购单模板
├── 启动器.py # 图形界面启动器
├── run.py # 命令行入口
├── config.ini # 配置文件
└── requirements.txt # 依赖包列表
```
### 主要模块说明
- **配置模块**:统一管理系统配置,支持默认值和配置文件读取
- **OCR模块**调用百度OCR API进行表格识别生成Excel文件
- **Excel处理模块**读取OCR生成的Excel文件提取商品信息
- **单位转换模块**:处理商品规格和单位转换
- **订单合并模块**:合并多个采购单为一个总单
- **文件工具模块**:处理文件读写、路径管理等
- **启动器**:提供图形界面操作
## 使用方法
### 环境准备
1. 安装Python 3.6+
2. 安装依赖包:
```
pip install -r requirements.txt
```
3. 配置百度OCR API密钥
- 在`config.ini`中填写您的API密钥和Secret密钥
### 图形界面使用
1. 运行启动器:
```
python 启动器.py
```
2. 使用界面上的功能按钮进行操作:
- **OCR图像识别**:批量处理`data/input`目录下的图片
- **处理单个图片**:选择并处理单个图片
- **处理Excel文件**处理OCR识别后的Excel文件生成采购单
- **合并采购单**:合并所有生成的采购单
- **完整处理流程**:按顺序执行所有处理步骤
- **整理项目文件**:整理文件到规范目录结构
### 命令行使用
系统提供命令行方式调用,便于集成到自动化流程中:
```bash
# OCR识别
python run.py ocr [--input 图片路径] [--batch]
# Excel处理
python run.py excel [--input Excel文件路径]
# 订单合并
python run.py merge [--input 采购单文件路径列表]
# 完整流程
python run.py pipeline
```
## 文件处理流程
1. **OCR识别处理**
- 读取`data/input`目录下的图片文件
- 调用百度OCR API进行表格识别
- 保存识别结果为Excel文件到`data/output`目录
2. **Excel处理**
- 读取OCR识别生成的Excel文件
- 提取商品信息(条码、名称、规格、单价、数量等)
- 按照采购单模板格式生成标准采购单Excel文件
- 输出文件命名为"采购单_原文件名.xls"
3. **采购单合并**
- 读取所有采购单Excel文件
- 合并相同商品的数量
- 生成总采购单
## 配置说明
系统配置文件`config.ini`包含以下主要配置:
```ini
[API]
api_key = 您的百度API Key
secret_key = 您的百度Secret Key
timeout = 30
max_retries = 3
retry_delay = 2
api_url = https://aip.baidubce.com/rest/2.0/ocr/v1/table
[Paths]
input_folder = data/input
output_folder = data/output
temp_folder = data/temp
[Performance]
max_workers = 4
batch_size = 5
skip_existing = true
[File]
allowed_extensions = .jpg,.jpeg,.png,.bmp
excel_extension = .xlsx
max_file_size_mb = 4
```
## 注意事项
1. 系统依赖百度OCR API使用前请确保已配置正确的API密钥
2. 图片质量会影响OCR识别结果建议使用清晰的原始图片
3. 处理大量图片时可能会受到API调用频率限制
4. 所有处理好的文件会保存在`data/output`目录中
## 错误排查
- **OCR识别失败**检查API密钥是否正确图片是否符合要求
- **Excel处理失败**检查OCR识别结果是否包含必要的列条码、数量、单价等
- **模板填充错误**:确保模板文件存在且格式正确
## 开发说明
如需进行二次开发或扩展功能,请参考以下说明:
1. 核心逻辑位于`app/core`目录
2. 添加新功能建议遵循已有的模块化结构
3. 使用`app/services`目录中的服务类调用核心功能
4. 日志记录已集成到各模块,便于调试
## 许可证
MIT License
## 联系方式
如有问题请提交Issue或联系开发者。