1. 引言
随着信息科技与互联网经济的兴起,电商平台快速发展,各种折扣竞争与促销活动点燃消费者的热情,带动一波又一波的买气。2021年双十一活动,两大主要电商平台买气惊人,天猫电商的交易额达到5403亿元,京东电商累计下单金额则达到3491亿元。电商平台的发展与交易量的暴增产生了大量快递包裹,在快递配送的各个环节,快递信息的录入、分拣,早期依赖人工进行的方式已无法满足需求,因为人工操作容易造成失误、疲劳与效率低下等问题。因此以机器视觉检测取代人工检测的方式开始涌现,并日益增加 [1],现代物流业大多已经开始采行机器自动分检的方式 [2]。
在物流行业,无论是采行人工方式还是机器自动化处理,每一个快递包裹都要经过信息录入、分拣才能进行派送。由于物流企业发展的地域局限性、交通局限性,以及发展过程中的技术、资金等种种问题,目前物流企业仍难以实现物流系统的全面自动化与智能化 [3]。如何更有效率的进行信息录入与分拣,决定了物流公司是否能够发展、茁壮并抢占市场。
仓储物流整个过程包括打印订单、拣货、合并货筐、配货、扫描检验、扫描包裹、分拣、移动包裹、订单发货等,在疫情的影响下,网络购物量剧增导致快递包裹量的大量增加,也使得物流分拣压力增大。每一个快递包裹都需要经过信息录入、分拣才能进行派送,如何有效率的进行信息录入与分拣,决定了物流公司是否能够快速发展、茁壮并抢占市场。目前的快递信息录入与分拣,已经开始逐渐采用机器视觉来取代人工。本文基于Halcon的图像分析技术,利用一维码识别对快递面单进行解码,发展对快递面单的图像进行获取、分割、提取有效特征的方法,实现对快递面单的信息识别技术,并验证其有效性与准确性。准确、快速的识别出快递面单中一维码的信息,以此功能来用于在快递行业的分拣、取件、寄件等工作中,实现自动化操作,提高效率。
目前快递信息识别技术在国内外的应用已经十分普遍,典型的案例也不胜枚举 [4],基本上涵盖了快递行业的所有流程:商家寄出快递、快递站收件、录入快递信息、分拣快递等。在快递行业迅猛发展前,人工录入快递信息是快递行业主要的工作之一。但是随着网络电商的迅速发展,快递行业逐步扩展,仅仅依靠人工录入已经不能够满足人们的需求,故而有了利用机器进行扫描,从而进行快递信息录入以及快递信息获取的技术,通过电子化的识别大大的提高了快递行业的运输效率。因此发展一套基于图像分析的方法,针对快递面单的信息进行识别,以提升快递运送效率,具有的研究意义。
2. 文献综述
2.1. 机器视觉技术简介
机器视觉的工作原理是利用光学和影像处理装置来模拟人体的视觉功能,将所获取的影像信息进行提取、加工,得到所需要的被探测物体的信息,然后再进行分析、判定,最后将结果传送给硬件装置,从而指导装置的下一步操作。一个完整的机器视觉系统由多个模块组成,一般包括光学系统(光源、镜头、相机)、图像采集模块、图像处理模块、交互界面等,如图1所示。
这些模块的功能分述如下:
1) 光学系统:指成像器件,通常包括光源、工业相机与工业镜头。这部分主要完成图像采集环境的搭建。选择合适的光源和镜头,突出检测对象的特征,有利于提高后期图像处理算法的检测效率。
2) 图像采集模块:一般使用图像采集卡的方式,把摄像图像传送至图像处理装置。该系统能将摄像机输出的数字或模拟信号转化为所需的图像资料,并能对摄像机的分辨率、曝光时间等进行控制。
3) 图像处理系统:主要通过计算机主机及视觉处理软件对图像进行多种运算,并对得到的特征进行检测、定位及测量等。机器视觉处理软件是一种用于对输入图像进行处理的计算机程序,并对其进行相应的运算以此来得出结果。这个输出的结果可能是PASS/FAIL信号、坐标位置、字符串等。目前主要的机器视觉软件是:以图像处理为核心的图像软件包Opencv,Halcon、美国康耐视Cogrex的visionpro;以算法为核心的matlab,labview;以相机SDK开发为核心的eVision等。
4) 交互界面:将最终的处理结果显示出来,进而根据结果信息控制现场的设备动作。

Figure 1. Composition of machine vision system
图1. 机器视觉系统的组成
从实际的应用场景来说,机器视觉系统的工作流程如图2所示。当检测对象进入相机拍摄区域后,图像采集卡开始工作。此时准备好光照环境,相机开始扫描并输出。然后图像采集卡通过图像采集卡将图像转换为数据流,并将其传送给图像处理设备,图像采集部件将图像存入计算机存储器,通过图像分析、识别和处理完成图像的检测、定位和测量。最后将处理结果进行显示,并将结果或控制信号发送给外部单元,已完成对机器设备的运动控制。
2.2. 国内机器视觉研究现状
中国自九十年代开始使用机器视觉技术,由于当时机器视觉的技术还没有得到广泛的发展和应用,所以在各个行业的应用很少。目前国内大部分机器视觉的行业应用,都是使用国外的品牌,国内大部分的公司,都是以代理国外的机器视觉品牌为主。随着经济水平的提高,3D机器视觉开始进入人们的视野。3D机器视觉大多用于水果和蔬菜、木材、化妆品、烘焙食品、电子组件和医药产品的评级。它可以提高合格产品的生产能力,在生产过程的早期就报废劣质产品,从而减少浪费并节约成本。机器视觉功能非常适合用于高度、形状、数量甚至色彩等产品属性的成像识别。

Figure 2. Workflow of machine vision system
图2. 机器视觉系统的工作流程
机器视觉技术可以快速并自动获取大量信息,并且易于自动化处理与自动化控制,因此,在信息技术飞速发展的现代,机器视觉被广泛的使用在各种自动化生产、自动化处理与自动化控制的过程中,在生产过程的原物料检验、生产工况监视、产品质量检验中都有所应用。在一些危险环境或狭小环境,不适合人工作业;或在视觉要求过于大量、快速、精确度要求极高、人工视觉易于疲累出错,难以满足要求的工作上,机器视觉大量被使用来替代人工视觉,大为提高生产效率与工作效率。目前国内关于Halcon图像处理技术的应用层面极广,除了在车牌图像处理中的应用 [5]、更应用于水果识别 [6] 以及纸杯缺陷检测 [7] 等。Halcon图像处理技术的主要的流程是通过相机采集图像,然后进行图像加工的预处理,例如颜色空间转换、阀值选择、图像增强、仿射变换、图像分割等算法的预处理,提取特征,再利用Halcon软件根据图像特征进行训练和识别,参考模板信息得出最终判别结果 [8]。
2.3. 国外机器视觉研究现状
在国外,机器视觉的应用主要体现在半导体及电子行业,其中大概40%~50%都集中在半导体行业 [9]。具体包括:1) PCB印制电路:各种PCB组装工艺和设备;单、双面、多层线路板、覆铜板及其配套材料、附属设备、耗材、油墨、药剂、配件、电子包装技术和设备、丝网印刷设备、丝网设备、丝网包装材料等。2) SMT表面贴装:SMT工艺与设备,焊接设备,测试设备,返修设备及各类配件,SMT材料,贴片,粘合剂,焊剂,焊料,焊料,焊料,焊膏,清洗剂,回流焊机,波峰焊机以及生产线的自动化。3) 电子制造及处理设备:电子元件制造设备,半导体及集成电路制造设备,元件成型设备,电子工模具。
机器视觉技术也被广泛应用于质量检验的各个领域,它的产品在实际应用中占有重要的位置。以印刷线路板为例,传统的印刷线路板人工检测是以人工操作电子显微镜,观察印刷线路板,然后凭借经验来判断线路板的缺陷点,再使用刀片等工具来修补印刷线路板的缺陷。这种传统的人工检测检测方式,如果在长时间人工目测的情况下,由于长时间的高强度工作,人类容易出现视觉疲劳和注意力分散,非常容易造成误判、误检,甚至修补错误,造成印刷线路板毁损。更因为目前的印刷线路板已经成为高集成且高精密的产品,人工检测的方式已经渐渐不可行,因此以机器视觉检测取代人工检测就成为越来越被实行的作法 [10]。
除此之外,机器视觉还用于其他各个领域,应用范围相当广泛,例如利用于自动虹膜识别的人员身份验证 [11],果蔬自动检测和质量评价 [12] 等。
3. 基于Halcon的图像识别原理及算法
3.1. 一维码
一维码是将一定信息的字符代码转换成用一组黑白(或彩色)相间的平行线条、按一定的规则排列组合而成的特殊图形符号。常用的一维码的码制包括:EAN码、39码、交叉25码、UPC码、128码、93码,ISBN码,及Codabar (库德巴码)等。
条形码是一组宽窄不一、黑白或五颜六色的平行线条,按照一定的规律排列组合而成的条形。条形图和空格线是根据条形码的印刷载体反射率的差异而产生的。条形码是条形码中反射率较低的一部份,通常是黑色,空格是条形码中对光线反射较高的一部份,通常是白色。
3.1.1. 一维码定位
一维码是一些密集的竖条结构,利用这一特性来进行一维码定位。首先在图像上获取图像的边界,判断边缘方向是否一致,一致则把边缘保留下来;把保留下来的边缘再次进行筛选,以边缘为中心绘制方块,统计方块内的边缘点是否达到需求值,如果达到就把边缘保留下来;再对保留下来的边缘为中心绘制方块,统计方块内的边缘的梯度方向是否一致,如果一致则把边缘保留;最后利用条码的密集型特点,对候选区域进行闭运算,最终定位到条码区域。
3.1.2. 一维码解码
一维码解码是利用一维码上白条和黑条的间隔,通过画线测量条码上的间隔获取对应的0、1码值。一般情况下会绘制多条线段来读取条码,保证读取的稳定性。如果图形上的条码存在缺陷,可以通过多条线的信息合并获取到条码的完整信息。得到条码信息后,通过测量0、1码的宽度判断白条和黑条的单位宽度,然后读取条码符号串,通过识别起始、终止字符来判别出条码符号的码制及扫描方向,然后根据码制所对应的编码规则,将条形符号转换成相应的数字、字符信息。
3.2. 基于Halcon的图像识别原理
本研究首先通过工业相机获取快递面单照片,然后以Halcon软件,利用仿射变换将图片旋转,并选择感兴趣的区域,经过全局阈值对字符分割、训练和识别 [2] [5]。涉及的技术名词与理论简介如下:
1) Halcon软件:Halcon是一个综合的视觉处理软件,提供了应用程序中常用的一些处理工具,包括各种标准的和先进的图像处理技术和从各种硬件获取的图片到先进的图形匹配算法等。
2) 图像灰度变换:根据点运算,将每个像素的灰度按一定的数学转换公式转化成新的灰度。灰度变换是一种增强图像的重要方法,它能扩大图像的动态范围,扩大图像的反差,增加图像的清晰度和特征。
3) 像素级边缘提取:像素级边缘提取等同于颜色的边缘提取。在传统的边缘检测中,采用边缘滤波技术,它是以寻找亮度和亮度的区域边界的像素为特征,而采用这种滤波算法对图像中梯度变化比较大的区域进行边缘提取,并将其作为边值和方向的特征,选取具有高边幅值的像素,即可进行边缘提取。
4) 字符训练和识别(OCR):首先需要一个训练文件,然后通过机器学习的方法来训练识别分类器,进行字符的识别。该方法通过将字符的特征和系统中的模板相比较,得到最大可信度的数值,完成识别,并通过机器学习得到的训练结果来进行识别。
3.3. 基于Halcon的图像识别算子
本文主要应用的Halcon算子如表1所示,主要的Halcon图像识别算子分述如下:

Table 1. Operator description of Halcon
表1. Halcon算子说明
1) 获取图像算子(list_image_files):获取图像的方式有两种,通过图像助手读取图像和通过代码读取图像。本研究主要采用代码的方式来读取图像,其中,read_image算子是用来单次读取函数,list_image_files算子是用来获取图像文件,以此来获取到批量的文件。因本研究中所需获取到的图像文件较多,故使用list_image_files算子。
2) 全局阈值分割图像算子(threshold):阈值就是一个指定的像素灰度值的范围。假设阈值为0~255灰度值,阈值处理就是将图像中的灰度值与该阈值进行比较,落在该范围内的像素称为前景,其余的像素称为背景。一般会用黑白两色来表示前景与背景,这样图像就变成了只有黑与白两种颜色的二值图像。当检测对象的图像灰度与背景差异较大时,用阈值处理可以很方便地将其与背景分离开来。
3) 拉普拉斯算子(laplace_of_gauss):拉普拉斯算子的基本原理是根据图像像素的改变程度来运作,也就是二次差分。一个函数的一阶微分描述了一个函数的图像在哪个方向上的改变;二阶微分描述了图像的变化,也就是剧烈的或平稳的。二次差分可以发现图像中色素的过度变化,例如从白向黑的转换非常剧烈,可以由二次差分发现。如果区域中央像素的灰度比其区域内其它像素的平均灰度要高,则这个中央像素的灰度就会被进一步减小。如果区域中央像素的灰度比其所属区域的其它像素的灰度要高,则这个中央像素的灰度就会得到进一步的加强改善。
4. 快递面单信息识别的过程和结果分析
4.1. 快递面单信息识别的过程
本文首先针对快递面单的信息进行识别,识别过程如下。
4.1.1. 一维码识别
在Halcon中进行快递信息一维码识别,主要有获取图像、设置一维模型、图像预处理、提取条码轮廓、识别条码信息、显示信息六个步骤。各阶段处理过程的方法与具体实现代码如下:
1) 创建一维模型,检测条码首尾空白区域
创建一维模型是基于Halcon的图像分析来进行的,通过创建模型,让机器进行学习图像的特征,进而对图像进行分析,以此来得出结果。检测条码收尾空白区域是为了对条码进行定位,以确保检测区域完全覆盖条码,正确读取到条码信息。具体实现代码为:
create_bar_code_model ([], [], BarCodeHandle)
set_bar_code_param (BarCodeHandle, 'quiet_zone', 'true')
2) 获取图像
通过代码读取图像是利用算子read_image来获取图像和利用算子list_files来获取文件路径。本研究主要采取算子list_image_files来读取已经采集好的图像。
读取图像的具体代码为list_image_files ('D:文件名', 'default', [], ExampleImagesAny),获取到的图像如图3所示。

Figure 3. Example of acquiring an image
图3. 获取图像的示例
3) 图像预处理
获得图像之后,图像质量往往会与预想的有所差异,如出现形状失真、亮度低、图像噪声大等问题,因此需要对图像进行即时校正和图像增强等预处理,方便后续的检测和识别。本文主要对图像进行全局阈值的处理,具体代码实现为:
threshold(ImageLaplace, Region3, 5, 127)
skeleton(Region3, Skeleton3)
connection (Skeleton3, ConnectedRegions2)
select_shape (ConnectedRegions2, SelectedRegions, ['area','width','height'], 'and', [0,0,0], [220,80,200])
图3所获取的图像进行全局阈值的预处理,结果如图4。

Figure 4. Result of express information threshold
图4. 快递信息阈值处理结果
4) 提取条码边缘轮廓
在具体显示场景应用中,因为照相机所采集的画面图像有噪音,而laplace运算符对噪音非常敏感,所以对图像进行平滑处理。利用高斯低通滤波器和利用高斯–拉普拉斯算法将laplace算法合并为一个单一的laplace_of_gauss操作,通过填充一些简单的参数,来提取条形码的边缘。
具体实现代码为:laplace_of_gauss(Image, ImageLaplace, 2)。
5) 获取条码信息
结果一般以字符串或者字符的方式进行输出,当需要和原图像文字排版一致的输出时,需要获取字符的位置,然后按照字符的位置进行排版输出。具体代码实现为:
disp_message (WindowHandle, ['快递单号为:' + DecodedDataStrings], 'window', 5 * 12, 12, Color, 'true')
识别结果如图5。

Figure 5. Identification results of express information
图5. 快递信息识别结果
4.1.2. OCR识别
在Halcon中进行光学字符识别(Optical Character Recognition, OCR),主要有主要有获取图像、图像预处理、字符特征提取、获取对比数据库、对比识别、显示结果六个步骤。各阶段处理过程的方法与具体实现代码如下:
1) 读取图像
本次研究主要采取算子read_image来读取已经采集好的图像,图像名称为0.jpg。读取图像的具体代码为read_image (Image, 'D:/文件名/0.jpg')。
2) 图像预处理
图像预处理是非常关键的一个环节,输出的图像质量关系到识别的准确率和速度。处理步骤如下:
a) 二值化
由于彩色图象含有大量的信息,所以必须对图象进行二值化,使得图象中的文字信息仅含有黑色和白色,从而提高了识别的效率和精确性。
b) 创建感兴趣区域(RIO)
在采集到原始图像后,即可选择关注的区域作为ROI。ROI可以是任何形状,常规的有矩形、圆形、椭圆,可以是自定义的或者是通过图像处理得出的特定区域。使用gen_rectanglel算子生成矩形ROI_0的形状,然后通过reduce_domain从原图中截取出矩形覆盖的这一部分的图像,即为ROI,命名为ImageReduced。在窗口中显示ImageReduced的内容,即为所关注的ROI图像。
c) 阈值分割
当检测对象的图像灰度与背景差异较大时,可以根据像素与相邻像素之间的灰度值差异设置一个阈值,将像素与其相邻的像素分割开来。
d) 字符特征提取
在OCR识别中,文本特征的抽取是关键,而所采用的特征抽取方法对其准确率有很大的影响。当文字区划分为若干个区域时,这些区域的黑白数字之比就是一个空间的数字矢量,这是一种利用数学原理进行比较的方法。或是利用字符结构的特点,将文字图像线条化后,得到笔画的端点、交叉点的数目和位置。
e) 获取对比数据库
在输入文本完成了特征抽取后,就需要将其与数据库进行对比,不管是数据还是结构特性。数据库的内容包括所有需要辨识的字词和这些字集的特点等。本研究采用算子create_text_model_reader,具体代码为
create_text_model_reader ('auto', 'Universal_0-9A-Z+_Rej.occ', TextModel)set_text_model_param (TextModel, 'dot_print', 'true')
f) 对比识别
对比识别是最大限度地利用数学运算原理,利用不同的数学距离函数,对其进行分类。比较著名的对比方法包括:欧美对比法、松弛对比法、动态程序对比法、类神经网络数据库的建立和对比。通过采用不同的特征比较方法进行相似性的补充,从而提高了识别的可靠性。
g) 结果输出
结果一般以字符串或者字符的方式进行输出,如果输出结果要与原图像文字排版一致,需要获取字符的位置,然后按照字符的位置进行排版输出。输出结果如图6,具体代码为
disp_message (WindowHandle, '快递单号: ' + sum(Class), 'window', 16, 16, 'black)。
4.2. 快递面单信息识别的结果分析
本文基于Halcon的图像分析技术,通过机器学习的方式对数据学习后,进行后续数据分析的工作,以此来发展快递面单图像的一维码信息识别技术,强化快递信息录入的速度,提升快递自动化分拣的速度,以有效提升快递运送的效率。研究过程针对3笔数据进行学习,以7笔数据进行测试,测试结果都获得成功。
利用Halcon的图像分析技术可以准确、快速的识别出快递面单中一维码的信息,此功能可用于快递行业的分拣、取件、寄件等工作中,实现自动化操作。以图5为例,快递面单一维码信息识别后的结果为YT6159937621574,与真正的快递单号结果一致。验证Halcon软件应用于快递面单信息识别技术确实可行,能够以机器视觉的识别方式取代快递的人工分捡工作。
通过一维码与OCR两种识别方式的结果比对,如图5和图6。可以发现两种识别方式都能够准确的识别出正确的快递面单信息,但是在具体的实际应用中,利用OCR识别方式有时会存在对于字符特征提取不够准确而导致结果出现偏差的问题。因此在实际应用中,优先推荐使用一维码识别的方式来获取快递面单的信息。本文针对一维码与OCR两种识别方式的结果,进行比較后整理如表2。

Table 2. Comparative analysis of one-dimensional code recognition and OCR recognition
表2. 一维码识别和OCR识别比較分析
5. 结论与建议
一维码解码技术能够大量、快速采集信息,是物流管理系统中大规模、快速的信息采集技术,是实现POS系统、EDL、电子商务、供应链管理的技术基础。根据本研究的验证,发现利用Halcon的图像分析技术可以对获取的快递面单照片进行快递信息识别,包括快递单号,地址,联系人,收件人联系方式等信息的识别,让快递运送人员、快递接收者可以实时查询到快递信息,实现对快递的分拣、分类。
利用Halcon的图像分析进行快递面单信息的识别,技术上确实可行,能够以机器视觉的识别方式取代快递的人工分捡工作。但是本研究目前只能够做到对单一快递面单的识别,如何同时对多个快递面单进行识别,或在任一角度下都可以进行快递面单信息的识别,是目前仍待努力的方向。
基金项目
中国教育技术协会“十四五”规划一般课题项目(项目名称:新商科大数据应用实验实训平台与教学资源建设研究,项目编号:G002);2021年美林数据公司教育部产学合作协同育人项目(项目名称:新商科教改情境下经管类专业大数据应用实验实训平台建设,项目编号:202102344024);厦门大学嘉庚学院科研启动基金(项目名称:科研项目启动,JG2018SRF10)。