Python處理驗證碼第一篇(pytesser初探及報錯處理)
前言:
春節期間,無法全身心投入地去寫爬蟲,那就玩玩驗證碼吧,應該比較有趣!
首次接觸驗證碼識別,用pytesser接觸一下最簡單的驗證碼先,程式碼參照:使用python以及工具包進行簡單的驗證碼識別。具體細節可以參見原文,裡面安裝和報錯處理沒有詳細記錄,我在此處主要記錄一下自己的安裝及處理過程。
效果:
可識別以下型別的驗證碼:
正文:
程式碼:
# encoding=utf-8
from PIL import Image
from pytesser import *
img = Image.open('驗證碼.jpg')
img_grey = img.convert('L')
threshold = 140
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
img_out = img_grey.point(table, '1')
text = image_to_string(img_grey) # 將圖片轉成字串
print text
安裝包:
需要安裝的包主要有兩個: PIL 和 pytesser 。
我的環境:64位win8系統、python2.7
PIL模組的安裝:
PIL 全稱 “Python Imaging Library”。
下載地址:傳送門
我下載了
執行報錯:Python version 2.7 required, which was not found in the registry.
網上找出原因:這個 PIL 安裝資源是給32位作業系統,32位和64位作業系統下的python在登錄檔中的路徑是不一樣的:
64位檢查登錄檔的位置是: HKLM|HKCU\SOFTWARE\
32位檢查登錄檔的位置是: HKLM|HKCU\SOFTWARE\wow6432node\
所以在64位系統中自然檢查不出有Python。
解決方案:
官方沒有提供64位的PIL庫,但非官方有:傳送門。
下載裡面的pillow庫:
然後在命令列安裝該模組:
pip install G:/For_Life/360download/Pillow-3.1.1-cp27-none-win_amd64.whl
注意:在 pillow 下載頁中有一行 “Use ‘from PIL import Image’ instead of ‘import Image’” ,所以一般方法安裝的 PIL 要匯入 Image 模組使用 “import Image” ,而此方法安裝的 PIL 要使用 “from PIL import Image” 。
更多請見:Windows安裝Python影象處理庫:PIL模組。
pytesser模組的安裝:
下載地址:傳送門。(此網址有時候會載入失敗,我將自己下載的放在微盤上了:傳送門 密碼:DPHE)
下載後得到 “pytesser_v0.0.1.zip”,是一個壓縮檔案,使用方法:
1、在 “D:\For_Software\others\Python_PyDev\Python\Lib\site-packages” 路徑下新建一個資料夾,命名 “pytesser” 。把 “pytesser_v0.0.1.zip” 裡的檔案解壓到該目錄:
2、將 “pytesser.py” 改名為 “__init__.py”。
3、開啟 “__init__.py” 檔案,將 “tesseract_exe_name” 變數的值改為 “‘D:/For_Software/others/Python_PyDev/Python/Lib/site-packages/pytesser/tesseract’”(原值為 “‘tesseract’”)。
4、pytesser 模組依賴於 PIL 模組,如果是按照上面的方法安裝 PIL 的話,需要把 “init.py” 檔案裡的 “import Image” 改成 “from PIL import Image” 。
(注意以上的路徑要改成自己的路徑,不要原搬照抄,應該不會這麼笨吧)
如果報錯:WindowsError: [Error 2]
可能的原因:python找不到 “tesseract.exe”,執行步驟3給python指定一個絕對路徑就可以了。
如果報錯:ImportError: No module named Image
可能的原因:在 pytesser 中的 “__init__.py” ,匯入 Image 的方式不對,見步驟4。
總結:
其實這只是處理最簡單的驗證碼而已,程式碼也很簡單,主要做兩個工作而已。第一個是將彩色圖片轉成灰度圖片併除噪,第二個是使用 pytesser.image_to_string() 將圖片中的字元提取出來。
處理的圖片也是非常有限的圖片上的數字或字母必須沒有變形(即使是沒有變形的情況下還會出現數字跟字母混淆的情況),驗證碼的背景不能太複雜,允許字型加上一些顏色。
這麼簡單的驗證碼估計很少見,不常用。所以這麼簡單的處理方法,我們看一看也就可以了,如果實際使用的話技術還有待深入。
轉載請註明出處,謝謝!(原文連結:http://blog.csdn.net/Bone_ACE/article/details/50436587)
相關文章
- python爬蟲之處理驗證碼Python爬蟲
- Python驗證碼識別處理例項Python
- Javascript程式碼報錯處理JavaScript
- 驗證碼影像處理(JavaScript 版)JavaScript
- Python 入門級報錯處理Python
- QTP處理驗證碼的一種方法QT
- Extjs報錯處理JS
- DG報錯的處理
- errpt報錯處理
- Python錯誤處理和異常處理(二)Python
- Python錯誤處理Python
- django-驗證碼/靜態檔案處理Django
- 詞典及容錯處理
- Gulp壓縮報錯處理
- rails gem報錯的處理AI
- 各種報錯處理方法
- nacos2.3 密碼驗證的處理過程密碼
- 自動化測試中的驗證碼處理
- Python web自動化爬蟲-selenium/處理驗證碼/XpathPythonWeb爬蟲
- 遠端連線錯誤程式碼及處理
- Too many open files報錯處理
- Mysql自動處理同步報錯MySql
- yum groupinstall報錯,處理方法
- ORA-02429 報錯處理
- mysql複製報錯案例處理MySql
- Android註解處理初探:使用註解處理器消除樣板程式碼Android
- PHP錯誤處理和異常處理PHP
- 錯誤處理
- python+selenium 處理圖片驗證碼,Image 點不出 crop 方法Python
- 自動化測試時對驗證碼的處理
- ORA 12592的報錯處理及補丁更新
- npm 安裝錯誤及處理方法NPM
- 批處理的聊天程式報錯求救!!!!!
- 錯誤碼全域性處理(一)
- 錯誤碼全域性處理(二)
- 爬蟲遇到頭疼的驗證碼?教你彈窗處理和驗證碼識別爬蟲
- Python影像處理初探:Pillow庫的基礎使用Python
- Python驗證碼識別:利用pytesser識別簡單圖形驗證碼Python