关于如何提高条形码识别率,下面有几个要点:
条形码的图片质量很重要。通常,条形码识别器处理区域中像素的计数以确定条形码符号中特定条的宽度和位置。因此,如果分辨率不高,此过程会受到影响。
通常,分辨率至少要达到200dpi,并且分辨率越高越好。大多数开发人员想通过最小化分辨率来节省存储空间。只是要确保不要为了存储效率而牺牲条形码识别效率。请记住,分辨率越低,越可能缺乏识别所需的像素密度。
一般来说,对于一维条形码,每个条码的最小条和间隙至少需要三个像素。对于二维条形码来说,通常是5个像素左右。有时,尽管分辨率不低但就是没有良好的像素密度,这可能有很多原因——标签或打印机的质量不好,等等。
处理不可读或损坏的条形码
对于低质量或损坏的条形码,需要确定三块内容,以确定是否需要通过预处理对条形码进行图像增强:
膨胀(Dilation)——将像素添加到图像中对象的边界,而膨胀则会删除对象边界上的像素。
二值化(Binarization)——将图像转换为黑白图像,从而可以更轻松地区分图像边缘。
去除杂点(Despeckle)——考虑一个区域内像素的平均值,以尝试检测像素是否是一种颜色,还是在图像采集过程中产生了杂点。
倾斜校正
如果条形码是倾斜的,根据角度和倾斜程度的不同,条形码的间距可能会比正常情况更粗或更细。同时,校正条码会降低图像质量,这会导致条形码识别的准确率下降。您可以使用SDK的预处理功能对条形码进行自动倾斜校正来最大程度地提高识别准确性。但校正会消耗一些时间并降低条码识别的速度。
扫描距离
对于一维条形码,扫描距离很重要,因为它可能会影响条形码识别,因为可能会扫描到不需要的像素。例如,页面上的数字“1”,不管它是句子中文本的一部分,还是条形码符号的一部分,根据它的位置和扫描距离,都可能被误认为是条形码。因此,理想的是将扫描距离设置为五个像素或更多,以获得最佳的解码速度和准确性。 通常,设置的扫描距离越大(超过5个),扫描速度就越快。
一般来说,与智能手机相比,激光扫描仪在读取两英尺以上的距离时表现得更好。他们在通常在光线较暗的场景下也表现得更好。借助于内置软件中的预处理功能,可以在扫描过程中快速纠正损坏或难以读取的条形码,以提高识别率。
附:Dynamsoft Barcode Reader 免费在线演示
这篇文章是“条形码阅读技术的最佳实践”系列的第四章。