首页 热门物流资讯 Python改动日子 | OCR辨认的把戏运用

Python改动日子 | OCR辨认的把戏运用

人生苦短,快学Python! 这是Python改动日子系列的第四篇,在上文中讲了一个需求的解决办法,即用python辨认条形码来获取快递单号。 该问题我总共想了两个计划,所以今日接…

人生苦短,快学Python!

这是Python改动日子系列的第四篇,在上文中讲了一个需求的解决办法,即用python辨认条形码来获取快递单号。

该问题我总共想了两个计划,所以今日接着聊第二种解法。


前情概要


上一种办法将快递单号提取了出来,这次咱们期望能用OCR的办法将收件人与单号对应提取。



OCR辨认

运用Python进行精准文字的辨认,我优先引荐百度接口,详细装备过程能够检查之前的文章

装备成功后,能够得到AppID、API Key、Secret Key等要害信息。


百度OCR后回来的成果是一个列表。


所以咱们只需要先构建一个OCR辨认单个文字块的函数即可。

      #你的 APPID AK SK
APP_ID = '22704919'
API_KEY = '1f2wAABTYBmXkbx1qXbPXDm0'
SECRET_KEY = '**************'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

#百度接口辨认
def get_words_result(filePath):
    image = open(filePath, 'rb')
    image1 = image.read()
    text_list = client.general(image1)
    text_list = text_list['words_result'][0]['words']
    image.close()
    return text_list

后续等咱们再裁剪了要害图片,直接调用get_words_result()函数就能够辨认对应内容。


裁剪图片

裁剪图片这儿我运用的是PIL模块,它是python中的第三方图画处理库,能够做许多和图画处理相关的操作。


完成裁剪图片,需要在运用时引证Image,运用Image中的open(file)办法可回来翻开的图片,再合作crop()函数即可进行裁剪。

      crop([x1,y1,x2,y2])

crop里对应的数值为该方位图画在全体图片中左上和右下两个点的像素坐标

详细裁剪+辨认句子如下所示:

      def get_data(filePath):
    img = Image.open(filePath)
    ocr_results = []
    basic_path = r"D:\python_code\条形码\暂时"

    crop_1 = img.crop((242,739,678,813)) #crop裁剪
    crop_1.save(basic_path+"1.png")
    
    crop_2 = img.crop((88,1052,229,1108)) #crop裁剪
    crop_2.save(basic_path+"2.png")
    
    for i in range(13):
        imgpath = basic_path + str(i) + '.png'
        msg_info = get_words_result(imgpath) #调用函数辨认文字
        
        os.remove(imgpath) #删去暂时裁剪的图片
    time.sleep(3)
    return ocr_results

我在原文件夹中又新建了一个暂时文件夹"D:\python_code\条形码\暂时",用来寄存暂时裁剪的图片12。然后调用ocr函数顺次辨认两张图片,并将成果存到列表ocr_results中。


最终,运用os模块的remove()函数删去本次暂时裁剪生成的两张图片。


批量辨认

通过前面的尽力,批量辨认几乎垂手而得。

仍是先os遍历图片!这次不再触及中文途径问题,所以不需要改名操作。

      #遍历图片
jpgs = []
path = os.getcwd()
for i in os.listdir(path):  #获取文件列表
    

#用于贮存辨认成果
data_m = pd.DataFrame(columns=['expres','sname'])

#批量辨认
for i in jpgs:
    a = get_data(i)
    data_m.loc[len(data_m)] = a
data_m

履行!

当当当!


如上图所示,咱们不只将快递单号辨认了出来,与之对应的收件人信息也被一应取出👍

对我来说,大大提升了工作效率。



小结

整个事例,咱们共运用了两种办法来解决问题,各自都有其优缺点。

  • 第一种,辨认条形码100%精确,但其只获得了快递单号。

  • 第二种,辨认文字有几率出现问题,长处是能够一起获取对应的收件人信息。

不过小五采用了裁剪要害图片的办法,大大提升了OCR的精准度。最终我自己也是挑选了第二种办法,来方便给我们寄书后及时反应快递单号。

精选文章

        
系列视频|Python网络爬虫与文本数据剖析
语法最简略的微博通用爬虫weibo_crawler
hiResearch 界说自己的科研主页
大邓github汇总, 觉得有用记住star
multistop ~ 多语言停用词库
Jaal 库 轻松制作动态交际网络联系图

来自kaggle最佳数据剖析实践
B站视频 | Python自动化工作
SciencePlots | 科研款式绘图库
运用streamlit上线中文文本剖析网站
bsite库 | 收集B站视频信息、谈论数据
texthero包 | 支撑dataframe的文本剖析包
爬虫实战 | 收集可视化知乎问题的答复
reticulate包 | 在Rmarkdown中调用Python代码
plydata库 | 数据操作管道操作符
plotnine: Python版的ggplot2作图库
读完本文你就了解什么是文本剖析
文本剖析在经管领域中的使用概述  
总述:文本剖析在市场营销研讨中的使用
plotnine: Python版的ggplot2作图库
Wow~70G上市公司定时陈述数据集
美丽~pandas能够无缝联接Bokeh  
YelpDaset: 酒店管理类数据集10+G  











    ”和“



    在看



    ”是更好的支撑持





本文来自网络,不代表快递资讯网立场。转载请注明出处: http://www.llaiot.com/popular-logistics-information/2835.html
上一篇
下一篇

为您推荐

返回顶部