美文网首页数据分析
python3.5 tesseract-ocr 验证码识别错误

python3.5 tesseract-ocr 验证码识别错误

作者: 唐三七五 | 来源:发表于2018-05-23 10:33 被阅读0次

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


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

解决方案:

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

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

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)

这个方式非常有效


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

需要识别的验证码:

需要识别的验证码

代码:

#! -*- 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 验证码识别错误

    本文链接:https://www.haomeiwen.com/subject/towljftx.html