# 益选-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订单处理系统
作者：欢欢欢

本项目采用模块化设计，遵循最佳实践，致力于为用户提供高效、准确的采购单自动化处理解决方案。
