C# OCR识别快递单上的三段码

写这边文章之前查询过大量资料,发现.Net在这方面的资料太少了.决定写出来好让大家交流一下.

之前参考过这边文章,但是觉得识别率不高,并且速度太慢了,我们公司要求是在300ms以内识别出来的,准确度必须要在98%以上...所以他的就不太合适了.只能自己重新做过.

参考了:

基于百度paddle的快递面单三段码识别_全栈攻城狮s的博客-CSDN博客

 

我需要处理的是直线上拍到的照片以及环线(这个拍到的照片质量比较差),所以此教程以直线拍到的照片为主.

第一步:先用paddle进行快递单检测(当然这里的模型需要自己训练).

//初始化PaddleOcr
public static PaddleOcrAll alls = new PaddleOcrAll(model, ocrAction)
{
    AllowRotateDetection = true, /* 允许识别有角度的文字 */
    Enable180Classification = true, /* 允许识别旋转角度大于90度的文字 */
};

 第二步:根据识别到的坐标将快递单裁剪下来,这里为什么要裁剪下来呢.是为了在后面文字识别的时候能提升速度,增加识别率.

第三步:在裁剪下来之后的快递单上再用paddleDetection检测三段码.这里的模型当然也是需要自己的训练.得到三段码后.我们就需要做:文本倾斜矫正

这里有很多方法,比如

霍夫倾斜矫正等方法,具体要看自己要处理的图片是怎样子的.

 参考文章:https://blog.csdn.net/stq054188/article/details/129440927

最后一步.就是使用OCR识别被我们矫正过的文字内容.这一步就比较简单.

最后识别到的结果一般为:

X-XX-XXX XX

到了这一步,我们还要确保识别结果的准确性.所以我们还需要再对识别的结果进行规则的判断,如果判断失败,我们需要回到第三步进行重新检测.

我部署的是Web模式的,除去不完整的快递单外,识别率大概是在98%左右,识别速度在250ms左右.

题外话:

虽然经常上述操作能识别到,但是准确率有点低,因为识别的物体角度有很多不一样的,并且摄像头拍到的快递单有时候会缺一块,所以这里就需要另外一种技术去拟补剩下未识别到的.下编文章再讲.

欢迎大家一起交流:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值