Python实现轻松识别数百个快递单号

 更新时间:2022年06月29日 09:40:47   作者:朱小五  
当我们要寄出很多快递时,为了及时反馈物流信息,需要尽快将快递单号提取出来。这时用手动去识别真的太麻烦,所以本文将用Python实现轻松识别数百个快递单号,需要的可以参考一下

大家好,我是小五

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

前情提要

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

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

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

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

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

思考解决办法

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

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

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

  • 用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()函数,得到

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

识别条形码

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

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

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

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

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

小结

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

以上就是Python实现轻松识别数百个快递单号的详细内容,更多关于Python识别快递单号的资料请关注脚本之家其它相关文章!

相关文章

  • python中map、any、all函数用法分析

    python中map、any、all函数用法分析

    这篇文章主要介绍了python中map、any、all函数用法,实例分析了map、any、all函数的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Python中time与datetime模块使用方法详解

    Python中time与datetime模块使用方法详解

    这篇文章主要为大家详细介绍了Python中time与datetime模块使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Python实现文件内容批量追加的方法示例

    Python实现文件内容批量追加的方法示例

    这篇文章主要介绍了Python实现文件内容批量追加的方法,结合实例形式分析了Python文件的读写相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Python 任务自动化工具nox 的配置与 API详情

    Python 任务自动化工具nox 的配置与 API详情

    这篇文章主要介绍了Python 任务自动化工具nox 的配置与 API详情,Nox 会话是通过被@nox.session装饰的标准 Python 函数来配置的,具体详情下文相关介绍需要的小伙伴可以参考一下
    2022-07-07
  • python实现桌面壁纸切换功能

    python实现桌面壁纸切换功能

    这篇文章主要为大家详细介绍了python requests+pywin32实现桌面壁纸切换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Python类方法__init__和__del__构造、析构过程分析

    Python类方法__init__和__del__构造、析构过程分析

    这篇文章主要介绍了Python类方法__init__和__del__构造、析构过程分析,本文分析了什么时候构造、什么时候析构、成员变量如何处理、Python中的共享成员函数如何访问等问题,需要的朋友可以参考下
    2015-03-03
  • 利用Python实现kNN算法的代码

    利用Python实现kNN算法的代码

    这篇文章主要介绍了利用Python实现kNN算法的代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • pytorch lstm gru rnn 得到每个state输出的操作

    pytorch lstm gru rnn 得到每个state输出的操作

    这篇文章主要介绍了pytorch lstm gru rnn 得到每个state输出的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 解决python3中cv2读取中文路径的问题

    解决python3中cv2读取中文路径的问题

    今天小编就为大家分享一篇解决python3中cv2读取中文路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 重温Python基础之列表操作

    重温Python基础之列表操作

    这篇文章主要带大家来复习一下Python基础中的列表操作,不知道各位还记得多少呢?文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下
    2022-11-11

最新评论