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中


python3.5 tesseract-ocr 验证码识别错误解决方案_第1张图片
添加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文件

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的环境变量,我也添加了,还是不可以,一直报上面的错误


python3.5 tesseract-ocr 验证码识别错误解决方案_第2张图片
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)

这个方式非常有效



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

需要识别的验证码:

python3.5 tesseract-ocr 验证码识别错误解决方案_第3张图片
需要识别的验证码

代码:

#! -*- 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()

识别结果:


python3.5 tesseract-ocr 验证码识别错误解决方案_第4张图片
验证码识别结果

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

你可能感兴趣的:(python3.5 tesseract-ocr 验证码识别错误解决方案)