当前位置:   article > 正文

Python改变生活 | 轻松识别数百个快递单号_py批量识别条形码

py批量识别条形码

今天是Python改变生活系列的第一篇,也是一个与你们有关的问题案例

前情提要

了解我的小伙伴可能都知道,小五经常给大家送书。最近一年,不算联合抽奖送书,单独我自购+出版社赞助已送出1000本书籍。

如果是自购的话,还需要自己联系快速小哥寄出书籍。

寄出后快递小哥会给我截图来反馈,然而我想要单号的时候就遇到问题了。

每次寄完书,我都只能得到n个截图(内含快递信息)。

为了及时反馈大家物流信息,我需要尽快将快递单号提取出来。

思考解决办法

每次大概都有十几到几十张截图,手动去识别真的太麻烦。

不如先看看每张截图大概是什么样子,再去想想批量处理的办法吧。

主要是为了批量获取图片中的快递单号,我想到了两个解决办法:

  1. python识别条形码来直接获得准确快递单号

  2. 用python调用ocr,识别截图中的快递单号文字

大家觉得哪个更简单更准确呢?

今天我先聊聊第一种方法的流程和踩坑经历。

遍历图片

首先,第一步需要先获取文件夹中的所有截图,再依次进行条形码识别。

具体操作可以参考注释

  1. import os
  2. def get_jpg():
  3. jpgs = []
  4. path = os.getcwd()
  5. for i in os.listdir(path): #获取文件列表
  6. if i.split(".")[-1] == "jpg": #筛选jpg文件(截图)
  7. oldname=os.path.join(path,i) #旧文件名
  8. i = i.replace('微信图片_','')
  9. newname=os.path.join(path,i) #新文件名
  10. os.rename(oldname,newname) #改名
  11. jpgs.append(i)
  12. return jpgs
  13. 复制代码

上面的代码中除了遍历筛选图片,还涉及了改名的操作。

这是因为我在后面使用 opencv 时,打开的路径只要含有中文就会一直报错,于是我就干脆把截图名称里的中文去除。

执行构建的get_jpg()函数,得到

这些就是演示文件中的四个截图文件,下面开始对他们进行识别。

识别条形码

python的第三方模块 pyzbar 可以很方便地处理二维码的识别。我们这次用它来识别一维条形码的话,用法也大致一样。不过还要搭配 cv2 使用,主要是为了利用cv2.imread()来读取图片文件。

注意:对于cv2模块,安装时需要输入pip3 install opencv-python,但在导入的时候采用import cv2

识别条形码的具体语句如下所示:

  1. import pyzbar.pyzbar as pyzbar
  2. import cv2
  3. def get_barcode(img):
  4. image = cv2.imread(img)
  5. barcodes = pyzbar.decode(image)
  6. barcode = barcodes[0]
  7. barcode_data = barcode.data.decode("utf-8")
  8. return barcode_data
  9. 复制代码

上面构建的get_barcode()函数可以实现识别条形码,并返回结果数据。

我们可以用for循环遍历前文获取的所有图片,再依次使用get_barcode()函数来识别条形码。

  1. data_m =[]
  2. for i in jpgs:
  3. data = get_barcode(i)
  4. data_m.append(data)
  5. data_m
  6. 复制代码

可以发现,成功识别了四张截图里的条形码,并获取了对应的快递单号。

小结

回顾今天的问题案例,我先通过思考想出了两种解决办法。第一种的优点是识别条形码比OCR更准确,但是其只获取了快递单号。后续在给获得赠书的同学反馈时,我还需要手动将名字和单号对应,不够偷懒。后续将给大家介绍第二种方法的流程和优缺点。

如果想看更多python改变生活的真实问题案例,给本文右下角点个赞吧。

如果你也有一直想用python解决的问题,欢迎在评论区告诉我

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/995568
推荐阅读
相关标签