python验证码 识别代码不准_python3.5 tesseract-ocr 验证码识别错误解决方案

在通过python3.5爬取大众点评商户数据和用户数据的时候,由于请求频繁,中间会出现高频次的验证码的输入,使用了tesseract,然后就是各种问题,对于在使用python3.5 的tesseract-ocr识别时候常见的两个错误总结一下,这两个问题解决的我心力憔悴啊。后来兄弟520号结婚我就回家了,回到公司的第一天然后解决好了,要写点把这个记录下

1.FileNotFoundError:[WinError 2] 系统找不到指定的文件The system cannot find the file specified:

解决方案:

方案1.看了很多网上的贴吧,将tesseract.exe添加到系统的环境变量path中

f3b054dbf798?utm_campaign

添加tesseract环境变量

;C:\Program Files (x86)\Tesseract-OCR; 分号不能少,添加环境变量之后说是重启cmd或者pycharm,这个对我的是没有任何效果。折腾的我都重启电脑了,还是不行,然后采取其他方案。

方案2: 修改pytesseract.py文件,指定tesseract.exe安装路径

打开pytesseract的安装目录(这是我的目录:C:\Users\Administrator\venv\Lib\site-packages\pytesseract)找到 pytesseract.py文件

f3b054dbf798?utm_campaign

pytesseract.py

打开这个文件,找到

# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY

注释掉原本的

#tesseract_cmd='tesseract'

新增tesseract_cmd 为tesseract.exe的安装路径

tesseract_cmd= 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe‘

这样系统找不到指定的文件这个错误就可以解决了。

这是第二个错误

2.解决上面的问题后运行代码又出错

pytesseract.pytesseract.TesseractError: (1, 'Error opening data file C:\\Program Files (x86)\\Tesseract-OCR;/eng.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'eng\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

方案1:在网上各种游荡,添加 TESSDATA_PREFIX的环境变量,我也添加了,还是不可以,一直报上面的错误

f3b054dbf798?utm_campaign

TESSDATA_PREFIX添加环境变量

虽然没有解决问题,但是是个经验,所以留下了。

方案2:配置中指定tessdata-dir

在代码中添加

pytesseract.pytesseract.tesseract_cmd = 'c://Program Files (x86)//Tesseract-OCR//tesseract.exe'

tessdata_dir_config = '--tessdata-dir "c://Program Files (x86)//Tesseract-OCR//tessdata"'

然后在指定的image_to_string配置下

image_to_string(image, lang = 'eng', config=tessdata_dir_config)

这个方式非常有效

下面贴识别简单验证码的代码及结果:

需要识别的验证码:

f3b054dbf798?utm_campaign

需要识别的验证码

代码:

#! -*- coding:utf-8 -*-

import pytesseract

from PILimport Image

pytesseract.pytesseract.tesseract_cmd ='c://Program Files (x86)//Tesseract-OCR//tesseract.exe'

tessdata_dir_config ='--tessdata-dir "c://Program Files (x86)//Tesseract-OCR//tessdata"'

def main():

#这个图片路径是自己定义的

image = Image.open('E:\pycharmWorkspace\image\yanzhengma.png')

code = pytesseract.image_to_string(image, lang ='eng', config=tessdata_dir_config)

print (code)

if __name__ =='__main__':

main()

识别结果:

f3b054dbf798?utm_campaign

验证码识别结果

由于像素的影响,这个识别还不是很精确,会慢慢优化提高识别精度,大众点评是一块难啃的骨头啊,这篇文章到此为止,干活!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值