国税增值税发票验证码自动识别

代码使用:https://blog.csdn.net/okfu_DL/article/details/90379583

小白入手,代码使用上文大佬博客中给出的链接,学习过程中遇到了一些问题,进行记录。

第一步:运行代码中产生的问题

1、环境问题:Cuda,Cudnn,tensorflow,keras版本对应关系。本文采用cuda9.0,cudnn7,tensorflow1.12.0,keras2.2.4

2、selenium获取不到验证码问题:尝试了网上各种突破网站对selenium的屏蔽,虽然加起来也没几种方法。。。

 

第二步:采用flask的问题

1、flask无法加载模型:代码本地可以运行,一启动服务,就报错。通过单步调试,发现启动服务后,在模型加载语句出错,网上很多方法进行尝试,比如run开启debug模型,可对我这边统统没有用。最后发现将flask版本降低。问题全部消失。

 

第三步:自动生成样本,进行数据转化

1、字符数对应不上:大佬给的两份代码,字符数据集对应不上,一个是3536个,一个是1287个。自己注意修改,要不然对应不上,自然会出错。

2、内存不够:生成100万数据,直接转化,16g内存分分钟爆炸。只能10万,10万来了。训练就得小改了。

 

第四步:进行训练

1、训练无法调用GPU:加上语句os.environ["CUDA_VISIBLE_DEVICES"] = "0",依旧没得解决。最后还是版本对应问题。请回看第一步。

2、 内存有限,多个文件训练:10个文件依次训练,在train.py文件中,for...epoch和for...step两个for循环中间再加一个for...filelist,step训练完一个文件后,再load下一个文件名。

 

第五步:训练精度迟迟不下降

1、字符loss降到8左右不再下降:字符和颜色的收敛方向冲突了,没得办法。大佬建议下,两者不再共享卷积层。同时为了节省GPU资源,对快速收敛的验收loss进行阈值设置。

2、经过一天1的训练。在验证集上,颜色loss可以到达99%,字符loss可以到达95%

 

第六步:真实数据精度感人

1、训练好的模型,直接在真实标注的一万张图片上进行测试,发现字符精度只有5%左右,颜色精度在93%。

2、采用2万张带有汉字的真实标注图片,加上通道置换,训练后,对接官网实测,精度可以达到70%左右。当然,和隔壁大佬的98%,完全不在一个数量级上。而且精度变化范围大的原因,主要在于非汉字在官网出现的概率,对汉字效果依然不好,毕竟样本太少。但是,依旧很开心,在各路大佬开源的思路和代码基础上,小白也可以在一段时间内解决问题,很靠谱。

3、继续四处晃荡,四处请教,想办法再提升一下精度。日后再更。

 

第七步:验证码通过后

1、采用selenium就能获取发票数据,哎妈呀,体力活,写了包括普通发票,专票,机动车票的获取。

 

第八步:二维码检测

1、网上找的方法,大多只有调包的二维码识别,对二维码检测的相对较少。关键是直接检测的效果较差,没得办法呀,进行一波二维码的标注呗。哈哈哈,一样,等后续标好,再来更新。

2、数据标好了,训练了一波,效果还能看,速度5ms左右。结果图见下一篇二维码检测的博客链接https://blog.csdn.net/zzhang_12/article/details/107341466

 

第九步:二维码识别

1、调用zbar包进行识别,最好还是利用视频进行。如果采用单张图像检测二维码后进行识别,针对针式打印机的发票照片很有可能识别效果非常差。

 

 

 

 

你可能感兴趣的:(增值税验证码识别,目标检测)