refactor(处理器): 重构通用供应商处理器以支持规则引擎 docs: 更新README与文档说明供应商管理功能 build: 更新打包脚本注入版本信息 test: 添加规则引擎单元测试
3.9 KiB
3.9 KiB
益选 OCR 订单处理系统
概览
- 面向零售与分销场景的采购单处理工具,支持图片 OCR → Excel 规范化 → 模板填充 → 合并导出全流程
- 通过供应商管理与规则引擎,适配不同供应商的格式差异(数量含单位、名称包含规格、缺失列补齐)
- 提供验证匹配面板与单价校验机制,确保输出与既定模板一致且价格合理
核心功能
- 图片/Excel处理:拖拽或选择文件,生成银豹采购单(
templates/银豹-采购单模板.xls) - 供应商管理(系统设置 → 供应商管理):
- 基本信息、文件名匹配、表头行号
- 列映射与表头:预览前30行、表头选行、加载列、智能映射、导入/导出
- 规则与词典:忽略词、单位同义词、包装倍数、名称正则、默认单位/包装;规则预设与步骤预览(原始→逐步→规范化);导出预览CSV
- 模板管理:模板列表与当前索引,批量校验报告
- 验证匹配面板(系统设置 → 验证匹配):
- 选择原始Excel与期望结果,运行当前流程自动对比差异并生成建议(数量拆分、单位归一、名称提规格、金额回推)
- 一键应用建议写回供应商配置与词典,减少手动调整
- 单价校验:生成采购单后按条码比对
templates/商品资料.xlsx的“进货价(必填)”;价差大于1元弹窗提示,小于等于1元不打扰
关键适配(蓉城易购)
- 新模板(如“订单1765440157955.xlsx”):
- 使用第三行作为表头(
header=2) - 关键词选列并重命名到期望字段:商品条码(小条码)、订购数量(小单位)、单价(小单位)、优惠后金额(小单位)、单位
- 单位优先匹配“单位(订购单位)”列,清洗为去空白并将“件”替换为“份”
- 多条码行(逗号/顿号/斜杠/空格分隔)拆分为多行,数量均分并重算金额,单位保持订购单位
- 新模板映射:将“优惠后金额(小单位)”作为单价,“出库小计(元)”作为金额来源
- 使用第三行作为表头(
使用说明
- 运行程序(EXE或源码运行)
- 在主界面:
- 拖拽或选择图片/Excel进行处理
- 系统设置 → 供应商管理:配置供应商、列映射与规则;使用规则预览查看规范化效果
- 系统设置 → 验证匹配:选择原始与期望文件,差异对比;应用建议后重载配置
- 处理成功后,采购单保存到
data/output或data/result,最近文件列表可双击打开查看
构建与打包
- 依赖:Python 3.9+,虚拟环境建议
- 安装打包工具:
pip install pyinstaller - 运行打包脚本:
python build_exe.py- 生成 EXE:
dist/OCR订单处理系统.exe - 生成便携包:
release/OCR订单处理系统.exe(包含templates/银豹-采购单模板.xls与templates/商品资料.xlsx)
- 生成 EXE:
Git 提交建议
- 建议忽略构建目录与运行输出(见
.gitignore) - 保留模板与配置:
templates/银豹-采购单模板.xls、templates/商品资料.xlsx、config/config.ini、config/barcode_mappings.json
常见问题
- 表头识别失败:在供应商管理的“列映射与表头”页预览表头行并选择正确行号
- 数量含单位:启用
split_quantity_unit与normalize_unit规则并配置单位同义词与包装倍数 - 名称中规格:配置
ignore_words与name_patterns,使用步骤预览确认解析效果 - 单价校验未提示:确认
templates/商品资料.xlsx存在且列名包含“进货价”与条码列(商品条码/条码/barcode)
变更记录(近期)
- 新增验证匹配面板与建议修复
- 规则预设与步骤预览(原始→逐步→规范化)
- 单价校验机制(价差>1元提示)
- 蓉城易购新模板适配(第三行表头、单位(订购单位)、多条码拆分、金额映射)