资讯专栏INFORMATION COLUMN

Python完成简单鉴别数百个物流单号

89542767 / 404人阅读

  在我们要寄出去许多快递包裹时,为了能及时沟通物流详情,要迅速将物流单号分离出来。这时候用手动式去鉴别确实太麻烦了,因此本文用Python完成简单鉴别数百个物流单号,所需的可以了解一下


  小伙伴们好,我是大五


  这也是Python改变未来系列第三篇,是一个和你们相关的难题实例。


  前情提要


  掌握我的好朋友很有可能都清楚,阿浩常给大伙儿送书。近一年,算不上协同抽奖活动送书,独立我自买+出版社出版冠名赞助已送出去1000本书本。

01.png

  假如是自买得话,还要自身联络迅速小伙寄出去书本。


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

02.png

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

03.png

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


  思考解决办法


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


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

04.png

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


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


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


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


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


  遍历图片


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


  具体操作可以参考注释


  import os
  def get_jpg():
      jpgs = []
      path = os.getcwd()
      for i in os.listdir(path):  #获取文件列表
          if i.split(".")[-1] == "jpg":  #筛选jpg文件(截图)
              oldname=os.path.join(path,i)  #旧文件名
              i = i.replace('微信图片_','')
              newname=os.path.join(path,i)  #新文件名
              os.rename(oldname,newname)  #改名
              jpgs.append(i)
      return jpgs


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


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


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

05.png

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


  识别条形码


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


  注意:对于cv2模块,安装时需要输入pip3installopencv-python,但在导入的时候采用importcv2。


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


  import pyzbar.pyzbar as pyzbar
  import cv2
  def get_barcode(img):
      image = cv2.imread(img)
      barcodes = pyzbar.decode(image)
      barcode = barcodes[0]
      barcode_data = barcode.data.decode("utf-8")
      return barcode_data


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


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


  data_m =[]
  for i in jpgs:
      data = get_barcode(i)
      data_m.append(data)
  data_m


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

06.png

  小结


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


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128803.html

相关文章

  • 如何能正常获取17track物流网站的物流信息?

    摘要:需要的数据就是这个快递轨迹,看到上面的好像没什么问题,挺容易的,这还有什么比这爽的,赶紧使用请求一波。由于说过了,就不多说了,突破了继续刷新也会遇到一些未定义的,也是同样扣代码,就不多说了,这里说另一个。 原本昨天就要发文章的了,由于之前的pdd文章被投诉了,删除了,影响心情的同时也不敢乱发文章了,所以就暂时歇了一天,也改了另外一个网站,就是今天的物流网站。如果大家某天看不到我发文了,...

    mingzhong 评论0 收藏0
  • 写一个小程序菜鸟裹裹吧

    摘要:最近双十一过后,每天不是拿快递就是去拿快递的路上,翻开手机应用里的菜鸟裹裹查看快递是很方便的,当我在微信端搜索菜鸟裹裹小程序时,却没有发现,于是便想自己动手仿版写一个菜鸟裹裹的小程序,对其中的快递查询物流跟踪很有兴趣。 新手写小程序并不简单,这是我的第一次尝试学习到了很多。最近双十一过后,每天不是拿快递就是去拿快递的路上,翻开手机应用里的菜鸟裹裹查看快递是很方便的,当我在微信端搜索菜鸟...

    NikoManiac 评论0 收藏0
  • 写一个小程序菜鸟裹裹吧

    摘要:最近双十一过后,每天不是拿快递就是去拿快递的路上,翻开手机应用里的菜鸟裹裹查看快递是很方便的,当我在微信端搜索菜鸟裹裹小程序时,却没有发现,于是便想自己动手仿版写一个菜鸟裹裹的小程序,对其中的快递查询物流跟踪很有兴趣。 新手写小程序并不简单,这是我的第一次尝试学习到了很多。最近双十一过后,每天不是拿快递就是去拿快递的路上,翻开手机应用里的菜鸟裹裹查看快递是很方便的,当我在微信端搜索菜鸟...

    dinfer 评论0 收藏0
  • 写一个小程序菜鸟裹裹吧

    摘要:最近双十一过后,每天不是拿快递就是去拿快递的路上,翻开手机应用里的菜鸟裹裹查看快递是很方便的,当我在微信端搜索菜鸟裹裹小程序时,却没有发现,于是便想自己动手仿版写一个菜鸟裹裹的小程序,对其中的快递查询物流跟踪很有兴趣。 新手写小程序并不简单,这是我的第一次尝试学习到了很多。最近双十一过后,每天不是拿快递就是去拿快递的路上,翻开手机应用里的菜鸟裹裹查看快递是很方便的,当我在微信端搜索菜鸟...

    Michael_Lin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<