您需要 登录 才可以下载或查看,没有账号?注册
x
文字识别没那么难,因为我们有别人提供的API——————
想做一个数字的识别,就研究了一下Face++的API
注册完后我们就需要创建应用,以便于获取一个key值和secret值,这点是非常重要的,我们用的是试用版,正式的是需要收费的
然后找到我们的控制台,查看相应的API吧,如图所示:
这API里介绍的很详细,示例也很清楚。
POST的请求,请求参数和返回值这两个是关键,请求参数就是我们访问他给的网址需要传递过去的参数,返回值就是识别后返回给我们的值,这里返回识别值是Unicode编码的,这里用因为返回的是json串,所以用引入litjson,解析一下就可以输出识别出的字了。
如图是请求与返回参数:
这里附上代码:
- <div style="text-align: center;">using System.Collections;</div><div style="text-align: center;">using System.Collections.Generic;</div><div style="text-align: center;">using System.IO;</div><div style="text-align: center;">using UnityEngine;</div><div style="text-align: center;">using LitJson;</div><div style="text-align: center;">using UnityEngine.UI;</div> <div style="text-align: center;">
- </div><div style="text-align: center;">public class FaceTest1 : MonoBehaviour</div><div style="text-align: center;">{</div><div style="text-align: center;"> public string ImageURL = "";</div><div style="text-align: center;"> //按钮上的文本</div><div style="text-align: center;"> public Text Btn_ShibieText;</div><div style="text-align: center;"> //显示结果</div><div style="text-align: center;"> public GameObject ShowResult;</div> <div style="text-align: center;">
- </div><div style="text-align: center;"> // Use this for initialization</div><div style="text-align: center;"> void Start()</div><div style="text-align: center;"> {</div> <div style="text-align: center;">
- </div><div style="text-align: center;"> }</div> <div style="text-align: center;">
- </div><div style="text-align: center;"> // Update is called once per frame</div><div style="text-align: center;"> void Update()</div><div style="text-align: center;"> {</div> <div style="text-align: center;">
- </div><div style="text-align: center;"> }</div> <div style="text-align: center;">
- </div><div style="text-align: center;"> public void TestHttpSend()</div><div style="text-align: center;"> {</div><div style="text-align: center;"> //识别文字</div><div style="text-align: center;"> WWWForm form = new WWWForm();</div><div style="text-align: center;"> form.AddField("api_key", "q8QTfr-xS5hm-i25JuWRLmWQQSHRRtzy");</div><div style="text-align: center;"> form.AddField("api_secret", "3JAabNdllrl-Dm_-iYSG43B0ewypFlWt");</div><div style="text-align: center;"> form.AddField("image_url", ImageURL);</div><div style="text-align: center;"> StartCoroutine(SendPost("https://api-cn.faceplusplus.com/imagepp/v1/recognizetext", form));</div><div style="text-align: center;"> }</div><div style="text-align: center;"> //提交数据进行识别</div><div style="text-align: center;"> IEnumerator SendPost(string _url, WWWForm _wForm)</div><div style="text-align: center;"> {</div><div style="text-align: center;"> WWW postData = new WWW(_url, _wForm);</div><div style="text-align: center;"> yield return postData;</div><div style="text-align: center;"> if (postData.error != "")</div><div style="text-align: center;"> {</div><div style="text-align: center;"> Debug.Log(postData.error);</div><div style="text-align: center;"> ShowResult.SetActive(true);</div><div style="text-align: center;"> Btn_ShibieText.text = "识别";</div><div style="text-align: center;"> ShowResult.transform.Find("Text").GetComponent<Text>().text = "识别失败!";</div><div style="text-align: center;"> GameObject.Find("DebugText").GetComponent<Text>().text = postData.error;</div><div style="text-align: center;"> //myTimer = 2.0f;</div><div style="text-align: center;"> }</div><div style="text-align: center;"> else</div><div style="text-align: center;"> {</div><div style="text-align: center;"> Btn_ShibieText.text = "识别";</div><div style="text-align: center;"> Debug.Log(postData.text);</div><div style="text-align: center;"> GameObject.Find("DebugText").GetComponent<Text>().text = postData.text;</div><div style="text-align: center;"> JsonJieXi(postData.text);</div><div style="text-align: center;"> }</div><div style="text-align: center;"> }</div><div style="text-align: center;"> void JsonJieXi(string str)</div><div style="text-align: center;"> {</div><div style="text-align: center;"> JsonData jd = JsonMapper.ToObject(str);</div><div style="text-align: center;"> Debug.Log(jd["result"].Count);</div><div style="text-align: center;"> for (int i = 0; i < jd["result"].Count; i++)</div><div style="text-align: center;"> {</div><div style="text-align: center;"> for (int j = 0; j < jd["result"][i]["child-objects"].Count; j++)</div><div style="text-align: center;"> {</div><div style="text-align: center;"> Debug.Log(jd["result"][i]["child-objects"][j]["type"].ToString());</div><div style="text-align: center;"> Debug.Log(jd["result"][i]["child-objects"][j]["value"].ToString());</div><div style="text-align: center;"> }</div><div style="text-align: center;"> }</div><div style="text-align: center;"> }</div><div style="text-align: center;"> </div><div style="text-align: center;">}</div>
点击此处复制文本
然后给大家看看面板是什么样子的,如图:
|