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识别快递单号的资料请关注我们其它相关文章!

(0)

相关推荐

  • 基于Python实现快递信息提取

    目录 前言 一.思路 二.解决方案 三.小小花絮 四.总结 前言 前几天在Python交流群里边,有个叫[^-^]的粉丝分享了一道Python基础的题目,跟快递信息有关的,题目如下: 现在想要达到的效果如下: 一.思路 针对这个问题,首先需要读取列表的信息,之后对列表进行切割,获取列表中的省或者直辖市信息,之后再判断省位信息中是否包含在地址信息中,使用列表追加的方法,进行处理,这里经常会用到字典和列表来存储信息,屡试不爽. 二.解决方案 针对该问题,粉丝[^-^]给出了解决方法,直接上代码如下:

  • Python识别快递条形码及Tesseract-OCR使用详解

    识别快递单号 这次跟老师做项目,这项目大概是流水线上识别快递上的快递单号.首先我尝试了解条形码的基本知识 百度百科:条形码 条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案.条形码可以标出物品的生产国.制造厂家.商品名称.生产日期.图书分类号.邮件起止地点.类别.日期等许多信息,因而在商品流通.图书管理.邮政管理.银行系统等许多领域都得到广泛的应用. 条形码有

  • Python PaddleNLP信息抽取提取快递单信息

    目录 5 条标注数据,搞定物流快递单信息抽取 智能立体库盘点 近几年,制造业作为国民经济主体,是国家创造力.竞争力和综合国力的重要体现.作为制造强国建设的主攻方向,可以说,智能制造发展水平关乎我国未来制造业的全球地位. 制造业与物流结合紧密,随着制造业的高速发展,对自动化率.全产业链协同和生产效率再提高等方向均提出了更高的要求,需要物流仓储能够匹配相应的生产节奏. 同时,据统计,我国制造业生产成本中,物流占比高达三成,降低物流成本成为了制造业利润提升的关键一环. 今天,我将基于智能制造 - 精益

  • 使用python自动追踪你的快递(物流推送邮箱)

    前言 最近国内疫情状况好转,快递业也逐渐恢复,大家的快递是不是跑起来了?本文就来讲解如何让 python自动为你查询快递信息 ,并在物流发生更新或者到达指定地点时第一时间将 物流推送至你的邮箱 其实并不复杂,只需要两步即可搞定: 爬取物流动态信息 将信息推送至邮箱 物流追踪 先说一下走过的坑,在一开始的思路就是去找个快递查询的网站查一下快递,然后抓一下包就能拿到我们需要的内容,然后写个爬虫去追踪快递信息,结果一百度发现基本国内查快递的网站用的都是快递100的API,申请个API还要提供一个网站供

  • 我的快递一个月没动静于是赶紧上线python快递查询系统

    导语 ​ 随着网购的广泛普及,现在大部分年轻人都喜欢上了网购的方式. 很多东西物美价廉,出不出户也能满足你的购买需求! 尤其是中秋来临,哪些假期短回不了家的也想给家人带点儿中秋礼物~ 这不?赶上中秋了,之前给家里寄东西的时候就出现过几次,物流信息一直没更新,不清楚东西到哪儿了,问卖家:说有时候上面没更新,但是到你家楼下了会打电话让你取快递的~​ ​ 果然,emmmmmm,"打扰了!!"不知道你们遇到过没?? 后来小编在一个专门全国查询快递的网站找到了物流信息23333,感觉这还是蛮实用

  • python实现快递价格查询系统

    本文实例为大家分享了python实现快递价格查询系统的具体代码,供大家参考,具体内容如下 一.代码 #--author--张俊杰@Nick #系统提示 print("欢迎来到快递系统!") #死循环 while 1==1: #简单交互,键入值 weight=int(input("请输入重量(千克): ")) num=input("请输入地点编号(1.其它 2.东三省/宁夏/青海/海南 3.新疆/西藏 4.港澳台/国外):") #定义参数 p=0

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

    目录 前情提要 思考解决办法 遍历图片 识别条形码 小结 大家好,我是小五 这是Python改变生活系列的第三篇,也是一个与你们有关的问题案例. 前情提要 了解我的小伙伴可能都知道,小五经常给大家送书.最近一年,不算联合抽奖送书,单独我自购+出版社赞助已送出1000本书籍. 如果是自购的话,还需要自己联系快速小哥寄出书籍. 寄出后快递小哥会给我截图来反馈,然而我想要单号的时候就遇到问题了. 每次寄完书,我都只能得到n个截图(内含快递信息). 为了及时反馈大家物流信息,我需要尽快将快递单号提取出来

  • php快递单号查询接口使用示例

    通过本接口可以查询圆通快递.申通快递.ems快递.韵达快递等快递单号查询信息,无需其他额外开发,非常方便首先到www.aikuaidi.cn上注册个账号,使用key! 复制代码 代码如下: <?php/** * 查询物流信息 */define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); if ($id = intval($_REQUEST['id'])) {    $sql_select = 'SELEC

  • Android实现快递单号查询快递状态信息

    今天介绍一个自己做的快递单号查询的简单APP,供大家参考.由于需要使用http和json,本文在build.gradle(module:app)添加了okhttp3依赖和gson依赖. dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group:

  • mpvue实现微信小程序快递单号查询代码

    mpvue是什么? mpvue 是一套定位于开发小程序的前端开发框架,其核心目标是提高开发效率,增强开发体验.使用该框架,开发者只需初步了解小程序开发规范.熟悉 Vue.js 基本语法即可上手.框架提供了完整的 Vue.js 开发体验,开发者编写 Vue.js 代码,mpvue 将其解析转换为小程序并确保其正确运行.此外,框架还通过 vue-cli 工具向开发者提供 quick start 示例代码,开发者只需执行一条简单命令,即可获得可运行的项目. mpvue简介点击查看:http://mpv

  • javascript实现京东快递单号的查询效果

    案例:模拟京东快递单号的查询效果,供大家参考,具体内容如下 要求:当我们在文本框中输入内容时,文本框上面自动显示大字号的内容 分析: 输入内容时,上面的大盒子会自动显示出来(这里字号更大) 表单检测用户输入,给表单添加键盘事件 同时把快递单号里面的值(value)获取过来复制给大盒子作为内容 如果快递单号里面内容为空,就隐藏大盒子 当失去焦点,大盒子也隐藏 注意:keydown 和 keypress 在文本框里面的特点 : 他们两个事件触发的时候,文字还没有落入文本框中,keyup 事件触发的时

  • JS模拟实现京东快递单号查询

    本文实例为大家分享了JS实现京东快递单号查询的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta h

  • JavaScript实现京东快递单号查询

    JavaScript网页制作–京东快递单号查询,供大家参考,具体内容如下 上篇讲到了京东网页的一个可能不被大多数人熟知的小功能,S键自动获得焦点,相比于那个功能,这个快递单号查询的功能可能更明了一点,虽然我也觉得很鸡肋.在网页搜索京东快递单号查询后,会出现这样的一个功能,当你在快递单号栏输入快递单号的时候,上方会出现一个较大的文本框,用较大的字体显示出你输入的快递单号.(虽然我觉得字号也没有差很多) 功能实现: 1.在输入快递单号的时候,上方出现一个盒子,这个盒子的字号更大. 2.表单检测用户输

  • 利用JavaScript模拟京东快递单号查询效果

    1.上面放大框开始是隐藏的,当输入单号后,就显示,并且里面的内容是输入框的内容的字体的放大 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="vi

  • js实现京东快递单号查询

    本文实例为大家分享了js实现京东快递单号查询的具体代码,供大家参考,具体内容如下 1.实现效果: 当文本框中输入文字时,上面有一个放大文字的框中显示文本框内容.失去焦点时,放大文字的框消失,获得焦点时,放大文字的框显示. 2.案例分析 3.代码实现 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta http-e

  • python调用文字识别OCR轻松搞定验证码

    今天带你们去研究一个有趣的东西,文字识别OCR.不知道你们有没有想要识别图片,然后读出文字的功能.例如验证码,如果需要自动填写的话就需要这功能.还有很多种情况需要这功能的. 我们可以登录百度云,然后看看里面的接口文档.接口功能还是有比较丰富的应用场景的. # encoding:utf-8 import requests import base64 ''' 通用文字识别 ''' request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/gene

随机推荐