Python改变生活 | 轻松识别数百个快递单号
今天是Python改变生活
系列的第一篇,也是一个与你们有关的问题案例
前情提要
了解我的小伙伴可能都知道,小五经常给大家送书。最近一年,不算联合抽奖送书,单独我自购+出版社赞助已送出1000本书籍。
如果是自购的话,还需要自己联系快速小哥寄出书籍。
寄出后快递小哥会给我截图来反馈,然而我想要单号的时候就遇到问题了。
每次寄完书,我都只能得到n个截图(内含快递信息)。
为了及时反馈大家物流信息,我需要尽快将快递单号提取出来。
思考解决办法
每次大概都有十几到几十张截图,手动去识别真的太麻烦。
不如先看看每张截图大概是什么样子,再去想想批量处理的办法吧。
主要是为了批量获取图片中的快递单号,我想到了两个解决办法:
用python识别条形码来直接获得准确快递单号
用python调用ocr,识别截图中的快递单号文字
大家觉得哪个更简单更准确呢?
今天我先聊聊第一种方法的流程和踩坑经历。
遍历图片
首先,第一步需要先获取文件夹中的所有截图,再依次进行条形码识别。
具体操作可以参考注释
import osdef 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 cv2def 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改变生活 | 轻松识别数百个快递单号相关推荐
- Python改变生活 | OCR识别的花样使用
这是Python改变生活系列的第四篇,在上文Python改变生活 | 轻松识别数百个快递单号_中讲了一个需求的解决办法,即用python识别条形码来获取快递单号. 该问题我一共想了两个方案,所以今天接 ...
- Python识别快递单号(条形码识别、字符识别,Tesseract-OCR)
#识别快递单号 这项目大概是流水线上识别快递上的快递单号.尝试了解条形码的基本知识 我从这博客的三篇博文中很好的了解了识别条形码的相关知识--moverzp的博客 百度百科:条形码 条形码(barco ...
- 快递查询(快递单号智能识别/快递公司+快递单号)-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
更多资料请参考:www.woyaocha.net/product/express 查询说明 接口一:快递单号智能识别 快递单号智能识别,是根据查询的快递单号自动智能识别出该运单所属的快递公司,再获取快 ...
- Python实现圆通快递单号查询官方接口教程
此系列为代码语言与各大常用快递公司的接口教程,供各位程序员学习参考,后续我将会继续分享各语言的快递单号查询接口教程,敬请关注. 下面我们来说下具体操作过程,如何用Python实现圆通快递单号查询. 一 ...
- 使用 Python对接快递鸟快递单号查询api接口查找快递信息
源码地址:GitHub - iGordongwb/kdniao: 根据快递单号查找快递信息 接口源码包示例图: 快递单号识别api接口 使用工具: python3 快递鸟api 快递鸟官网 api文档 ...
- python 菜鸟联盟快递查询_快递单号查询接口-极兔速递
前言 看完快递鸟api极兔快递对接教程这篇文章,然后把源码复制到你的项目上,就能快速完成极兔快递接口对接.更适合刚入门的菜鸟,调用快递鸟的极兔快递查询API接口,能查询到极兔快递单号从收件.运输,到转 ...
- php 正则快递单号,正则表达式校验百世快递运单号
百世快递运单号规则 第一种:一位字母+12位数字,字母只能是ABDESs中的一个 第二种:BXA+10位数字 第三种:K8+11位数字 第四种:000+10位数字,三个数字0 . 第五种:02+11位 ...
- 怎样同时查询百世多个快递单号的物流信息并保存
如何在电脑上批量查询多个百世单号的物流信息,并将查询到的信息以导出表格的形式保存到电脑上呢?接下来随小编一起来操作. 批量查询百世物流 运行快递批量查询高手,点击"添加单号"功能 ...
- ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
最新文章
- Python数据处理入门教程!
- mongodb 结果二次调用_mongodb慢查询记录
- 【转】ActiveMQ消息传送机制以及ACK机制详解
- React Nativi 参考文章
- 树莓派:树莓派的刷机和登录,以及更新新版vim方便使用
- gan简介_GAN简介
- J - Borg Maze
- navicat 官方使用手册,中文版,快捷键大全
- 马斯克脑机接口_如何看待“马斯克:脑机接口或一年内植入人脑,可修复任何大脑问题”?...
- Oracle笔记:用户、权限及exp/imp数据
- HTML段落前面怎么加黑点,Word文档段落前面的那个小黑点,是怎么搞出来得呀?...
- 数据报表、数据分析、数据挖掘和商业智能,是什么关系?
- 黑盒测试用例编写八大方法
- 头文件中,#include使用引号“”和尖括号有什么区别?
- 项目总结(二) 网格化管理系统问题总结
- centos mysql 5.2.3 编译安装_在CentOS上编译安装MySQL 5.7.13步骤详解
- Libevent 学习七:Libevent 两个实例
- linux实训报告内容一万字,Linux实训报告.doc
- 统计图配色方案_填充
- hdu 1455 java_hdu 1455 Sticks
热门文章
- map平均准确率_MAP(Mean Average Precision)
- cufflinks基于dataframe数据绘制线图(line plot)、散点图(scatter plot)
- R卡方独立性检验(Chi-Square Test of Independence)
- 从RBM(受限玻尔兹曼机)开始、到深度信念网络(DBN)再到自动编码器(AE)
- mysql buffer size_优化mysql之key_buffer_size设置
- 图像浏览软件_FastStone Image Viewer5.5版
- 数字图像处理- 3.4 空间滤波 and 3.5 平滑空间滤波器
- STM32-USART接收程序
- 中科大计算机专硕英语,211科班一战394上岸中科大软院专硕2021
- mysql常用linux命令大全_Linux-MySQL常用命令(示例代码)