Python爬蟲4.5 — tesseract[圖片驗證碼識別]用法教程
綜述
本系列文檔用於對Python爬蟲技術的學習進行簡單的教程講解,鞏固自己技術知識的同時,萬一一不小心又正好對你有用那就更好了。
Python 版本是3.7.4
阻礙我們爬蟲的,有時候正式在登陸或者請求一些數據時候的圖形驗證碼,因此這裏我們講解一種能將圖片翻譯成文字的技術。將圖片翻譯成文字一般被稱爲光學文字識別(Optical Character Recognition),簡寫OCR
。實現OCR
的庫不是很多,特別是開源的,因爲這塊存在一定的技術壁壘(需要大量的數據、算法、機器學習、深度學習等知識),並且如果做好了具有很高的商業價值,因此開源的比較少。這裏介紹一個比較優秀的圖像識別開源庫:Tesseract
Tesseract
介紹
Tesseract是一個OCR庫,目前由谷歌維護的。Tesseract是目前公認最優秀、最準確的開源OCR庫。Tesseract具有很高的識別度,也具有很高的靈活性,它可以通過訓練識別任何字體。
安裝
Windows系統:
點擊下面鏈接,下載可執行文件,然後進行安裝即可(放在不需要權限的純英文路徑下):http://github.com/tesseract-ocr/ (或者使用這個鏈接:https://digi.bib.uni-mannheim.de/tesseract/)
Linux系統
可以從下面鏈接下載源碼自行編譯:http://github.com/tesseract-ocr/tesseract/wiki/Compiling ,或者在ubuntu
下通過以下命令進行安裝:
sudo apt install tesseract-ocr
Mac系統
用Homebrew
即可方便安裝:
brew install tesseract
設置環境變量
安裝完成後,如果想要在命令行中使用Tesseract
,那麼應該設置環境變量。Mac
和Linux
在安裝的時候就默認已經設置好了,在Windows
下把tesseract.exe
所在的路徑添加到PATH
環境變量中。
到這裏,我們就算安裝完成了,但是,我們的系統還是無法識別中文的,我們要去下載簡體漢字、繁體漢字語言包(其他語言的識別包下載地址:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files ),下載好之後放到安裝目錄的tessconfigs目錄下即可。還有一個環境變量需要設置的是,要把訓練的數據文件路徑也放到環境變量中。在環境變量中,添加一個TESSDATA_PREFIX=D:\Python\Tesseract-OCR\tessdata
(需要根據你的安裝路徑進行相應的調整)。
簡單使用
在命令行中使用tesseract識別圖像
如果想要在cmd
下能夠使用tesseract
命令,那麼需要把tesseract.exe
所在的目錄放到PATH
環境變量中(上文已經說過)。然後使用命令:
tesseract 圖片路徑地址 文件路徑地址
例如命令:
tesseract a.png a
那麼就會識別出a.png
中的圖片,並且把文字寫入到a.txt
中。如果不想寫入文件,直接顯示在終端,那麼不要加文件名就可以了。
代碼中使用tesseract識別圖像
在Python代碼中操作tesseract
需要安裝一個庫,叫做pytesseract
。通過pip
的方式即可安裝:
pip install pytesseract
並且,需要讀取圖片,還需要藉助一個第三方庫叫做PIL
。可以先通過pip list
查看是否已經安裝。要注意的是PIL
主要針對Python2,它並沒有跟隨python的進化而進化。有大師爲此,專門寫了一個針對python3的pillow模塊。所以,如果需要安裝python3對應的PIL,應該選擇安裝pillow。是同樣是通過pip
的方式安裝:
pip install PIL
pip install pillow
使用pytesseract
將圖片上的文字轉換爲文本文字的示例代碼如下:
# 導入所需庫
import pytesseract
from PIL import Image
# 指定tesseract.exe路徑
pytesseract.pytesseract.tesseract_cmd = r'D:\Python\Tesseract-OCR\tesseract.exe'
# 打開圖片
image = Image.open('1.png')
# 調用image_to_string識別圖片轉爲字符串
text = pytesseract.image_to_string(image)
print(text)
其他博文鏈接
- Python爬蟲1.1 — urllib基礎用法教程
- Python爬蟲1.2 — urllib高級用法教程
- Python爬蟲1.3 — requests基礎用法教程
- Python爬蟲1.4 — requests高級用法教程
- Python爬蟲2.1 — BeautifulSoup用法教程
- Python爬蟲2.2 — xpath用法教程
- Python爬蟲3.1 — json用法教程
- Python爬蟲3.2 — csv用法教程
- Python爬蟲3.3 — txt用法教程
- Python爬蟲4.1 — threading(多線程)用法教程
- Python爬蟲4.2 — ajax(動態網頁數據抓取)用法教程
- Python爬蟲4.3 — selenium基礎用法教程
- Python爬蟲4.4 — selenium高級用法教程