如何利用pytesseract库识别图形验证码 【python爬虫入门进阶】(15)

如何利用pytesseract库识别图形验证码 【python爬虫入门进阶】(15),第1张

如何利用pytesseract库识别图形验证码 【python爬虫入门进阶】(15)

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。
 1. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划
 2. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
❤️ 3. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当,持续更新中 。python爬虫入门进阶
❤️ 4. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 5. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门
关注下方公众号,众多福利免费嫖;加我VX进群学习,学习的路上不孤单

文章目录

tesseract库介绍tesseract的安装

windows下安装

安装tesseract下载并配置训练数据 linux下安装

安装tesseract mac下安装

安装tesseract下载训练数据 在命令行中使用tesseract

纯英文识别中文识别 通过Python代码来识别图片验证码

安装依赖简单的使用识别拉钩网的图形验证码 总结粉丝专属福利

tesseract库介绍

能提取图片中的文字的技术,将图片翻译成文字的技术一般被称为光学文字识别(Optical Character Recognition) 简写为OCR。而tesseract是一个OCR库,由谷歌赞助,是一个比较优秀的图像识别开源库。它具有很高的识别度,也具有很高的灵活性,可以通过训练识别任何字体。
tesseract库的官方文档

tesseract的安装 windows下安装 安装tesseract

windows下装装tesseract库只需要在 https://sourceforge.net/projects/tesseract-ocr-alt/files/ 下载名为 tesseract-ocr-setup-3.02.02.exe 的可执行文件。然后,一直点击下一步进行安装,不过需要注意的是安装的路径要放在不需要权限的英文路径下。

安装完成之后就是设置环境变量了。在Windows 下把tesseract.exe所在的路径添加到PATH环境变量中。

下载并配置训练数据

默认情况下tesseract只支持英文的识别,如果要想支持中文的识别的话,需要配置中文的训练数据 chi_sim.traineddata。文件的下载地址是:https://github.com/tesseract-ocr/tessdata

下载好之后就是将数据文件配置到环境变量中。就是在环境变量中新建一个环境变量比如这样: TESSDATA_PREFIX=D:teseractdata ,这里的D:teseractdata 需要改成你实际的数据文件的地址。

linux下安装 安装tesseract

在Ubuntu系统中可以通过apt包管理工具进行安装

sudo apt install tesseract-ocr

安装完成之后就已经配置好了环境变量。

mac下安装 安装tesseract

在mac下可以通过Homebrew来进行安装

brew install tesseract

安装完成之后就已经配置好了环境变量。

下载训练数据

数据文件可以通过下面

brew install tesseract-lang

命令下载全部的训练数据,下载完成之后的数据文件放在了/usr/local/share/tessdata/ 目录下。当然,你可以只下载chi_sim.traineddata 训练数据。

在命令行中使用tesseract

安装好tesseract库之后,我们就可以在命令行中使用tesseract库了。这里我找了两个图片进行测试。

纯英文识别

这里我在国外技术网上上截取了一个图片。将图片命名为 test1.png

我们可以通过tesseract来进行识别。首先,跳转到图片所在的目录,然后输入命令:tesseract test1.png test1。最后一个test1表示识别后的文本的存放地址,不需要加后缀名。执行该命令之后,tesseract会在图片所在的目录下生成一个test1.txt的文本文件。

识别的结果如下图所示:

中文识别

识别包含中文的图片需要事先下载中文训练数据chi_sim.traineddata。在输入命令时需要指定语言是:chi_sim。同样的,这里我也截取了一个中文图片。将该图片命名为:csdn.png。

同样的跳转到图片所在的目录,然后输入命令:tesseract csdn.png csdn -l chi_sim 通过-l 来指定识别的语言。执行该命令之后会在图片所在的目录下生成一个名为csdn.txt的文本文件。识别的结果如下图所示:

查看tesseract的命令参数可以通过tesseract -h 来进行查看

通过Python代码来识别图片验证码 安装依赖

在Python代码中 *** 作tesseract。需要安装一个库,叫做pytesseract。通过pip的方式即可安装:

pip install pytesseract

并且,需要读取图片,需要借助一个第三方库叫做PIL。PIL库的详细使用方法参见此文 ❤️【Python从入门到精通】(二十六)用Python的PIL库(Pillow)处理图像真的得心应手❤️。通过pip的方式安装:

pip install pillow

安装完成之后就可以愉快的使用tesseract库了。

简单的使用

这里还是以csdn.png图片为例进行说明。

from PIL import Image
import pytesseract
def main():
    image = Image.open("test_png/csdn.png")
    text = pytesseract.image_to_string(image,lang='chi_sim')
    print(text)
if __name__ == '__main__':
    main()

运行后的打印的结果是:

识别拉钩网的图形验证码

拉钩网图片验证码的生成接口是:https://passport.lagou.com/vcode/create?from=register。直接调用该接口返回的是一个包含四位随机字母的图形验证码的图片。每调用一次会变一次。

这里通过urllib的request请求类的urlretrieve方法来请求图形验证码,该方法可以将请求结果直接保存为captcha.png 图片。

from urllib.request import HTTPSHandler

from PIL import Image
import pytesseract
from urllib import request
import ssl

context = ssl._create_unverified_context()

def main():
    captchaUrl = r'https://passport.lagou.com/vcode/create?from=register'
    https_handler = HTTPSHandler(context=context)
    opener = request.build_opener(https_handler)
    opener.addheaders = [('User-agent',
                          'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36')]

    request.install_opener(opener)
    request.urlretrieve(captchaUrl, 'captcha.png')

    image = Image.open("captcha.png")
    image.show()
    text = pytesseract.image_to_string(image)
    print(text)

if __name__ == '__main__':
    for i in range(10):
        main()

运行十次的结果是:

除个别的图形验证码识别不正确。其余的都识别正确了。
不过需要注意的是,针对有干扰线的图形验证码,比如下面这种。
tesseract 是无能为力的,即不能识别包含干扰线的图形验证码。

总结

本文详细介绍了tesseract库的使用,整体来说tesseract库是一款优秀的OCR库。识别一些简单的图形验证码还是绰绰有余的。

粉丝专属福利

软考资料:实用软考资料

面试题:5G 的Java高频面试题

学习资料:50G的各类学习资料

脱单秘籍:回复【脱单】

并发编程:回复【并发编程】

											 验证码 可通过搜索下方 公众号 获取 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5701496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存