1. 项目概述
这个收据信息提取系统是一个基于YOLOv8目标检测模型的完整解决方案,从数据标注到模型训练再到前端展示的全流程实现。项目最大的亮点在于提供了经过专业标注的收据数据集,以及针对收据识别场景优化的70多个改进点,特别适合需要快速搭建票据识别系统的开发者参考。
我在实际金融OCR项目中发现,收据识别与传统文档识别存在显著差异:收据通常具有非标准版式、模糊打印、折叠痕迹等特点。这个项目提供的方案通过以下创新点解决了这些痛点:
- 针对小票字体优化的数据增强策略
- 适应倾斜拍摄的仿射变换预处理
- 处理热敏纸褪色问题的图像增强模块
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能解析
2.1 数据准备与标注
项目提供的标注数据集包含以下关键特性:
- 覆盖超市小票、餐饮发票、出租车票等12类常见收据
- 每张收据标注了以下关键字段:
| 字段类型 | 标注规范 | 示例 |
|---|---|---|
| 商户名称 | 矩形框+文本转录 | "XX超市" |
| 交易金额 | 数字区域+数值校验 | "¥128.50" |
| 交易日期 | 日期格式标准化 | "2023-08-15" |
| 商品明细 | 多行文本区域 | "可乐×2 薯片×1" |
标注工具采用改进版的LabelImg,增加了针对收据识别的特殊功能:
- 自动检测表格线并生成单元格区域
- 金额字段自动校验(正则表达式匹配)
- 支持模糊文字的人工修正标注
2.2 模型训练优化
基于YOLOv8的70+改进点主要包括三大方向:
1. 骨干网络优化
- 替换部分卷积为动态蛇形卷积(DSConv),提升弯曲文本检测能力
- 引入轻量级SE注意力模块,参数仅增加3%但AP提升1.8
- 使用BiFPN特征金字塔,改善小字体检测
2. 数据增强策略
python复制# 示例增强代码
transform = Compose([
ThermalPaperAug(), # 模拟热敏纸褪色
ReceiptPerspective(), # 透视变换
TextBlur(p=0.3), # 文字模糊
InkBleed() # 油墨扩散
])
3. 后处理优化
- 基于规则的商品明细关联算
