# OCR订单处理系统 - 项目结构优化方案

根据对v1目录项目的分析，提出以下项目结构优化方案。本方案旨在提高代码的可维护性、可扩展性和可读性。

## 主要优化目标

1. **模块化设计**：将功能拆分为独立模块，降低耦合度
2. **统一配置管理**：简化配置处理，避免重复代码
3. **标准化日志系统**：统一日志管理，便于调试和问题追踪
4. **清晰的项目结构**：采用现代Python项目结构
5. **规范化开发流程**：添加单元测试，代码质量检查

## 项目新结构

```
orc-order-v2/             # 项目根目录
│
├── app/                  # 应用主目录
│   ├── __init__.py       # 包初始化
│   ├── config/           # 配置目录
│   │   ├── __init__.py
│   │   ├── settings.py   # 基础配置
│   │   └── defaults.py   # 默认配置值
│   │
│   ├── core/             # 核心功能
│   │   ├── __init__.py
│   │   ├── ocr/          # OCR相关功能
│   │   │   ├── __init__.py
│   │   │   ├── baidu_ocr.py      # 百度OCR基本功能
│   │   │   └── table_ocr.py      # 表格OCR处理
│   │   │
│   │   ├── excel/        # Excel处理相关功能
│   │   │   ├── __init__.py
│   │   │   ├── processor.py      # Excel处理核心
│   │   │   ├── merger.py         # 订单合并功能
│   │   │   └── converter.py      # 单位转换与规格处理
│   │   │
│   │   └── utils/        # 工具函数
│   │       ├── __init__.py
│   │       ├── file_utils.py     # 文件操作工具
│   │       ├── log_utils.py      # 日志工具
│   │       └── string_utils.py   # 字符串处理工具
│   │
│   ├── services/         # 业务服务
│   │   ├── __init__.py
│   │   ├── ocr_service.py        # OCR服务
│   │   └── order_service.py      # 订单处理服务
│   │
│   └── cli/              # 命令行接口
│       ├── __init__.py
│       ├── ocr_cli.py           # OCR命令行工具
│       ├── excel_cli.py         # Excel处理命令行工具
│       └── merge_cli.py         # 订单合并命令行工具
│
├── templates/            # 模板文件
│   └── 银豹-采购单模板.xls       # 订单模板
│
├── data/                 # 数据目录
│   ├── input/            # 输入文件
│   ├── output/           # 输出文件
│   └── temp/             # 临时文件
│
├── logs/                 # 日志目录
│
├── tests/                # 测试目录
│   ├── __init__.py
│   ├── test_ocr.py
│   ├── test_excel.py
│   └── test_merger.py
│
├── pyproject.toml        # 项目配置
├── setup.py              # 安装配置
├── requirements.txt      # 依赖管理
├── config.ini.example    # 配置示例
├── .gitignore            # Git忽略文件
├── README.md             # 项目说明
└── run.py                # 主入口脚本
```

## 功能优化

### 1. 配置管理优化

创建统一的配置管理系统，避免多个模块各自实现配置处理：

```python
# app/config/settings.py
import os
import configparser
from typing import Dict, List, Any

from .defaults import DEFAULT_CONFIG

class ConfigManager:
    """统一配置管理"""
    _instance = None
    
    def __new__(cls, config_file=None):
        if cls._instance is None:
            cls._instance = super(ConfigManager, cls).__new__(cls)
            cls._instance._init(config_file)
        return cls._instance
    
    def _init(self, config_file):
        self.config_file = config_file or 'config.ini'
        self.config = configparser.ConfigParser()
        self.load_config()
        
    def load_config(self):
        # 配置加载实现...
```

### 2. 日志系统优化

创建统一的日志管理系统：

```python
# app/core/utils/log_utils.py
import os
import sys
import logging
from datetime import datetime
from typing import Optional

def setup_logger(name: str, log_file: Optional[str] = None, level=logging.INFO):
    """配置并返回日志记录器"""
    # 日志配置实现...
```

### 3. 核心业务逻辑优化

#### OCR处理优化

将百度OCR API调用与业务逻辑分离：

```python
# app/core/ocr/baidu_ocr.py
class BaiduOCRClient:
    """百度OCR API客户端"""
    # API调用实现...

# app/services/ocr_service.py
class OCRService:
    """OCR处理服务"""
    # 业务逻辑实现...
```

#### Excel处理优化

将Excel处理逻辑模块化：

```python
# app/core/excel/processor.py
class ExcelProcessor:
    """Excel处理核心"""
    # Excel处理实现...

# app/core/excel/converter.py
class UnitConverter:
    """单位转换处理"""
    # 单位转换实现...
```

### 4. 命令行接口优化

使用标准的命令行接口设计：

```python
# app/cli/ocr_cli.py
import argparse
import sys
from app.services.ocr_service import OCRService

def create_parser():
    """创建命令行参数解析器"""
    # 参数配置实现...

def main():
    """OCR处理命令行入口"""
    # 命令实现...

if __name__ == "__main__":
    main()
```

## 代码优化方向

1. **类型提示**：使用Python类型注解，提高代码可读性
2. **异常处理**：优化异常处理流程，便于调试
3. **代码复用**：减少重复代码，提取公共功能
4. **单元测试**：为核心功能编写测试用例

## 迁移路径

1. 创建新的项目结构
2. 迁移配置管理模块
3. 迁移日志系统
4. 迁移OCR核心功能
5. 迁移Excel处理功能
6. 迁移命令行接口
7. 编写单元测试
8. 完善文档

## 后续优化建议

1. **Web界面**：考虑添加简单的Web界面便于操作
2. **多OCR引擎支持**：增加更多OCR引擎选择
3. **进度报告**：添加处理进度报告功能
4. **并行处理优化**：改进并行处理机制，提高性能 