大家好,我是公众号3分钟学堂的郭立员~
今天文章讲两个知识点:
①对接图灵打码平台
②对键值对的顺序提取
打码平台的原理都差不多,脚本把图片上传给平台,平台处理完以后把结果返回给脚本。
一、讲一下图灵打码的对接,为了方便用户使用,打码平台一般还会封装成各个语言的插件。
用户调用插件,填上参数都不需要自己在写post数据对接,就可以完成打码验证,非常的方便。
看一下图灵平台给得安卓按键的例子:
- Import "Cjson.lua"
- Import "tuling.lua"
- Import "ShanHai.lua"
- Dim json, table,Result
- //你的帐号
- Dim username="你的帐号"
- //你的密码
- Dim password="你的密码"
- //选用的模型ID
- Dim ID="选用的模型ID"
- //通过屏幕截图的图片进行识别(默认):
- SnapShot "/sdcard/yzm.jpg", 222, 274, 530, 589
- Dim filepath = GetSdcardDir() & "/yzm.jpg"
- //也可以直接指定本地图片路径进行识别:
- //Dim filepath = "/storage/emulated/0/Pictures/1.jpg"
- If Dir.Exist(filepath) Then
- TracePrint "存在"
- Else
- TracePrint "不存在"
- End If
- TracePrint filepath
- json = tuling.tuling_SendVerCode(username, password, filepath, id)
- TracePrint json
复制代码代码中填上账号、密码、图片截图地址、项目id就可以使用了,需要注意截图部分的路径要统一。
二、对键值对的顺序提取
按理说键值对的提取没啥可讲的了,但是这次键值对还挺有难度的,我感觉新手朋友提取会很费劲。
先来看例子:
这是按顺序点击图片文字的验证,通常对接平台后的返回值是几个坐标值,把坐标提取出来逐个点击就可以了。
但是通过图灵打码得到的返回值是这样的:
{"全": {"顺序": 1, "X坐标值": 97.0, "Y坐标值": 261.5}, "国": {"顺序": 2, "X坐标值": 57.5, "Y坐标值": 95.0}, "劳": {"顺序": 3, "X坐标值": 254.5, "Y坐标值": 235.5}, "动": {"顺序": 4, "X坐标值": 41.5, "Y坐标值": 159.5}, "模": {"顺序": 5, "X坐标值": 122.0, "Y坐标值": 37.5}, "范": {"顺序": 6, "X坐标值": 237.0, "Y坐标值": 95.5}}
第一眼看上去,这键值对提取不是简单吗?
按顺序把每个字的坐标提取就行了,但是遇到了几个问题?
①怎么知道返回结果中都有哪些汉字
答:遍历所有键值对
②遍历键值对的返回结果是无序的,怎么排序
答:输出“顺序”的键值,也就是序号
③怎么知道有多少个“序号”
答:遍历的时候,用一个计次变量记录,每次遍历变量自增+1,原本我是想用len()命令获取数组个数一样,但是发现不行。
我在写这个脚本的时候,脑子里就想这几个问题怎么解决,然后就有了下面的代码:
Dim arr={"全": {"顺序": 1, "X坐标值": 97.0, "Y坐标值": 261.5}, "国": {"顺序": 2, "X坐标值": 57.5, "Y坐标值": 95.0}, "劳": {"顺序": 3, "X坐标值": 254.5, "Y坐标值": 235.5}, "动": {"顺序": 4, "X坐标值": 41.5, "Y坐标值": 159.5}, "模": {"顺序": 5, "X坐标值": 122.0, "Y坐标值": 37.5}, "范": {"顺序": 6, "X坐标值": 237.0, "Y坐标值": 95.5}}
Dim n=0
For Each k , v In arr
// TracePrint k
n=n+1
Next
TracePrint "字的数量:",n
For i = 1 To n
For Each k , v In arr
If arr[k]["顺序"] = i Then
TracePrint arr[k]["X坐标值"],arr[k]["Y坐标值"]
End If
Next
Next
好了内容就这些,觉得还行帮忙给文章点个赞。
=正文完=