在通過(guò)python3.5爬取大眾點(diǎn)評(píng)商戶(hù)數(shù)據(jù)和用戶(hù)數(shù)據(jù)的時(shí)候荡含,由于請(qǐng)求頻繁了罪,中間會(huì)出現(xiàn)高頻次的驗(yàn)證碼的輸入镶殷,使用了tesseract蜜托,然后就是各種問(wèn)題弟疆,對(duì)于在使用python3.5 的tesseract-ocr識(shí)別時(shí)候常見(jiàn)的兩個(gè)錯(cuò)誤總結(jié)一下,這兩個(gè)問(wèn)題解決的我心力憔悴啊盗冷。后來(lái)兄弟520號(hào)結(jié)婚我就回家了怠苔,回到公司的第一天然后解決好了,要寫(xiě)點(diǎn)把這個(gè)記錄下
1.FileNotFoundError:[WinError 2] 系統(tǒng)找不到指定的文件The system cannot find the file specified:
解決方案:
方案1.看了很多網(wǎng)上的貼吧仪糖,將tesseract.exe添加到系統(tǒng)的環(huán)境變量path中
;C:\Program Files (x86)\Tesseract-OCR; 分號(hào)不能少柑司,添加環(huán)境變量之后說(shuō)是重啟cmd或者pycharm,這個(gè)對(duì)我的是沒(méi)有任何效果锅劝。折騰的我都重啟電腦了攒驰,還是不行,然后采取其他方案故爵。
方案2: 修改pytesseract.py文件玻粪,指定tesseract.exe安裝路徑
打開(kāi)pytesseract的安裝目錄(這是我的目錄:C:\Users\Administrator\venv\Lib\site-packages\pytesseract)找到 pytesseract.py文件
打開(kāi)這個(gè)文件,找到
# 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‘
這樣系統(tǒng)找不到指定的文件這個(gè)錯(cuò)誤就可以解決了。
這是第二個(gè)錯(cuò)誤
2.解決上面的問(wèn)題后運(yùn)行代碼又出錯(cuò)
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:在網(wǎng)上各種游蕩劲室,添加 TESSDATA_PREFIX的環(huán)境變量伦仍,我也添加了,還是不可以很洋,一直報(bào)上面的錯(cuò)誤
雖然沒(méi)有解決問(wèn)題充蓝,但是是個(gè)經(jīng)驗(yàn),所以留下了喉磁。
方案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)
這個(gè)方式非常有效
下面貼識(shí)別簡(jiǎn)單驗(yàn)證碼的代碼及結(jié)果:
需要識(shí)別的驗(yàn)證碼:
代碼:
#! -*- 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():
#這個(gè)圖片路徑是自己定義的
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()
識(shí)別結(jié)果:
由于像素的影響谓苟,這個(gè)識(shí)別還不是很精確,會(huì)慢慢優(yōu)化提高識(shí)別精度协怒,大眾點(diǎn)評(píng)是一塊難啃的骨頭啊涝焙,這篇文章到此為止,干活孕暇!