发票OCR文字识别

技术

picture.image

向AI转型的程序员都关注了这个号 👇👇👇

机器学习AI算法工程 公众号:datayx

此项目用于对中国购车发票进行内容识别,目前完成的是身份证,vin,发动机号,价格的识别 提供了展示的demo页,以及提供了传入文件,路径,base64码的多种方式调用的api,返回识别出来的json数据。

项目代码 获取方式:

关注微信公众号 datayx 然后回复 发票识别 即可获取。

AI项目体验地址 https://loveai.tech

Quick Start

  • 首先找一张发票的图片:
  • 百度搜索出来的图片:

https://timgsa.baidu.com/timg?image&quality=80&size=b9999\_10000&sec=1498711297986&di=5684845f9c4904b92523a608ff2ed370&imgtype=0&src=http%3A%2F%2Fclub2.autoimg.cn%2Falbum%2Fg13%2FM0F%2FA4%2FA3%2Fuserphotos%2F2015%2F10%2F10%2F21%2F500\_wKgH1FYZE2mALP-JAAJQY1pp49o236.jpg

  • 找到原图地址:

http://club2.autoimg.cn/album/g13/M0F/A4/A3/userphotos/2015/10/10/21/500\_wKgH1FYZE2mALP-JAAJQY1pp49o236.jpg

  • 启动识别服务(web接口服务)

            
    ./api_invoice/main.py  

        

开启的是8888端口,暂时未做配置化,可以直接在main.py中修改

  • 访问demo页
  • 访问接口:
代码执行过程说明
  • 使用tornado启动web服务,json格式化数据
  • 首先对图片做处理,opencv,PIL,找到需要识别的局部图片并截取出来
  • 使用darknet的yolo定位的方法,标识一批样本中关键数据的局部图片的位置
  • 然后进行训练
  • 训练完成后会得出一个权重文件
  • 改造darknet的代码
  • 为了能够更快的处理,在darknet里面启动了一个web服务
  • 可以传入图片地址(服务器绝对地址,无后缀)
  • 识别后返回图片中关键局部位置的坐标点
  • 再使用坐标点将图片的关键部位切割出来
  • 效果还好,主要是识别速度稍慢,作为第二方案,还有优化余地,甚至可以替代第一方案
  • 使用二值化加上轮廓等方法找到图片中最大方格,然后找到四个点
  • 对四个点对应的四边形进行矫正,变成正方形,使得字体不会是歪的
  • 检查长宽,处理横竖图片问题,这里还可以改进优化
  • 缩放到固定大小
  • 生成一张翻转的图片,因为暂时无法确定是否倒过来的,暂时做识别两次的处理,可以优化
  • 然后按照比例切出对应识别区域
  • 最后把这个局部的图片切割出来
  • 缺点是部分图片的方格不完整,图片打印的比较歪,明暗度差异的问题会导致识别准确率下降
  • 图像处理方式
  • 深度学习图片定位方式
  • 图片定位切割完成之后,做正向反向识别 - 首先使用机器识别 - 先将图片再次切割,根据灰度值和波峰波谷算法将每个字符切割开 - 使用训练好的但字符模型镜像识别,有三个不同的模型,依次进行识别 - 其次使用tesseract识别 - 原图识别 - 灰度图识别 - 默认阈值二值化识别 - 批量默认阈值二值化识别 - 遍历阈值二值化识别
  • 识别结果校验
  • 如果不通过校验,则继续往下走
识别率校验
  • 将图片网络地址放到img.txt中,文件放到data/invoice目录下
  • 执行ipi_invoice/test.py,将文件导入到数据库
  • 然后删除img.txt文件
  • 继续执行执行ipi_invoice/test.py,将会逐个识别并将结果记录到数据库,
  • 通过sql可以判断出来识别率
单图识别训练:
  • 模型训练
  • 为尽可能提高训练模型识别率,将图片做相应处理,剔除噪声较多的图片,尤其是每一类别有相同噪声的图片。

  • 已经处理好的训练样本图片见压缩包:/dataset/numberAndX.tar.gz,/dataset/numberAndUpper.tar.gz,解压缩到自定义目录

  • 修改/train目录下相应的模型训练文件,生成对应训练模型,已有模型在目录/trainmodel/下

  • 修改/train/keras_predict.py中需要识别的的图片路径或目录,使用已有模型识别图片类型。

  • 训练出的模型包括:识别10个数字类别模型;用于身份证识别的 识别"数字+X" 11个类别的模型;识别"大写字母+数字" 26个类别的模型。

  • 训练样本处理的目录为/creatTrainDataSet, 模型训练的目录为 /train/ -准备图片:本项目将发票系统中的数字,字母图片切割出来,转换成统一的28*28图片


阅读过本文的人还看了以下文章:

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

搜索公众号添加: datayx

picture.image

长按图片,识别二维码,点关注


机器学习算法资源社群

不断上传电子版PDF资料

技术问题求解

QQ群号: 333972581

picture.image

长按图片,识别二维码


海淘美妆

picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
融合开放,新一代边缘云网络平台 | 第 11 期边缘云主题Meetup
《融合开放,新一代边缘云网络平台 》李冰|火山引擎边缘云网络产品负责人
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论