python爬虫实战-爬取微信公众号所有历史文章 - (03) python结合tesseract-ocr做图文识别(OCR)

http://efonfighting.imwork.net/

欢迎关注微信公众号“一番码客”获取免费下载服务源码,并及时接收最新文章推送

在这里插入图片描述

前面我们讲到了adb的封装,里面具体讲到到了在一副图片中寻找目标的坐标并点击。这篇文章我们讲讲对一副图片的特定区域做截取,并利用开源库做图纹识别。
要实现这个步骤的原因是,最初想实现爬取微信公众号历史文章这个功能时,一番没有抓包爬虫经验,于是为了获取历史文章的标题用于pdf打印时的命名,一番想到截图后对图片做图文识别,然后点击文章标题,进入到文章阅读界面然后结合目标图片识别“复制链接”来获取到文章的链接。

安装 tesseract-ocr

tesserat是一个开源的文字识别引擎,目前已经开发到4.0版本,训练支持了100+种的语言了。这里安装以ubunut18.04为例。

安装分为两部分:

  1. 安装引擎
    对于ubuntu18.04来说安装很简单,两条命令搞定:

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev

  • 安装需要识别语言的现有训练库:
    安装简体中文的识别库:

sudo apt install tesseract-ocr-chi-sim

如果是英文识别库:

sudo apt install tesseract-ocr-eng

如果是windows,下载对应的32位或64位安装包,然后将下载的语言识别库“xxx.traineddata”放到安装目录(比如C:\Program Files\Tesseract-OCR\tessdata)下。
对于mac或者其他版本linux系统的安装方式,当然包括windows详细安装教程,请参考tesseract-ocr官方github的wiki(当然是英文的啦)。

公众号后台回复关键字 “ tesseract-ocr ” 获取官方工程github地址和windows安装包、语言包。

安装完成之后你发现就可以用tesseract命令啦。
在这里插入图片描述

python结合pytesseract做图文识别

首先确保安装了python pytesseract包,

  • pycharm 请在setting里安装。
  • 终端安装直接 “pip3 install pytesseract”。

接下来就可以直接通过python调用pytesseract的接口做图文识别啦。下面以一幅手机屏幕截图为例。
在这里插入图片描述

  1. 这里标定每篇文章题目的范围,如图红框。
  2. test代码
def test():
    from PIL import Image
    import pytesseract
    import matplotlib.pyplot as plt

    #读取图片,并截取其中的一部分
    img = Image.open("/home/soy/Desktop/一番码客.jpg")
    grey = img.convert('L') # 只留取亮度信息,转换为黑白色,有利于文字识别
    cutPic = grey.crop((25, 270, 690, 540)) # 上图红框里的范围(x1,y1,x2,y2)

    #这里为了将所有非白色的像素点转换为纯黑色,有利于增高文字的锐度、清晰度。
    xSize = cutPic.size[0]
    ySize = cutPic.size[1]
    for y in range(ySize):
        for x in range(xSize):
            if(cutPic.getpixel((x,y)) != 255):
                cutPic.putpixel((x,y),0)

    #展示处理后的图像
    plt.imshow(cutPic)
    plt.show()

    #图文识别
    itemStr = pytesseract.image_to_string((cutPic), lang='chi_sim').replace(' ', '')
    print(itemStr)

    #文字拼接处理
    itemStrList = itemStr.split('\n',8)
    dateStr = itemStrList[len(itemStrList)-1]
    topicStr = ''
    for idx in range (len(itemStrList)-1):
        topicStr += itemStrList[idx]

    #处理后的文字
    print(dateStr+'_'+topicStr)
  1. 处理后图片:
    <img src="pictures/2019-04-13/tesseract_2.jpg" >

  2. 识别结果:
    <img src="pictures/2019-04-13/tesseract_3.jpg" >

结语

怎么样,用python做图文识别是不是超简单?这就是python的魅力所在啊。
那么获取每篇文章的思路就是:

  1. 通过OCR获取最上面一篇的文章标题;
  2. 点击进去,通过图像目标查找,点击“复制文章链接”按钮,并将链接传回PC保存;
  3. 返回,向下滑动页面刚好一栏标题,重复1。
  4. 通关!

人生的蜕变不知是否一定需要伴随着痛苦,但从很多经验来看,这条路是行得通的。
你承受了人生的痛苦,也经历着世间的繁华。无所谓不可承受之重。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python使用Tesseract-OCR进行光学字符识别的步骤如下: 1. 首先,你需要在命令终端中输入命令"tesseract -v"来查看Tesseract-OCR的版本信息。这可以确保你已经正确安装了Tesseract-OCR。\[1\] 2. 接下来,你需要安装pytesseract包。你可以使用pip命令来安装,例如"pip install pytesseract"。这个包将允许你通过Python程序调用Tesseract-OCR。\[2\] 3. 在安装完pytesseract之后,你可以编写一个简单的Python脚本来加载图像,并将其二值化,然后传入Tesseract-OCR进行字符识别。你可以使用pytesseract.image_to_string()函数来实现这一步骤。 4. 如果你在使用过程中遇到问题,例如找不到tesseract_cmd的路径,你可以按照以下解决方案进行操作:找到Python的安装路径下的pytesseract包,用文本编辑器打开,然后查找tesseract_cmd这一行。将原来的"tesseract_cmd = 'tesseract'"改为"tesseract_cmd = 'OCR的安装路径下的tessract.exe'"。这样就可以指定Tesseract-OCR的安装路径。\[3\] 总结起来,你需要确保已经正确安装了Tesseract-OCR,并安装了pytesseract包。然后,你可以编写Python脚本来调用Tesseract-OCR进行光学字符识别。如果遇到问题,可以按照上述解决方案进行处理。 #### 引用[.reference_title] - *1* *3* [Python使用Tesseract-OCR](https://blog.csdn.net/panda_225400/article/details/121183288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python中animation使用_在python代码中使用Tesseract OCR](https://blog.csdn.net/weixin_39623082/article/details/110417024)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一番码客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值