# 益选-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订单处理系统 作者:欢欢欢 本项目采用模块化设计,遵循最佳实践,致力于为用户提供高效、准确的采购单自动化处理解决方案。