該驗證碼插件為《完美驗證碼識別系統V3.2.1》的python封裝,提供給UiBot實現需驗證碼識別的場景的解決方案。
載入識別庫
LoadDat(datPath, password)
函數說明:
從文件中載入識別庫文件,成功返回True,否則返回False。參數:
參數名 類型 說明 datPath 文本型 識別庫文件所在全路徑 password 文本型 識別庫調用密碼 返回值:
返回結果 類型 說明 True boolean型 載入識別庫成功 False boolean型 載入識別庫失敗 示例:
import wmcode // 識別庫路徑 Dim datPath = "d:\\demo\\遼寧-12345606.dat" // 識別庫密碼 Dim password = "12345606" // 字庫標識 Dim flag // 加載識別庫 flag = wmcode.LoadDat(datPath,password) If flag TracePrint("識別庫加載成功") else TracePrint("識別庫加載失敗") end if
LoadDatEx(datPath, password)
函數說明:
從文件中載入識別庫文件,成功返回字庫實例Id,失敗返回-1。
該函數用於多個字庫同時使用場景。根據字庫id對不同的圖片進行識別。參數:
參數名 類型 說明 datPath 文本型 識別庫文件所在全路徑 password 文本型 識別庫調用密碼 返回值:
返回結果 類型 說明 字庫id 整數型 載入識別庫成功,返回字庫id -1 整數型 載入識別庫失敗 示例:
import wmcode // 識別庫路徑 Dim datPath = "d:\\demo\\遼寧-12345606.dat" // 識別庫密碼 Dim password = "12345606" // 字庫標識 Dim flag // 加載識別庫 flag = wmcode.LoadDatEx(datPath,password) If flag > -1 TracePrint("識別庫加載成功,字庫id為:" & flag) else TracePrint("識別庫加載失敗") end if
設定識別庫選項
SetWmOption(OptionIndex, OptionValue)
函數說明:
設定識別庫選項。設定成功返回真,否則返回假。參數:
參數名 類型 說明 OptionIndex 整數型 識別庫文件所在全路徑 OptionValue 整數型 識別庫調用密碼 參數取值范圍:
- [x] 返回方式
OptionIndex OptionValue 默認值 說明 1 0 0 直接返回驗證碼 1 1 0 返回驗證碼字符和矩形范圍。例如:S,10,11,12,13\|A,1,2,3,4 表示識別到文本 S >>左邊橫坐標10,左邊縱坐標11,右邊橫坐標,右邊縱坐標12 1 2 0 返回驗證碼字符和總體信任度。例如:abcd\|98 表示識別結果abcd,總體信任度98 1 3 0 返回驗證碼字符和矩形范圍形和總體信任度。例如:S,10,11,12,13\|A,1,2,3,4\|98 >>表示識別到文本 S 左邊橫坐標10,左邊縱坐標11,右邊橫坐標,右邊縱坐標12....總體信任度為98
- [x] 識別方式
可以進行分割的驗證碼,建議優先使用分割識別,因為分割后不僅能提高識別率,而且還能提高識別速度
OptionIndex OptionValue 默認值 說明 2 0 0 整體識別 2 1 0 連通分割識別 2 2 0 縱分割識別 2 3 0 橫分割識別 2 4 0 橫縱分割識別
- [x] 識別模式
識圖模式指的是背景白色視為透明不進行對比,識字模式指的是白色不視為透明,也加入對比。
絕大多數我們都是使用識圖模式,但是有少數部分驗證碼,使用識字模式更佳。
OptionIndex OptionValue 默認值 說明 3 0 0 識圖模式 3 1 0 識字模式
- [x] 識別加速
一般建議開啟加速功能,開啟后對識別率幾乎不影響。而且能提高3-5倍識別速度。
OptionIndex OptionValue 默認值 說明 4 0 0 不加速 4 1 0 使用加速
- [x] 加速返回
使用加速返回一般用在粗體字識別的時候,可以大大提高識別速度,但是使用后,會稍微影響識別率。識別率有所下降。一般不是粗體字比較耗時的驗證碼,一般不用開啟
OptionIndex OptionValue 默認值 說明 5 0 0 不加速返回 5 1 0 使用加速返回
- [x] 最小相似度
OptionIndex OptionValue 默認值 說明 6 0~100 90 相似度值,值越大越嚴格
- [x] 字符間隙
如果字符重疊,根據實際情況填寫。如:-3允許重疊3像素;如果不重疊的話,直接寫0。
注意:重疊和粘連概念不一樣,粘連的話,其實字符間隙為0。
OptionIndex OptionValue 默認值 說明 7 -10~0 0 字符重疊間隙 返回值:
返回結果 類型 說明 True boolean型 設置成功 False boolean型 設置失敗 示例:
import wmcode // 識別庫路徑 Dim datPath = "d:\\demo\\遼寧-12345606.dat" // 識別庫密碼 Dim password = "12345606" // 字庫標識 Dim flag // 加載識別庫 flag = wmcode.LoadDat(datPath,password) // 設置“返回方式”為:返回驗證碼字符和矩形范圍 wmcode.SetWmOption(1,1) // 設置“識別方式”為:縱分割識別 wmcode.SetWmOption(2,2) If flag TracePrint("識別庫加載成功") else TracePrint("識別庫加載失敗") end if
SetWmOptionEx(wmid, OptionIndex, OptionValue)
函數說明:
設定指定id的識別庫選項。設定成功返回真,否則返回假。參數:
參數名 類型 說明 wmid 整數型 字庫id(LoadDatEx返回的字庫id) OptionIndex 整數型 識別庫文件所在全路徑 OptionValue 整數型 識別庫調用密碼 參數取值范圍:
- [x] 返回方式
OptionIndex OptionValue 默認值 說明 1 0 0 直接返回驗證碼 1 1 0 返回驗證碼字符和矩形范圍。例如:S,10,11,12,13\|A,1,2,3,4 表示識別到文本 S >>左邊橫坐標10,左邊縱坐標11,右邊橫坐標,右邊縱坐標12 1 2 0 返回驗證碼字符和總體信任度。例如:abcd\|98 表示識別結果abcd,總體信任度98 1 3 0 返回驗證碼字符和矩形范圍形和總體信任度。例如:S,10,11,12,13\|A,1,2,3,4\|98 >>表示識別到文本 S 左邊橫坐標10,左邊縱坐標11,右邊橫坐標,右邊縱坐標12....總體信任度為98
- [x] 識別方式
可以進行分割的驗證碼,建議優先使用分割識別,因為分割后不僅能提高識別率,而且還能提高識別速度
OptionIndex OptionValue 默認值 說明 2 0 0 整體識別 2 1 0 連通分割識別 2 2 0 縱分割識別 2 3 0 橫分割識別 2 4 0 橫縱分割識別
- [x] 識別模式
識圖模式指的是背景白色視為透明不進行對比,識字模式指的是白色不視為透明,也加入對比。
絕大多數我們都是使用識圖模式,但是有少數部分驗證碼,使用識字模式更佳。
OptionIndex OptionValue 默認值 說明 3 0 0 識圖模式 3 1 0 識字模式
- [x] 識別加速
一般建議開啟加速功能,開啟后對識別率幾乎不影響。而且能提高3-5倍識別速度。
OptionIndex OptionValue 默認值 說明 4 0 0 不加速 4 1 0 使用加速
- [x] 加速返回
使用加速返回一般用在粗體字識別的時候,可以大大提高識別速度,但是使用后,會稍微影響識別率。識別率有所下降。一般不是粗體字比較耗時的驗證碼,一般不用開啟
OptionIndex OptionValue 默認值 說明 5 0 0 不加速返回 5 1 0 使用加速返回
- [x] 最小相似度
OptionIndex OptionValue 默認值 說明 6 0~100 90 相似度值,值越大越嚴格
- [x] 字符間隙
如果字符重疊,根據實際情況填寫。如:-3允許重疊3像素;如果不重疊的話,直接寫0。
注意:重疊和粘連概念不一樣,粘連的話,其實字符間隙為0。
OptionIndex OptionValue 默認值 說明 7 -10~0 0 字符重疊間隙 返回值:
返回結果 類型 說明 True boolean型 設置成功 False boolean型 設置失敗 示例:
import wmcode // 識別庫路徑 Dim datPath = "d:\\demo\\遼寧-12345606.dat" // 識別庫密碼 Dim password = "12345606" // 字庫標識 Dim flag // 加載識別庫 flag = wmcode.LoadDatEx(datPath,password) // 設置“返回方式”為:返回驗證碼字符和矩形范圍 wmcode.SetWmOptionEx(flag,1,1) // 設置“識別方式”為:縱分割識別 wmcode.SetWmOptionEx(flag,2,2) If flag > -1 TracePrint("識別庫加載成功,字庫id為:" & flag) else TracePrint("識別庫加載失敗") end if
識別驗證碼
getCodeFormFile(img)
函數說明:
識別一個圖像文件,返回識別的驗證碼。參數:
參數名 類型 說明 img 文本型 圖像文件所在全路徑 返回值:
返回結果 類型 說明 驗證碼字符串 文本型 識別庫成功,返回驗證碼文字 "" 文本型 識別失敗 示例:
import wmcode // 識別庫路徑 Dim datPath = "d:\\demo\\遼寧-12345606.dat" // 識別庫密碼 Dim password = "12345606" // 待識別驗證碼圖片路徑 dim imgPath = "d:\\demo\\ln.bmp" // 字庫標識 Dim flag, vcode // 加載識別庫 flag = wmcode.LoadDat(datPath,password) If flag // 識別圖片 vcode = wmcode.getCodeFormFile(imgPath) TracePrint("識別庫加載成功,驗證碼:" & vcode) else TracePrint("識別庫加載失敗") end if
getCodeFormFileEx(wmid, img)
函數說明:
識別一個圖像文件,返回識別的驗證碼。參數:
參數名 類型 說明 wmid 整數型 字庫id(LoadDatEx返回的字庫id) img 文本型 圖像文件所在全路徑 返回值:
返回結果 類型 說明 驗證碼字符串 文本型 識別庫成功,返回驗證碼文字 "" 文本型 識別失敗 示例:
import wmcode // 識別庫路徑 Dim datPath = "d:\\demo\\遼寧-12345606.dat" // 識別庫密碼 Dim password = "12345606" // 待識別驗證碼圖片路徑 dim imgPath = "d:\\demo\\ln.bmp" // 字庫標識 Dim flag, vcode // 加載識別庫 flag = wmcode.LoadDatEx(datPath,password) If flag > -1 // 識別圖片 vcode = wmcode.getCodeFormFileEx(flag,imgPath) TracePrint("識別庫加載成功,驗證碼:" & vcode) else TracePrint("識別庫加載失敗") end if
計算數學表達式
Calculator(Expression)
函數說明:
計算數學表達式。功能簡單,只是用來計算那些需要填寫計算結果的驗證碼。參數:
參數名 類型 說明 Expression 文本型 數學表達式,只能計算加,減,乘,除,次方運算,支持小括號,中括號,大括號運算,支持負數運算 返回值:
返回結果 類型 說明 表達式計算結果 文本型 計算成功,返回結算結果 "" 文本型 識別失敗 示例:
import wmcode TracePrint(wmcode.Calculator("1+2"))
作者:LCSan
鏈接:https://www.jianshu.com/p/ba1401d68ba9
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
