OCR目标识别(车辆VIN码识别效果)

9 篇文章 0 订阅
1 篇文章 0 订阅

先抱怨一句,识别真的比检测难很多呀,文字识别可根据待识别的文字特点采用不同的识别方法,一般分为定长文字、不定长文字两大类别。

定长文字:

定长字符识别中比较广泛的几个例子就是:MNIST识别,验证码识别,车牌识别。

MNIST:

MNIST这个感觉实在是没啥说的,拿出一本深度学习入门书籍,可能实战篇就有这个项目,无论什么深度学习框架上网搜,都能搜出一大堆程序。

验证码识别:

验证码这一块,现成的代码也比较多了,文章这一块我参考了https://my.oschina.net/u/876354/blog/3048523,代码这一块我参考了https://github.com/nickliqian/cnn_captcha

车牌识别:

无,虽然现在车牌识别的产品已经很多了,但是网上基本没有开源的项目。我试过搜索一些论文和博客,感觉很多都是让你测效果,如何做出来的,网络结构这一块,没有找到,打开就是我做的车牌多准多准这样。

不定长文字识别:

不定长文字识别是目前OCR识别研究方向的主流,一些论文啥的也比较多,我做的不是这个方向,所以只是简单浏览了一下,看看有没有什么能用的,并没有深入调研,如果研究这个方向的可以参考这篇总结:https://github.com/hwalsuklee/awesome-deep-text-detection-recognition,虽然有一阵没更新了,但是整体还可以。

 

车辆VIN码:

VIN码规则说明:

训练说明:

由于网上没有VIN码的开源数据集,个人使用图像的方法,自己造了10000张数据用于训练,由于数据是假的,所以没有做消融实验,也没有训练太长时间,只是想确认网络结构可以使用。

效果:

上方绿色为模型结果,下方为待测试VIN码。

 

与百度效果对比:

个人:

百度:

 

总结:

基本能够达到百度通用字符识别效果

说明:
代码这一块,我使用pytorch,当前的进度是使用伪造的数据将网络结构初步定了下来,下一步可能会等到有真实数据后,再继续往下进行,欢迎大家评论和沟通交流。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vin车辆识别号)是每辆车唯一的17位数字编,用于识别汽车的品牌、型号、生产年份等信息。 下面是一个简单的java代,用于识别vin: ``` public class VinCode { public static void main(String[] args) { // 输入vin String vinCode = "LMGHP1SXXE1002536"; // 获取vin的前三位,即厂商标识 String manufacturerCode = vinCode.substring(0, 3); System.out.println("Manufacturer code: " + manufacturerCode); // 获取vin的第四位,即车辆属性 char vehicleAttribute = vinCode.charAt(3); System.out.println("Vehicle attribute: " + vehicleAttribute); // 获取vin的第五至八位,即车辆型号 String vehicleModel = vinCode.substring(4, 8); System.out.println("Vehicle model: " + vehicleModel); // 获取vin的第九位,即检验位 char checkDigit = vinCode.charAt(8); System.out.println("Check digit: " + checkDigit); // 获取vin的第十至十七位,即序列号 String serialNumber = vinCode.substring(9, 17); System.out.println("Serial number: " + serialNumber); } } ``` 上面的代会依次输出vin的厂商标识车辆属性、车辆型号、检验位和序列号。 不过需要注意的是,vin的格式并不是固定的,因此识别vin时可能需要根据实际情况进行调整。 ### 回答2: VIN(Vehicle Identification Number)是一种用于区分汽车的唯一标识符。VIN通常由17位字符组成,包含了车辆的制造商、车辆型号、生产年份等信息。下面是一个简单的Java代示例,用于识别VIN的信息。 ```java import java.util.Scanner; public class VINCodeRecognition { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入VIN:"); String vinCode = scanner.nextLine(); // 提取VIN中的制造商代 String manufacturerCode = vinCode.substring(0, 3); System.out.println("制造商代:" + manufacturerCode); // 提取VIN中的车辆型号代 String modelCode = vinCode.substring(3, 8); System.out.println("车辆型号代:" + modelCode); // 提取VIN中的年份代 char yearCode = vinCode.charAt(9); System.out.println("年份代:" + yearCode); // 其他信息的提取和解析可以根据VIN的具体规则进行进一步编写和完善 scanner.close(); } } ``` 此示例中,首先使用`Scanner`类获取用户输入的VIN。然后通过使用`substring`方法从VIN中提取制造商代车辆型号代和年份代,并将它们打印在控制台上。根据具体需求,还可以继续提取和解析VIN中的其他信息。 请注意,在实际应用中,VIN的解析可能会更加复杂,具体的处理逻辑和规则也会因车辆制造商和地区而有所不同。上述示例只是一个简单的开始,具体的代实现需要根据具体的需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值