利用tesseract-ocr進行驗證碼識別

由於爬蟲項目須要模擬登錄,但是有一個網站的登陸須要輸入驗證碼。其實這種登陸有2種解決方案,一種是利用cookie,一種是識別圖片。前者須要人工登陸一次,並且有時效限制,故不太現實。後者能夠,可是難點是如何識別出驗證碼。
這裏面就要介紹一個神器了,tesseract-ocr這個項目是一個開源項目,能夠用於圖像識別。不過這個項目如今託管於google,因此很差下載,你能夠搜一下,選擇在國內下載。http://download.csdn.net/detail/neal1991/9502931
一開始我以爲個人驗證碼還挺好識別的,由於都是數字,以下圖:
這裏寫圖片描述
可是我發覺直接來識別仍是來識別不了的,最好仍是先要對圖片進行一些預處理。說到圖片的預處理就要說到另一個軟件了,就是imagemagick,這個是一個開源的圖片處理項目,你能夠去http://www.imagemagick.org/script/binary-releases.php根據你本身的系統進行相應得下載。這個軟件還有相應的開發api,你能夠自行的根據須要去下載。記住,這個軟件安裝後,配置環境變量後,須要從新啓動的,一開始我還覺得是什麼問題呢。後來發現從新啓動以後,就生效了,能夠直接在cmd中使用。在這我就不說什麼別的了。
首先是對圖片進行預處理:php

convert 1.jpg -colorspace gray -normalize -threshold 50% 1.tif

這裏主要是先作一個灰度圖轉化,而後進行歸一化處理,最後設立一個閾值,進行二值化,這樣最後的結果仍是比較清晰的,以下圖:這裏寫圖片描述
而後再用tesseract進行識別:node

tesseract 1.tif result

是否是很簡單?
在github上面寫了一個nodejs的程序能夠直接執行,不過須要安裝nodejs,連接以下:
https://github.com/neal1991/code-recognitiongit

相關文章
相關標籤/搜索