191 lines
5.9 KiB
Markdown
191 lines
5.9 KiB
Markdown
# 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或联系开发者。 |