该验证码插件为《完美验证码识别系统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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。