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,那麼應該設置環境變量。MacLinux在安裝的時候就默認已經設置好了,在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)

其他博文鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章