识别快递单号
这次跟老师做项目,这项目大概是流水线上识别快递上的快递单号。首先我尝试了解条形码的基本知识
百度百科:条形码
条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。
条形码有多种,在我国广泛流传的是EAN13条形码(以下简称条形码),所以主要研究该种条形码的识别。
条形码位数说明:
-
条形码一共有13位
-
前2位或者前3位称为前缀,表示国家、地区或者某种特定的商品类型
-
中国区条形码开头:690~699
-
图书类条形码开头:978~979
-
前缀后的4位或者5位称为厂商代码,表示产品制造商
-
厂商代码后5位称为商品代码,表示具体的商品项目
-
最后1位是校验码,根据前12位计算而出,可以用来防伪以及识别校验
条形码编码说明
条形码一共有8个区域:左侧空白区->起始符->左侧数据符->中间分隔符->右侧数据符->校验符->终止符->右侧空白区

-
字符为0~9
-
除空白区外的区域和字符都采用二进制编码表示,1表示bar(黑条),0表示space(白条)
-
起始符,终止符编码为101,分隔符编码为01010
-
0~9每种字符有3种编码方式,AB为左侧数据奇偶编码,C为右侧数据偶编码

-
左侧数据的奇偶性由前置符决定(就是说,第一个支付是几就按下面的排列开始)

还有这么一种理解编码方法
以宽度为编码,去掉起始码,终止码,中间分隔码,不管白条还是黑条都算一个编码,最窄一节为1(最窄的为单位宽度),两个单位宽度就是2,三单位长度为3,四单位宽度为4
四条(不管黑条还是白条都算条)代表一个数字
| 四条长度 | 数字 |
|---|---|
| 3211 | 0 |
| 2221 | 1 |
| 2122 | 2 |
| 1411 | 3 |
| 1132 | 4 |
| 1231 | 5 |
| 1114 | 6 |
| 1312 | 7 |
| 1213 | 8 |
| 3112 | 9 |
两种编码的图示

这就代表为 数字 1
校验
EAN13条形码一共有13位,最后1位是校验位,该位是通过前12位按照一定的步骤计算出来的。
如果按照一定的步骤处理识别出的前12位数据,如果计算结果和识别出的结果相等,识别正确;
如果不相等,则重新识别或纠错再校验或提示识别失败。
校验码计算方法
以下图所示的条形码举例说明:

条形码的位数起始位为最右一位,即校验位,检验码计算方法如下:
-
偶位数数值相加乘3((0+2+0+8+1+9)*3=60)
-
不含校验位的奇位数相加(7+4+7+9+3+6=36)
-
将前两步的结果相加(60+36=96)
-
用10减去上一步结果的个位数数值(10-6=4)
-
上一步结果的个位数即为校验码(4)
源码
&nb

本文探讨了如何通过条形码编码原理识别EAN13条码,以及遇到非标准快递条码时转而使用OCR技术(如Tesseract-OCR)识别快递单号的过程,包括编码解读、校验和实际应用中的解决方案。
最低0.47元/天 解锁文章
3924

被折叠的 条评论
为什么被折叠?



