项目大概分为两部分,首先使用yolov5进行目标检测并截图;然后对图片一系列的处理后使用Tesseract-OCR进行字符识别(本文为简易版框架结构,如果看完感兴趣可以在文末跳转看细节操作)
yolov5检测部分
1.环境搭建
首先创建虚拟环境,然后pip install -r requirements.txt自动安装所需环境,可以临时换源下载速度很快,否则下载很久且可能会timeout报错。
2.数据处理
1)首先用labelme或者labelImg进行数据集的标注画框,也可以下载我标注好的,质量较高手工一张一张筛选过。
2)创建数据集的yaml配置文件。
3.模型训练并截图
输入训练命令开启训练如果自己没有服务器配置不太支持的话这里也可以使用我训练好的模型,里面有imgsz分别为640和800的两个模型,都是用了八百多张的数据集且都训练了300轮,效果不错检测如下。
得分基本上都在0.95以上,输入命令进行截取目标框进行后续处理并识别文字。
Tesseract-OCR识别部分
1.环境搭建
以下搭建环境所需下载的依赖和安装包可以通过以下命令下载(官网下载速度缓慢且较大),也可以使用这边我已经下载好了的比较快。以下操作建议新建个专门OCR的目录下进行。
下载Tesseract-OCR和leptonica以及相关依赖,解压后编译、安装、配置环境变量等。
2.图像处理
首先官网下载中文语言包(提供的资源里有)放入环境中tessdata目录下,才能被识别到。
再进行代码进行数据清洗处理车牌截图,由这样
变成这样
再变成这样
最后得到这样
代码中使用放入tessdata中的中文语言包进行识别,发现识别效果不尽人意,这时候我们就需要通过训练自己的文字来提高识别率。
3.文字训练
下载训练工具(提供的资源里的jTessBoxEditor),打开饼并进行合并tif图片,然后进行文字框调整
注意这里的insert只能选中一个框后进行插入,如果存在一张图片一个框都没有不能进行insert只能手动添加,具体细节通过文末的细节文章查看。
最后输入一系列的命令进行训练合并等,生成自己训练的语言包,以traineddata为后缀的文件,将其放入tessdata中即可识别。
如果看完感兴趣想要动手操作,具体的细节步骤、操作命令以及报错解决措施等在此文章中。
基于yolov5和Tesseract-OCR车牌识别项目 Linux系统上搭建运行