大家好,我是公众号3分钟学堂的郭立员~

今天文章讲两个知识点:

①对接图灵打码平台

②对键值对的顺序提取

打码平台的原理都差不多,脚本把图片上传给平台,平台处理完以后把结果返回给脚本。

一、讲一下图灵打码的对接,为了方便用户使用,打码平台一般还会封装成各个语言的插件。

图灵测试语音素材(图灵打码过验证)(1)

用户调用插件,填上参数都不需要自己在写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就可以使用了,需要注意截图部分的路径要统一。

二、对键值对的顺序提取

按理说键值对的提取没啥可讲的了,但是这次键值对还挺有难度的,我感觉新手朋友提取会很费劲。

先来看例子:

图灵测试语音素材(图灵打码过验证)(2)

这是按顺序点击图片文字的验证,通常对接平台后的返回值是几个坐标值,把坐标提取出来逐个点击就可以了。

但是通过图灵打码得到的返回值是这样的:

{"全": {"顺序": 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

图灵测试语音素材(图灵打码过验证)(3)

好了内容就这些,觉得还行帮忙给文章点个赞。

=正文完=

,