11 KiB
11 KiB
益选-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. 环境准备
# 确保已安装Python 3.8+
python --version
# 安装项目依赖
pip install -r requirements.txt
2. 配置百度OCR API
- 注册百度智能云账号
- 创建OCR应用,获取API Key和Secret Key
- 在config.ini文件中配置API密钥:
[API]
api_key = 你的API密钥
secret_key = 你的密钥
3. 配置文件设置
编辑config.ini文件,设置相关路径和参数:
[Paths]
input_folder = data/input
output_folder = data/output
temp_folder = data/temp
[Performance]
max_workers = 4
batch_size = 5
skip_existing = true
运行配置
启动方式
# 方式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中设置批量处理参数:
[Performance]
batch_size = 5 # 每批处理的文件数量
max_workers = 4 # 最大并发线程数
skip_existing = true # 跳过已处理的文件
条码映射配置
编辑config/barcode_mappings.json文件,设置条码映射规则:
{
"原条码1": "目标条码1",
"原条码2": "目标条码2"
}
模板配置
在templates目录中放置自定义的采购单模板文件,系统会自动识别并使用。
故障排除
常见问题
- OCR识别失败:检查图片清晰度和格式
- 网络连接失败:检查API密钥和网络设置
- 文件权限错误:确保有读写权限
- 内存不足:减少批量处理的大小
日志查看
查看logs目录下的日志文件,获取详细的错误信息和处理过程。
最佳实践
图片质量
- 使用高分辨率扫描或拍照
- 确保图片清晰,无反光和阴影
- 保持采购单平整,避免折叠
处理效率
- 合理设置批量处理大小
- 使用多线程处理提高效率
- 定期清理临时文件
数据管理
- 定期备份重要的采购单数据
- 建立规范的文件命名规则
- 及时清理已处理的文件
项目维护
版本管理
- 使用Git进行版本控制
- 定期更新CHANGELOG.md文件
- 维护版本发布记录
依赖管理
- 定期更新依赖库版本
- 测试新版本的兼容性
- 维护requirements.txt文件
文档维护
- 保持文档的及时更新
- 根据用户反馈完善文档
- 提供多语言支持
版权信息
© 2025 益选-OCR订单处理系统 作者:欢欢欢
本项目采用模块化设计,遵循最佳实践,致力于为用户提供高效、准确的采购单自动化处理解决方案。