第一步安裝
Tesserocr的安裝
爬蟲過程中難免會遇到各種各樣的驗證碼,而大多數驗證碼還是圖形驗證碼,這時候我們可以直接用 OCR 來識別。
OCR
OCR,即 Optical Character Recognition,光學字符識別。是指通過掃描字符,然后通過其形狀將其翻譯成電子文本的過程。那么對于圖形驗證碼來說,它都是一些不規則的字符,但是這些字符確實是由字符稍加扭曲變換得到的內容。
例如這樣的驗證碼
image.png
image.png
對于這種驗證碼,我們便可以使用 OCR 技術來將其轉化為電子文本,然后爬蟲將識別結果提交給服務器,便可以達到自動識別驗證碼的過程。
Tesserocr 是 Python 的一個 OCR 識別庫,但其實是對 Tesseract 做的一層 Python API 封裝,所以它的核心是 Tesseract,所以在安裝 Tesserocr 之前我們需要先安裝 Tesseract,本節我們來了解下它們的安裝方式。
相關鏈接
- Tesserocr GitHub:https://github.com/sirfz/tesserocr
- Tesserocr PyPi:https://pypi.python.org/pypi/tesserocr
- Tesseract下載地址:http://digi.bib.uni-mannheim.de/tesseract
- Tesseract GitHub:https://github.com/tesseract-ocr/tesseract
- Tesseract 語言包:https://github.com/tesseract-ocr/tessdata
- Tesseract 文檔:https://github.com/tesseract-ocr/tesseract/wiki/Documentation
Windows下的安裝
在 Windows 下,首先需要下載 Tesseract,它為 Tesserocr 提供了支持,下載鏈接為:http://digi.bib.uni-mannheim.de/tesseract/。
點擊進入之后可以看到有各種 exe 的下載列表,在這里可以選擇下載 3.0 版本,如圖 1-24 所示為 3.05 版本。
其中文件名中帶有 dev 的為開發版本,不帶 dev 的為穩定版本,可以選擇下載不帶 dev 的最新版本,例如可以選擇下載 tesseract-ocr-setup-3.05.01.exe。
下載完成之后雙擊安裝即可,會出現如圖:
在安裝過程中可以勾選上 Additional language data 選項,安裝 OCR 識別支持的語言包,這樣 OCR 便可以識別多國語言。
接下來再安裝 Tesserocr 即可,直接使用 Pip 安裝:
pip install tesserocr pillow
Linux下的安裝
Linux下的安對于 Linux 來說,不同系統已經有了不同的發行包了,它可能叫做 tesseract-ocr 或者 tesseract,直接用對應的命令安裝即可。
Ubuntu、Debian、Deepin
安裝命令如下:
sudo apt-get install -y tesseract-ocr libtesseract-dev libleptonica-dev裝
CentOS、RedHat
安裝命令如下:
yum install -y tesseract
不同發行版本運行如上命令即可完成 Tesseract 的安裝。
安裝完成之后便可以調用 tesseract 命令了。
我們查看一下其支持的語言:
tesseract --list-langs
運行結果示例:
List of available languages (3):
eng
osd
equ
結果顯示其只支持幾種語言,如果我們想要安裝多國語言還需要安裝語言包,官方叫做 tessdata。
tessdata 的下載鏈接為:https://github.com/tesseract-ocr/tessdata。
利用 Git 命令將其下載下來并遷移到相關目錄即可,不同的版本遷移命令如下:
Ubuntu、Debian、Deepin
git clone https://github.com/tesseract-ocr/tessdata.git
sudo mv tessdata/* /usr/share/tesseract-ocr/tessdata
CentOS、RedHat
git clone https://github.com/tesseract-ocr/tessdata.git
sudo mv tessdata/* /usr/share/tesseract/tessdata
這樣就可以將下載下來的語言包全部安裝了。
這時我們重新運行列出所有語言的命令:
tesseract --list-lang:
結果如下:
List of available languages (107):
afr
amh
ara
asm
aze
aze_cyrl
bel
ben
bod
bos
bul
cat
ceb
ces
chi_sim
chi_tra
即可發現其列出的語言就多了非常多,比如 chi_sim 就代表簡體中文,這就證明語言包安裝成功了。
接下來再安裝 Tesserocr 即可,直接使用 Pip 安裝:
pip install tesserocr pillow
Mac下的安裝
Mac 下首先使用 Homebrew 安裝 Imagemagick 和 Tesseract 庫:
brew install imagemagick
brew install tesseract --all-languages
接下來再安裝 Tesserocr 即可:
pip3 install tesserocr pillow
這樣我們便完成了 Tesserocr 的安裝。
驗證安裝
接下來我們可以使用 Tesseract 和 Tesserocr 來分別進行測試。
下面我們以如下的圖片為樣例進行測試,如圖 1-26 所示:
圖片鏈接為:https://raw.githubusercontent.com/Python3WebSpider/TestTess/master/image.png,可以直接保存或下載。
我們首先用命令行進行測試,將圖片下載保存為 image.png,然后用 Tesseract 命令行測試,命令如下:
tesseract image.png result -l eng && cat result.txt
運行結果:
Tesseract Open Source OCR Engine v3.05.01 with Leptonica
Python3WebSpider
我們調用了 tesseract 命令,第一個參數為圖片名稱,第二個參數 result 為結果保存的目標文件名稱,-l 指定使用的語言包,在此使用 eng 英文,然后再用 cat 命令將結果輸出。
第二行的運行結果便是圖片的識別結果,Python3WebSpider。
我們可以看到這時已經成功將圖片文字轉為電子文本了。
然后我們還可以利用 Python 代碼來測試,這里就需要借助于 Tesserocr 庫了,測試代碼如下:
import tesserocr
from PIL import Image
image = Image.open('image.png')
print(tesserocr.image_to_text(image))
在這里我們首先利用 Image 讀取了圖片文件,然后調用了 tesserocr 的 image_to_text() 方法,再將將其識別結果輸出。
運行結果:
Python3WebSpider
另外我們還可以直接調用 file_to_text() 方法,也可以達到同樣的效果:
import tesserocr
print(tesserocr.file_to_text('image.png'))
運行結果:
Python3WebSpider
如果成功輸出結果,則證明 Tesseract 和 Tesserocr 都已經安裝成功。