阻礙咱們爬蟲的。有時候正是在登陸或者請求一些數據時候的圖形驗證碼。所以這裏咱們講解一種能將圖片翻譯成文字的技術。將圖片翻譯成文字通常被成爲光學文字識別(Optical Character Recognition),簡寫爲OCR
。實現OCR
的庫不是不少,特別是開源的。由於這塊存在必定的技術壁壘(須要大量的數據、算法、機器學習、深度學習知識等),而且若是作好了具備很高的商業價值。所以開源的比較少。這裏介紹一個比較優秀的圖像識別開源庫:Tesseract。linux
Tesseract是一個OCR庫,目前由谷歌贊助。Tesseract是目前公認最優秀、最準確的開源OCR庫。Tesseract具備很高的識別度,也具備很高的靈活性,他能夠經過訓練識別任何字體。git
在如下連接下載可執行文件,而後一頓點擊下一步安裝便可(放在不須要權限的純英文路徑下):
https://github.com/tesseract-ocr/github
能夠在如下連接下載源碼自行編譯。
https://github.com/tesseract-ocr/tesseract/wiki/Compiling
或者在ubuntu
下經過如下命令進行安裝:算法
sudo apt install tesseract-ocr
用Homebrew
便可方便安裝:shell
brew install tesseract
安裝完成後,若是想要在命令行中使用Tesseract
,那麼應該設置環境變量。Mac
和Linux
在安裝的時候就默認已經設置好了。在Windows
下把tesseract.exe
所在的路徑添加到PATH
環境變量中。ubuntu
還有一個環境變量須要設置的是,要把訓練的數據文件路徑也放到環境變量中。
在環境變量中,添加一個TESSDATA_PREFIX=C:\path_to_tesseractdata\teseractdata
。windows
若是想要在cmd
下可以使用tesseract
命令,那麼須要把tesseract.exe
所在的目錄放到PATH
環境變量中。而後使用命令:tesseract 圖片路徑 文件路徑
。
示例:app
tesseract a.png a
那麼就會識別出a.png
中的圖片,而且把文字寫入到a.txt
中。若是不想寫入文件直接想顯示在終端,那麼不要加文件名就能夠了。機器學習
在Python
代碼中操做tesseract
。須要安裝一個庫,叫作pytesseract
。經過pip
的方式便可安裝:學習
pip install pytesseract
而且,須要讀取圖片,須要藉助一個第三方庫叫作PIL
。經過pip list
看下是否安裝。若是沒有安裝,經過pip
的方式安裝:
pip install PIL
使用pytesseract
將圖片上的文字轉換爲文本文字的示例代碼以下:
# 導入pytesseract庫 import pytesseract # 導入Image庫 from PIL import Image # 指定tesseract.exe所在的路徑 pytesseract.pytesseract.tesseract_cmd = r'D:\ProgramApp\TesseractOCR\tesseract.exe' # 打開圖片 image = Image.open("a.png") # 調用image_to_string將圖片轉換爲文字 text = pytesseract.image_to_string(image) print(text)
pytesseract
處理拉勾網圖形驗證碼:import pytesseract from urllib import request from PIL import Image import time pytesseract.pytesseract.tesseract_cmd = r"D:\ProgramApp\TesseractOCR\tesseract.exe" while True: captchaUrl = "https://passport.lagou.com/vcode/create?from=register&refresh=1513081451891" request.urlretrieve(captchaUrl,'captcha.png') image = Image.open('captcha.png') text = pytesseract.image_to_string(image,lang='eng') print(text) time.sleep(2)