一、Tesseract简介
Tesseract是一个OCR库(OCR是英文Optical Character Recognition的缩写),它用来对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程,Tesseract是目前公认最优秀,识别相对精准的OCR库。
二、Tesseract的使用
1.下载并安装Tesseract:点击下载
2.在windows系统下设置环境变量:
#根据下载安装文件的路径配置环境变量set TESSDATA_PREFIX F:\Tesseract-OCR\
3.安装PyTesseract模块
pip install PyTesseract
4.在Python脚本中引入tesseract.exe应用程序的方式:
PyTesseract.PyTesseract.tesseract_cmd = r'F:\Tesseract-OCR\tesseract.exe'
5.案例演示
识别以下图片文字:
import PyTesseractfrom PIL import Image#1.引入Tesseract程序PyTesseract.PyTesseract.tesseract_cmd = r'F:\Tesseract-OCR\tesseract.exe'#2.使用Image模块下的open()函数打开图片image = Image.open('6.jpg',mode='r')print(image)#3.识别图片文字code= PyTesseract.image_to_string(image)print(code)
结果演示:
<PIL.JpegImagePlugin.JpegImagefile image mode=RGB size=611x210 at 0x1A5DFDCB4A8>
Google
注:tesseract-OCR引擎识别验证码有些无法识别,比如像豆瓣生成的验证码无法识别其内容,如果需要爬取豆瓣中的数据这时候就需要手动的输入验证码:
三、模拟登陆知乎源码
import requestsimport timeimport PyTesseractfrom PIL import Imagefrom bs4 import BeautifulSoupdef captcha(data): with open('captcha.jpg','wb') as fp: fp.write(data) time.sleep(1) image = Image.open("captcha.jpg") text = PyTesseract.image_to_string(image) print "机器识别后的验证码为:" + text command = raw_input("请输入Y表示同意使用,按其他键自行重新输入:") if (command == "Y" or command == "y"): return text else: return raw_input('输入验证码:')def zhihulogin(username,password): # 构建一个保存cookie值的session对象 sessiona = requests.Session() @R_502_5548@s = {'User-Agent':'Mozilla/5.0 (windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 firefox/47.0'} # 先获取页面信息,找到需要POST的数据(并且已记录当前页面的cookie) HTML = sessiona.get('https://www.zhihu.com/#signin',@R_502_5548@s=@R_502_5548@s).content # 找到 name 属性值为 _xsrf 的input标签,取出value里的值 _xsrf = BeautifulSoup(HTML,'lxml').find('input',attrs={'name':'_xsrf'}).get('value') # 取出验证码,r后面的值是Unix时间戳,time.time() captcha_url = 'https://www.zhihu.com/captcha.gif?r=%d&type=login' % (time.time() * 1000) response = sessiona.get(captcha_url,@R_502_5548@s = @R_502_5548@s) data = { "_xsrf":_xsrf,"email":username,"password":password,"remember_me":True,"captcha": captcha(response.content) } response = sessiona.post('https://www.zhihu.com/login/email',data = data,@R_502_5548@s=@R_502_5548@s) print response.text response = sessiona.get('https://www.zhihu.com/people/maozhaojun/activitIEs',@R_502_5548@s=@R_502_5548@s) print response.textif __name__ == "__main__": #username = raw_input("username") #password = raw_input("password") zhihulogin('[email protected]','ALAxxxxIME')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
您可能感兴趣的文章:Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录python下调用pytesseract识别某网站验证码的实现方法python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题 总结以上是内存溢出为你收集整理的python使用Tesseract库识别验证全部内容,希望文章能够帮你解决python使用Tesseract库识别验证所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)