基于OpenCV的生产日期字符识别研究*

  作者:李佳琪(安徽理工大学 经济与管理学院,安徽 淮南 232000) 时间:2021-07-27来源:电子产品世界

编者按:利用OpenCV-python和开源OCR技术进行图像预处理,并通过训练得到一个专属字库,能较为精准地识别生产日期字符。针对如何提高商品标签识别系统的工作效率,从改善商品标签图像质量和提高识别算法效率入手进行研究,目的是提高生产效率、提升产品质量。

商品的标识技术是对标签进行编码和标记的技术手段,也是产品可追溯性的基础。标识技术关系到物流、食品和电子商务等多个行业,影响深远。伴随人们生活水平的提高,对于健康和安全的关注越来越多,每个行业对产品的品质和安全性的要求也越来越高[1]。编码标识的不统一阻碍了各个行业的发展,包括对产品的溯源、电子商务及对产品标签标准化的要求,因此,国家商品生产日期标识规范体系的建立显得尤为必要。

OCR 技术通过照相机拍摄图片,利用检测模式扫描图像,从中排除干扰信息并提取文本信息,然后对文本信息进行字符识别,用一系列算法翻译成计算机处理文本 [2]。现在,还可直接连接摄像头或照相机直接进行视频识别。典型的OCR 技术首先是对输入图像进行预处理,再对处理过的图像进行文字检测识别,在不同项目背景下,根据光照、背景颜色、产品材质和产品要求的不同,预处理和识别方法也会有所差异。

识别过程将由计算机端的Python 程序完成。本文采用的商品标签识别过程如图1 所示。

作者简介:李佳琪(1995~),女,安徽舒城,回族,硕士生,研究方向:神经网络字符识别,E-mail:568950838@qq.com。

*国家自然科学基金,61873004,多源传感器环境下基于异构特征信息融合的行为识别

国家自然科学基金,51474007,基于领域本体的煤矿安全数据融合方法及应用

1627372168298032.png

图1 商标标签识别过程

1   预处理与识别

1.1 OpenCV

OpenCV 是一个跨平台的轻量级开源计算机视觉库,支持多种机器语言。OpenCV 模块覆盖全面,其中囊括了字符识别、图像处理、人脸识别等。OpenCV 涵盖300 多个C 语言函数的中、高层API,对于输入图像的格式也非常包容,用它进行应用开发非常高效和简洁,而且包含了丰富的工业检测类函数,能够用于实时图像处理,使用便捷,功能完善,适用于本文实验环境。

1.2 Tesseract-OCR

Tesseract-OCR 是19 世纪80 年代由惠普实验室开发的,谷歌改进了其中的算法,通过排除引擎缺陷进行了优化。Tesseract-OCR 的功能强大,应用广泛,是开源的OCR 识别系统[3]。Tesseract-OCR 识别引擎在开源别引擎中占有重要地位,完整识别过程由一种页面结构阐发方法对图片做布局剖析,旨在辨别图像上的表格、文本、图片等内容,为后续识别工作做铺垫。

2   图像预处理

将背景信息和文本信息分开,消除图像无关信息、加强有效信息,从而简化后续辨认字符步调,减轻辨认难度和错误率。

2.1 图像倾斜校正

产品在流水线输送带上运动时,经过高速摄像机拍摄照片,可能会遇到产品放置不规范的问题,导致拍摄的照片歪斜,不平行于水平线。预处理第一步是将扭曲的原始图片进行校正。在此环境中,使用傅里叶变换做图像的倾斜校正。

二维图像的傅里叶变换公式:

image.png

式中,f 和F 分别为空间域值和频域值,示出了傅立叶变换后的结果需要使用的真实图像加虚拟图像,或振幅图像(magitude 图像)加相位图像[4](如图2)。

1627372383265716.png

(a)倾斜校正前

1627372405597499.png

(b)倾斜校正后

图2 校正前后对比

2.2 图像噪声处理

在收集、传输和处理图像的过程中,图像会产生一些不可避免的噪声,包含与图像无关和冗余滋扰信息。降低图像噪声不仅可以使图像更加清晰,而且可以突出图像的感兴趣区域,易于识别(如图3)。

image.png

(a)原图

image.png

(b)中值滤波对噪声的处理

图3 噪声处理前后的对比

2.3 图像二值化

遍历像素点,通过选取合适的值,灰度值二分为255 或0,白色为255,黑色为0,如式(3)所示。分类后图像变为黑白,分辨图像中的图形和文本,便于后续将文本信息提取出来[5]

image.png

1)Otsu 算法

此算法是把背景和目标阈值的差距拉大,分裂性较强,所求的是类内方差min,和类间方差的max,首先遍历所有像素点,统计灰度级像素的个数,将图像灰度化,再次遍历计算出最大类间方差,程序略显复杂[6],效果图如图4 所示。

1627372907718531.png

图4 Otsu对光照不均的处理

2)Sauvola 算法

该算法通过引入以像素点为中心领域的wide 为参数windowsize 和自定义系数比例因子k 来降低对噪声的敏感性,也就是对niblack 算法进行改进。它集中于当前像素,阈值是根据该像素的当前像素的附近灰度平均值和标准偏差动态计算[7]。

灰度均值m 与标准方差s:

image.png

然后是该点的阈值T(x, y),其中T的大小可以根据k 来调节:

image.png

image.png

图5 Sauvola对光照不均的处理

2.4 边缘检测

边缘检测是通过卷积或微分计算后得到的二值化

图像。

1)Laplacian 算子边缘检测

拉普拉斯算子被分成4 个和8 个邻域,域是像素梯度需求邻域的4 个相邻方向上的中央附近的方向和梯度[8](如图6)。

image.png

图6 Laplacian的边缘处理

2)Canny 边缘检测算法

Canny 从信噪比、单边缘和定位性能方面来判定边缘的优劣,Canny 边缘检测算法可以分为以下5 个步骤:

①图像灰度化

通过RGB 三个通道,为了降维,将图片图像进行灰度化。

②高斯模糊处理

此步骤是对图像进行smooth 处理,通过滤波器将高斯函数离散化[9],高斯函数与滤波器的计算:

image.png

③图像梯度、梯度幅值、梯度方向计算

该点通过计算当前像素与其附近的像素差值来进行位置判断,接近这个差值称为图像梯度。首先计算一阶导数:

image.png

计算梯度幅值M:

image.png

计算梯度值的方向

image.png

④ NMS(非极大值抑制)

留存边缘方向上具有极大值的像素,通过NMS 找出其中的局部最大值,将其他位置的值取0。

⑤双阈值的边界选取

梯度大于任何边缘的最大阈值是真正的边缘,而低于最小阈值的边缘为非边缘,非边缘即舍去(如图7)。

image.png

图7 Canny的边缘处理

2.5本文算法的选取

中值滤波是对光滑脉冲噪声表现良好,效果图像的边界顺滑清晰。与平均灰度法比较,Sauvola 使用二值化的图像,能解决产生照度不均的影响。拉普拉斯对噪声敏感,分辨边缘像素的位置表现优异,但易出现双像素边界,导致日期显示模糊不清晰;Canny 对比Laplacian 克制了噪声引起的非边缘,对于光照不均的图像也能有如图所示的效果,线条更流畅光滑,同时细化过的边缘比较清晰,易于后续的识别工作。

综上,根据实际检测考虑,本项目的噪声处理、二值化及边缘检测的算法分别借用的是中值滤波、Sauvola算法和Canny 边缘检测法。

3   商品生产日期字符识别

3.1 识别目的

在车间生产中,生产日期是由操作工人设置喷印装置并对生产日期进行喷印。生产日期的错误为后续的溯源、仓储造成困难。为避免生产资料的浪费和后续工作的开展,制作日期字符识别数据集并校验成果。

本文通过jTessBoxEditor 进行字符识别训练工作,Tesseract 深度学习样本训练工具基于Java 开发,当Tesseract 的自带字符库不足以满足需要时, 通过jTessBoxEditor 训练得到专属字符库,提高生产日期识别率和准确率。

3.2 字符集的创建和测试

在jTessBoxEditor 编辑器中点击merge tiff,打开拍摄到的商品生产日期图片,并为文件命名,以生成训练集的tif 文件(如图8)。

image.png

图8 训练集部分样本图

通过输入命令行生成box 文件,再导入tif 文件,然后它会主动识别box 文件并主动导入(如图9)。

image.png

图9 字符识别界面

利用窗口上方的模块,对文件内字符进行框选,调整字体坐标,标准为一字一框,并对识别的字符进行修正,最后点击save。

在输入命令后创建字体特征文件,之后开始对字符文件进行训练,并把生成的文件合并,即得到训练文件(如图10)。

1627373782169893.png

图10 字符集训练界面

字符识别的正确率受前期图片处理的程度和字符库的影响,训练集中包含英文、中文和数字三种字符,为了验明三种字符的单独测试效果,从以下四个方向进行

观察测试:

1)中文字符正确率

2)英文字符正确率

3)数字字符正确率

4)全部字符正确率

image.png

通过测试显示,错误率最高为5.00% 的中文字符,Tesseract 对于英文和数字字符还是比较精准的,错误主要在于字符“期”容易识别为分开的两个字“其”和“月”,接下来对字符偏旁部首误分割的判定准确率进行研究优化。

4   结束语

本文基于OpenCV 和开源库Tesseract,在Python平台根据现有的完善字符识别算法,利用训练出的专属字符库初步实现了在简单环境下对商品生产日期的识别功能。

本实验项目仅针对普通场景下的图像进行商品标签日期字符的识别,对于复杂场景下或复杂字体、混合字体或弯曲识别界面的图像文字识别还有待研究。后续将在图像预处理和字符识别方面进行优化,即将着手的工作如下:

1)研究生产日期标签污损情况下的字符识别。

2)识别结果仅显示于界面,未能联系产品进行操控。

3)进一步提高字符识别的速度和正确率。

参考文献:

[1] 于颖.追溯无国界——追溯实施中的软件,自动化与数据标准化[J].中国自动识别技术,2015(4):60-64.

[2] 王德青,吾守尔·斯拉木,许苗苗.场景文字识别技术研究综述[J].计算机工程与应用,2020,56(18):1-15.

[3] 李志昂,李少波,白强,等.基于视觉的机器人目标抓取研究[J].组合机床与自动化加工技术,2020(9):108-111.

[4] 马锁冬,曾春梅,许峰.基于4f系统的光学图像加密与解密仿真教学[J].大学物理实验,2018,31(6):39-45.

[5] 石鹏飞,刘慧.基于OpenCV的偏光片检测方法[J].机械管理开发,2020,35(10):162-164+202.

[6] 陈飞.改进的交互式Otsu红外图像分割算法[J].计算机测量与控制,2020,28(9):248-251.

[7] 李艺杰,邹坤霖,孙炜,等.基于Sauvola算法和神经网络的图像自适应二值化方法[J].测控技术,2020,39(8):62-69+75.

[8] 赵慧娟,姜盼松,黄文聪.基于图像识别算法的图像传感器质量检测方法改善研究[J].工业工程,2020,23(3):115-122.

[9] 白松让,段敏,曹景胜,等.基于OpenCV的车道线智能检测和识别[J].辽宁工业大学学报(自然科学版),2020,40(2):92-95.

(本文来源于必威娱乐平台 杂志2021年7月期)

关键词: 202107 图像预处理 OpenCV 字符识别 Tesseract-OCR

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版