示例图片
![]() |
![]() |
![]() |
![]() |
价格: 0.011元/次
本接口只支持3小时内报错!
类型: 定制-截图滑块
说明:
1.该接口只能识别截图,截图指的是将拉杆拉动到最右端时的截图,且提示要滑动到什么位置的提示信息也要一起截图下来;
2.截图的时候,尽可能和展示的例图一致,左右部分不要增加额外的白边,黑边;
3.识别结果指的是,基于传过来的图上,模型认为符合要求位置的x坐标;
4.上述返回结果不一定是实际滑动距离,需要摸索找到返回值和实际滑动距离的关系,才能使用。
只支持HTTP中的Post方法,同时Content-Type请设置为application/json或者application/x-www-form-urlencoded
跨平台http接口,请仔细查看各类型的http接口,仅支持post传参
http api 接口 文档
1.1.请求地址
http://api.sushibie.com/api/YmServer/customApi
1.2.参数列表
| 参数名称 | 传值类型 | 说明 | 是否必须 |
|---|---|---|---|
| image | string | 需要识别图片的base64字符串 | 是 |
| token | string | 用户中心Token | 是 |
| type | string | 1009 | 是 |
2.1.反参
| 参数名称 | 传值类型 | 说明 |
|---|---|---|
| code | int | 状态值 |
| msg | string | 请求说明 |
| data | array | 打码数据 |
| --code | int | 打码服务状态 |
| --data | string | 识别结果:像素距离(详见上述说明第3点) |
| --time | string | 打码服务时长 |
2.2.code列表
| code | 说明 |
|---|---|
| 10000 | 识别成功 |
| 10001 | 参数错误 |
| 10002 | 余额不足 |
| 10003 | 无此访问权限(未获取到有效token) |
| 10004 | 无此验证类型(type参数值不对) |
| 10005 | 网络拥塞 |
| 10006 | 数据包过载 |
| 10007 | 服务繁忙(接口模型无法处理图片参数) |
| 10008 | 网络错误,请稍后重试 |
| 10009 | 结果准备中,请稍后再试 |
| 10010 | 请求结束 |
示例图片
![]() |
![]() |
![]() |
![]() |
本接口只支持3小时内报错!
识别结果
无示例
import base64
import requests
# www.sushibie.com 注册后登录去用户中心
with open('图片绝对路径/test.png', 'rb') as f:
b = base64.b64encode(f.read()).decode() ## 图片二进制流base64字符串
def verify():
url = "http://api.sushibie.com/api/YmServer/customApi"
data = {
## 关于参数,一般来说有3个;不同类型id可能有不同的参数个数和参数名,找客服获取
"token": "注册后登录去用户中心获取token",
"type": "打码类型id",
"image": b,
}
_headers = {
"Content-Type": "application/json"
}
response = requests.request("POST", url, headers=_headers, json=data).json()
print(response)
if __name__ == '__main__':
verify()
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.jsoup.Jsoup;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import sun.misc.BASE64Encoder;
public class Test {
/**
* 图像识别
* @throws IOException
* 注意: maven依赖
*
*
* org.jsoup
* jsoup
* 1.11.3
*
*
* com.alibaba
* fastjson
* 1.2.70
* test
*
*
*/
public static void main(String[] args) throws IOException {
//注册后用户中心找到token填这儿
String token= "用户中心token";
//类型id 产品列表里找自己需要的产品的id,然后改这儿
String typeid= "2001";
// 图片二进制流base64字符串
String image= "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";
Map< String, String> data = new HashMap<>();
data.put("token",token);
data.put("type", typeid);
data.put("image", image);
String resultString = Jsoup.connect("http://api.sushibie.com/api/YmServer/customApi")
.requestBody(JSON.toJSONString(data))
.header("Content-Type", "application/json")
.ignoreContentType(true).timeout(120000).post().text();
JSONObject jsonObject = JSONObject.parseObject(resultString);
Integer code = jsonObject.getInteger("code");
if (code==10000) {
String result=jsonObject.getJSONObject("data").getString("data");
System.out.println("识别成功结果为:"+result);
}else {
System.out.println("识别失败原因为:"+jsonObject.getString("msg"));
}
}
}
package main
import (
"bytes"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"time"
)
const CustomUrl = "http://api.sushibie.com/api/YmServer/customApi"
const Token = ""
func commonVerify(image string) string {
config := map[string]interface{}{}
config["image"] = image
config["type"] = "10110"
config["token"] = Token
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(CustomUrl, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
return string(data)
}
func slideVerify(slideImage string, backgroundImage string) string {
//# 滑块类型
//# 通用双图滑块 20111
// # slide_image 需要识别图片的小图片的base64字符串
// # background_image 需要识别图片的背景图片的base64字符串(背景图需还原)
config := map[string]interface{}{}
config["slide_image"] = slideImage
config["background_image"] = backgroundImage
config["type"] = "20111"
config["token"] = Token
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(CustomUrl, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
return string(data)
}
func sinSlideVerify(image string) string {
//# 滑块类型
//# 通用单图滑块(截图) 20110
config := map[string]interface{}{}
config["image"] = image
config["type"] = "20110"
config["token"] = Token
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(CustomUrl, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
return string(data)
}
func trafficSlideVerify(seed string, data string, href string) string {
config := map[string]interface{}{}
config["image"] = image
if extra != nil {
config["extra"] = extra
}
config["type"] = "30100"
config["token"] = Token
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(CustomUrl, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
return string(data)
}
func rotate(image string) string {
// # 定制-X度单图旋转 90007
config := map[string]interface{}{}
//# 定制-Tt双图旋转,2张图,内圈图,外圈图 90004
//config["out_ring_image"] = image
//config["inner_circle_image"] = image
//config["type"] = "90004"
config["image"] = image
config["type"] = "90007"
config["token"] = Token
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(CustomUrl, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
return string(data)
}
type Result struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data Data `json:"data"`
}
type Data struct {
Code int `json:"code"`
CaptchaId string `json:"captchaId"`
RecordId string `json:"recordId"`
Data string `json:"data"`
}
func googleVerify(googlekey string, pageurl string) string {
config := map[string]interface{}{}
//第一步,创建验证码任务
//:param
//:return taskId : string 创建成功的任务ID
url1 := "http://api.sushibie.com/api/YmServer/funnelApi"
config["token"] = Token
config["type"] = "40010" // v2
//config["type"] = "40011" // v3
config["googlekey"] = googlekey
config["pageurl"] = pageurl
config["enterprise"] = 0 //是否为企业版
config["invisible"] = 0 //是否为可见类型
config["data-s"] = "" //## V2+企业如果能找到,找不到传空字符串
//config["action"] = "" //## #V3必传
//config["min_score"] = "0.8" //#V3才支持的可选参数
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(url1, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
//data := `{"msg": "识别成功", "code": 10000, "data": {"code": 0, "captchaId": "51436618130", "recordId": "74892"}}`
fmt.Println(data)
var res Result
_ = json.Unmarshal([]byte(data), &res)
captchaId := res.Data.CaptchaId
recordId := res.Data.RecordId
config1 := map[string]interface{}{}
timeOut := 120
times := 0
for {
if times > timeOut {
fmt.Println("超时")
break
}
url2 := "http://api.sushibie.com/api/YmServer/funnelApiResult"
config1["token"] = Token
config1["captchaId"] = captchaId
config1["recordId"] = recordId
configData, _ := json.Marshal(config1)
body := bytes.NewBuffer([]byte(configData))
resp, _ := http.Post(url2, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
//data := `{"msg": "请求成功", "code": 10001, "data": {"data": "03AGdBq2611GTOgA2v9HUpMMEUE70p6dwOtYyHJQK4xhdKF0Y8ouSGsFZt647SpJvZ22qinYrm6"}}`
fmt.Println(data)
var res Result
_ = json.Unmarshal([]byte(data), &res)
if res.Code != 10001 {
continue
time.Sleep(time.Duration(5) * time.Second)
times += 5
}
return res.Data.Data
}
return string(data)
}
func hcaptchaVerify(siteKey string, siteUrl string) string {
//# Hcaptcha
//# 请保证购买相应服务后请求对应 verify_type
//# verify_type="50001"
config := map[string]interface{}{}
config["site_key"] = siteKey
config["site_url"] = siteUrl
config["type"] = "50001"
config["token"] = Token
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(CustomUrl, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
return string(data)
}
func funCaptchaVerify(siteKey string, siteUrl string) string {
//# Hcaptcha
//# 请保证购买相应服务后请求对应 verify_type
//# verify_type="40007"
config := map[string]interface{}{}
config["publickey"] = siteKey
config["pageurl"] = siteUrl
config["type"] = "40007"
config["token"] = Token
configData, _ := json.Marshal(config)
body := bytes.NewBuffer([]byte(configData))
resp, err := http.Post(CustomUrl, "application/json;charset=utf-8", body)
defer resp.Body.Close()
data, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(data), err)
return string(data)
}
func main() {
// 作者水平有限,各位使用者在调用过程中自行修改
resp, _ := http.Get("https://www.78gk.com/haoma/MTc2NjUxMDk4NTg=")
body, _ := ioutil.ReadAll(resp.Body)
b64Str := base64.StdEncoding.EncodeToString([]byte(body))
commonVerify(b64Str)
fmt.Println(b64Str)
}
//数英汉字识别类型 对于参量里的type 参数,请使用者自行修改对应类型
// 使用前 先导入图灵插件 按键精灵软件 最上面有个叫资源库的,里面的插件图灵插件 然后再把神梦http插件安装上,
// 把下方链接下载下来的ddl文件复制到 按键精灵安装的地方的的下面的plugin 例如(D:\Program Files (x86)\按键精灵\按键精灵2014\plugin) 文件里
//(链接: https://pan.baidu.com/s/1QIKjtitqP9Gycws0W-gcsw?pwd=yunm 提取码: yunm 复制这段内容后打开百度网盘手机App,操作更方便哦)
Function UrlEncode(url)
encode = ""
For i = 1 To Len(url)
char = Mid(url, i, 1)
asci = Asc(char)
If (asci >= 48 and asci <= 57) or (asci >= 65 and asci <= 90) or (asci >= 97 and asci <= 122) Then
encode = encode & char
ElseIf asci = 32 Then
encode = encode & "+"
Else
encode = encode & "%" & Hex(asci)
End If
Next
UrlEncode = encode
End Function
token="速识别用户中心token"
img_base64 = Plugin.TURING.Image_Base64Encode("C:\Users\xxx\Desktop\2eeb2db57b39d19d4c8c5e82705367e8.png") // 图片地址需要改
img_base64 = Replace(img_base64, "%", "%25")
img_base64 = Replace(img_base64, "+", "%2B")
img_base64 = Replace(img_base64, " ", "%20")
img_base64 = Replace(img_base64, "/", "%2F")
img_base64 = Replace(img_base64, "?", "%3F")
img_base64 = Replace(img_base64, "#", "%23")
img_base64 = Replace(img_base64, "&", "%26")
img_base64 = Replace(img_base64, "=", "%3D")
TracePrint img_base64
Param = "&image=" & img_base64 & "&token=" & UrlEncode(token) & "&type=使用类型id 需要改"
TracePrint Param
返回结果json = Plugin.SMWH.WinHttp("http://api.sushibie.com/api/YmServer/customApi", 1, param ,"" ,"" ,"","Content-Type: application/json; charset=UTF-8","","","","","","","UTF-8")
TracePrint 返回结果json
result = Plugin.SMWH.GetJSON(返回结果json, "data.data")
TracePrint result
【 代码例子下载地址: 链接: 】 【 https://pan.baidu.com/s/1EfsgCPv-EpNuiuPV58gSCA?pwd=yunm 提取码: yunm 复制这段内容后打开百度网盘手机App,操作更方便哦】 .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 网页_发包 () .子程序 网页_发包, , , 本子程序由【YZYZ-菜鸟编程小助手】生成 .局部变量 局_地址, 文本型, , , 调用精易模块 http://ec.125.la/ .局部变量 局_提交, 文本型 .局部变量 局_返回, 文本型 .局部变量 token, 文本型 .局部变量 type, 文本型 .局部变量 image, 文本型 token = “用户中心token” type = “识别类型id” image = 编码_BASE64编码 (读入文件 (取运行目录 () + “\” + “1.png”)) 局_地址 = “http://api.sushibie.com/api/YmServer/customApi” 局_提交 = “{” + #引号 + “token” + #引号 + “: ” + #引号 + token + #引号 + “,” + #引号 + “type” + #引号 + “: ” + #引号 + type + #引号 + “,” + #引号 + “image” + #引号 + “: ” + #引号 + image + #引号 + “}” 调试输出 (image) 局_返回 = 编码_Utf8到Ansi (网页_访问_对象 (局_地址, 1, 局_提交, , , “Content-Type: application/json;charset=utf-8”, , , , , , , , , , , )) 调试输出 (局_返回)
// RestSharp 用法不了解的请百度 RestSharp教程
var client = new RestClient("http://api.sushibie.com/api/YmServer/customApi");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("token", "用户中心token");
request.AddParameter("image", "图片的base64(注意不含:data:image/jpg;base64,直接图片base64编码)");
//识别类型
//数英汉字识别类型 对于参量里的type 参数,请使用者自行修改对应类型
request.AddParameter("type", "2001");
//其他参数根据需要从 http 接口文档中添加
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
curl --location --request POST 'http://api.sushibie.com/api/YmServer/customApi' \
--header 'Content-Type: application/json' \
--data-raw '{"token": "用户中心密钥","type": "识别类型","image": "图片base64字符串"}'
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "http://api.sushibie.com/api/YmServer/verifyapi");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char *data = "{\"token\": \"用户中心密钥\",\"type\": \"识别类型code\",\"image\": \"图片base64字符串\"}";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
var axios = require('axios');
//识别类型
var data = JSON.stringify({
"token": "用户中心密钥",
"type": "2001",
"image": "图片base64字符串"
});
var config = {
method: 'post',
url: 'http://api.sushibie.com/api/YmServer/customApi',
headers: {
'Content-Type': 'application/json'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
//请自行测试更改
// SHTTP.lua 山海师http双端插件 玩按键精灵的都知道吧,
//这个插件地址 http://bbs.anjian.com/showtopic.aspx?topicid=697539&forumpage=1&onlyauthor=1&posterid=742060
// 或 链接: https://pan.baidu.com/s/1fvWC1GAXRCsCn1D6B6V4jg?pwd=jppw 提取码:jppw
Import "SHTTP.lua"
Import "ShanHai.lua"
Import "Cjson.lua"
//用户中心token
Dim token = ""
//识别类型
//数英汉字识别类型 对于参量里的type 参数,请使用者自行修改对应类型
Dim type = "10110"
Dim sUrl = "http://api.sushibie.com/api/YmServer/customApi"
Dim sJson, tJson,res,img_base64
Dim filePath = "/Pictures/111.png"
// 需要先将图片转成base64编码
TracePrint GetSdcardDir()
img_base64 = ShanHai.ReadFileBase(GetSdcardDir() & filePath)
TracePrint img_base64
//base64 出来的类似这种
//img_base64 = "/9j/2wCEACgcHiMeGSgjISMtKygwPGRBPDc3PHtYXUlkkYCZlo+AjIqgtObDoKrarYqMyP/L2u71////m8H////6/+b9//gBKy0tPDU8dkFBdviljKX4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+P/AABEIACsA+gMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/ANmiiigAooyNxXIyBkiigAoqtc3LxyJDCm+VxnBOAB6mi3uXaZoJ4wkoG4YOQw9qALNFFFABRRRQAUUUZGQM8mgAooooAKz9OsJrS4lkkmDhxjjPzc9T7/41oUUAFFFFABRVeK5M106RqDEgwz+/oKsUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADBDGszShAJGGC2OSKfRRQBTh51W4J6qigfSi441OzI6kOD9MUXCyQXYuY4zIrLtdV6+xpIFluLv7TJGY1VdqK3X3NAF2ioUuUad4SQrqcBSwyeM9P8/nkCagAooooARyyoSq7mA4GetZclzMdQhZrVwUVvlDA5zWrUZgU3InydwXbjtQAsMhkjDFGQns3Wn0UUAFFFFABVW9lfKW8P+skzz6CrVVbqKUTx3EKhmQEFScZFAEUBlsTFDKFMbnaHXsfersj7FzsZhnnbzgev/wCqqZE93LHviMUaNuO48k1eoAjS4idggbDnorAqx/A81JQQGGCARnPNNjkjlXdG6uM4ypzQA6iiigCo9xcu5SC3xg43yHA/Kp4BIqYmdXfrwMVHPDPM+FuDHHjoo5/Olt7SK3JZMlm6sxyTQA+QzBv3ccbDHVnI/oab5s6/ft93p5bg/nnFTUUAQ+fJ/wA+s35p/wDFUefJ/wA+s35p/wDFVNRQBD9qj/uzf9+X/wAKPtUf92b/AL8v/hU1FABRRRQAUUUUAFFFFACOiyKVdQynqCMilUBVCqAABgAdqKKACiiigAooooAKKKKACiiigAooooAKKKKAGyxiWJ42yA6lTj3qrp9gLFX/AHhcuRk4x0//AF1cooAKKKKAI5JljbDCQnGfljZv5Cm/ao/7s3/fl/8ACpqKAIftUf8Adm/78v8A4Ufao/7s3/fl/wDCpqKAIftUf92b/vy/+FTKdygjOCM8jFFFABRRRQB//9k="
// replace special word in img_base64
img_base64 = Replace(img_base64, "%", "%25")
img_base64 = Replace(img_base64, "+", "%2B")
img_base64 = Replace(img_base64, " ", "%20")
img_base64 = Replace(img_base64, "/", "%2F")
img_base64 = Replace(img_base64, "?", "%3F")
img_base64 = Replace(img_base64, "#", "%23")
img_base64 = Replace(img_base64, "&", "%26")
img_base64 = Replace(img_base64, "=", "%3D")
token = Replace(token, "%", "%25")
token = Replace(token, "+", "%2B")
token = Replace(token, " ", "%20")
token = Replace(token, "/", "%2F")
token = Replace(token, "?", "%3F")
token = Replace(token, "#", "%23")
token = Replace(token, "&", "%26")
token = Replace(token, "=", "%3D")
Dim tData = {null}
tData["token"] = token
tData["type"] = type
tData["image"] = img_base64
res = SHTTP.Post(sUrl,tData,{"headers":{"Content-Type":"application/x-www-form-urlencoded"}})
TracePrint res
// 如果报错,请看 https://blog.csdn.net/qq_40081339/article/details/104762948
tJson = Cjson.Decode(res)
TracePrint tJson
//注意:部分接口支持报错返分,请不要乱报错,后台人员会核对,如乱报错,可能会冻结账号;uniqueCode 识别请求返回参数
//uniqueCode = Replace(uniqueCode, "%", "%25")
//uniqueCode = Replace(uniqueCode, "+", "%2B")
//uniqueCode = Replace(uniqueCode, " ", "%20")
//uniqueCode = Replace(uniqueCode, "/", "%2F")
//uniqueCode = Replace(uniqueCode, "?", "%3F")
//uniqueCode = Replace(uniqueCode, "#", "%23")
//uniqueCode = Replace(uniqueCode, "&", "%26")
//uniqueCode = Replace(uniqueCode, "=", "%3D")
//Dim rData = {null}
//Dim rUrl = "http://api.sushibie.com/api/YmServer/refundApi"
//rData["token"] = token
//rData["uniqueCode"] = uniqueCode
//res = SHTTP.Post(rUrl,rData,{"headers":{"Content-Type":"application/x-www-form-urlencoded"}})
//TracePrint res
//tJson = Cjson.Decode(sJson)
//TracePrint tJson
if (!requestScreenCapture()) {
console.show()
toastLog("请求截图失败");
exit();
} else {
toastLog("请求截图成功");
}
captureScreen("/storage/emulated/0/Pictures/1.png");
var clip = images.clip(images.read("/storage/emulated/0/Pictures/1.png"), 10, 102, 529 - 10, 618 - 180);
let res = http.post("http://api.sushibie.com/api/YmServer/customApi", {
'image': images.toBase64(clip),
'token': '用户中心token',
'type': '识别类型id',
});
let html = res.body.string();//取页面html源码
console.log(html);
res_data = html.split('data":"')[1].split('","time')[0]
log(res_data)
function base64Decode(str) {
//base64解码字符集
var _base64DecodeChars = [
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
];
var c1, c2, c3, c4;
var i, len, out;
len = str.length;
i = 0;
out = "";
while (i < len) {
/* c1 */
do {
c1 = _base64DecodeChars[str.charCodeAt(i++) & 0xff];
}
while (i < len && c1 == -1);
if (c1 == -1)
break;
/* c2 */
do {
c2 = _base64DecodeChars[str.charCodeAt(i++) & 0xff];
}
while (i < len && c2 == -1);
if (c2 == -1)
break;
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
/* c3 */
do {
c3 = str.charCodeAt(i++) & 0xff;
if (c3 == 61)
return out;
c3 = _base64DecodeChars[c3];
}
while (i < len && c3 == -1);
if (c3 == -1)
break;
out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
/* c4 */
do {
c4 = str.charCodeAt(i++) & 0xff;
if (c4 == 61)
return out;
c4 = _base64DecodeChars[c4];
}
while (i < len && c4 == -1);
if (c4 == -1)
break;
out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
}
// return out; // 会中文乱码
return decodeURIComponent(escape(out)); // 解决中文乱码
}};
//识别类型
//数英汉字识别类型 对于参量里的type 参数,请使用者自行修改对应类型
功能 接口上传()
变量 图片 = base64encodefile("C:\\2.jpg")//图片路径,需要改成自己的路径
变量 token = "请输入自己的token"
变量 识别类型 = "2001"
变量 send_data = "{\"token\":\"" & token & "\",\"type\":\"" & 识别类型 & "\",\"image\":\"" & 图片 & "\"}"
变量 header = array("Content-Type" = "application/json")
变量 请求返回 = http提交请求("post", "http://api.sushibie.com/api/YmServer/customApi", send_data, "utf-8", header)
调试输出(请求返回)
if(字符串查找(请求返回, "识别成功") > 0)
请求返回 = 转字符型(请求返回)
变量 计算_1 = 字符串查找(请求返回, "data")
计算_1 = 字符串截取(请求返回, 计算_1 + 4, 字符串长度(请求返回))
变量 计算_2 = 字符串查找(计算_1, "data")
变量 计算_3 = 字符串查找(计算_1, "time")
变量 识别结果 = 字符串截取(计算_1, 计算_2 + 4, 计算_3 - 3)
traceprint("识别结果 " & 识别结果)
end
结束
function main(){
var url = "http://api.sushibie.com/api/YmServer/customApi";
var token=xxx; //用户中心密钥
var type=2001;//根据开发文档进行修改
var autoimg = image.captureScreen(3,0,0,300,400);//截图
var imageBase64=image.toBase64(autoimg);//图片转base64
//图片要回收
image.recycle(autoimg);
//下面是基本参数,需要其他参数的根据文档模仿添加
var pa = {"token":token,"type":type,"image":imageBase64};
var x = http.postJSON(url, pa, 100 * 1000, null);
toast(" x返回数据-> " + x)
var jsonResult = JSON.parse(JSON.stringify(x));
if(jsonResult.code==10000){
toast(" data-> " + jsonResult.data.data);//识别结果
toast(" unique_code-> " + jsonResult.data.unique_code);//用于报错
}else{
toast(" msg-> " + jsonResult.msg);//错误原因
}
}
main();
function main(){
var url = "http://api.sushibie.com/api/YmServer/customApi";
var token=xxx; //用户中心密钥
var type=10110;//根据开发文档进行修改
var autoimg = image.captureScreen(3,0,0,300,400);//截图
var imageBase64=image.toBase64(autoimg);//图片转base64
//图片要回收
image.recycle(autoimg);
//下面是基本参数,需要其他参数的根据文档模仿添加
var pa = {"token":token,"type":type,"image":imageBase64};
var x = http.postJSON(url, pa, 100 * 1000, null);
toast(" x返回数据-> " + x)
var jsonResult = JSON.parse(x);
if(jsonResult.code==10000){
toast(" data-> " + jsonResult.data.data);//识别结果
toast(" unique_code-> " + jsonResult.data.unique_code);//用于报错
}else{
toast(" msg-> " + jsonResult.msg);//错误原因
}
}
main();
--url = url地址
--path = 图片路径
--token = 密匙
--type = 图片类型id
function 图片识别(path)
import('java.lang.*')
import('java.util.*')
import('com.nx.assist.lua.LuaEngine')
local url="http://api.sushibie.com/api/YmServer/customApi"
local path = "/sdcard/Pictures/2.png" --图片路径
local token = "" --速识别用户中心token
local type = "10110" --图片类型id
local base64 = getFileBase64(path)
print("base64:" .. base64 )
local params = {}
params["image"] = base64
params["token"] = token
params["type"] = type
local headers = {}
headers["User-Agent"]
= "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"
local postRet = LuaEngine.httpPost(url,params,headers,60)
if postRet ~= nil then
local json = jsonLib.decode(postRet)
if json["msg"] == "识别成功" then
return json["data"]["data"]
end
end
end
print("验证码:" .. 图片识别(path) )
function 速识别(imagePath)
local url="http://api.sushibie.com/api/YmServer/customApi" --接口地址
local token = "" --速识别用户中心token
local type = "20120" --填入需要的图片类型id
local filedata = file.read(imagePath);
local imagebase64 = codec.base64.encode(filedata);
-- string.gsub("abcdabcd","a","z");
imagebase64 = string.gsub( imagebase64,"%%", "%%25");
imagebase64 = string.gsub( imagebase64,"+", "%%2B");
imagebase64 = string.gsub( imagebase64," ", "%%20");
imagebase64 = string.gsub( imagebase64,"/", "%%2F");
imagebase64 = string.gsub( imagebase64,"?", "%%3F");
imagebase64 = string.gsub( imagebase64,"#", "%%23");
imagebase64 = string.gsub( imagebase64,"&", "%%26");
imagebase64 = string.gsub( imagebase64,"=", "%%3D");
local urldata = "image=" .. imagebase64 .. "&token=" .. token .. "&type=" .. type .."&developer_tag=5241a574ed042e07267fd3e493a069ad"
-- logDebug( urldata);
header = {}
header["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8"
data, status = net.http.post(url, header, urldata, 30)
logDebug(data); -- 响应数据
logDebug(status);
end
function main()
速识别('/mnt/sdcard/touchelf/scripts/1.png')
end
#######触摸精灵#####
当报错 服务繁忙,可能原因是图片问题,先检查下图片。如确认无误,联系客服解决
base64要上传正确的字符

在辅助软件上获取到的数据可能是这样:
data:image/jpeg;base64,/9j/5AAFmv39/+AAEEpGSUYAAQEAAAEAAQAA/9sA..................
这张图的正确base64字符是以下:
/9j/5AAFmv39/+AAEEpGSUYAAQEAAAEAAQAA/9sA..................
base64字符串里别误操作加入空格,或是换行符等。这样会破坏base64字符串,造成不是图片或是图片不完整
按键精灵pc版本 如何解析返回的json字符串 详细内容可点击请看以下链接 http://bbs.anjian.com/showtopic-697721-1.aspx





