文字识别没那么难,因为我们有别人提供的API——————
想做一个数字的识别,就研究了一下Face++的API
首先我们需要在Face++官网注册一个用户,网址https://www.faceplusplus.com.cn/
注册完后我们就需要创建应用,以便于获取一个key值和secret值,这点是非常重要的,我们用的是试用版,正式的是需要收费的
然后找到我们的控制台,查看相应的API吧,如图所示:
这API里介绍的很详细,示例也很清楚。
POST的请求,请求参数和返回值这两个是关键,请求参数就是我们访问他给的网址需要传递过去的参数,返回值就是识别后返回给我们的值,这里返回识别值是Unicode编码的,这里用因为返回的是json串,所以用引入litjson,解析一下就可以输出识别出的字了。
如图是请求与返回参数:
有了面板和代码,大家应该就很清楚了。
图片是访问的网络的,不过API里介绍有明确的图片各种限制和报错返回值的可能原因,大家可以根据原因来差错。
我用的是这个图片,成功识别出,网址:
如图:
结果图:
到此,简单的图片识别流程就OK了。不管是识别本地图片还是网络图片,根据API来就可以了。
想做一个数字的识别,就研究了一下Face++的API
首先我们需要在Face++官网注册一个用户,网址https://www.faceplusplus.com.cn/
注册完后我们就需要创建应用,以便于获取一个key值和secret值,这点是非常重要的,我们用的是试用版,正式的是需要收费的
然后找到我们的控制台,查看相应的API吧,如图所示:
这API里介绍的很详细,示例也很清楚。
POST的请求,请求参数和返回值这两个是关键,请求参数就是我们访问他给的网址需要传递过去的参数,返回值就是识别后返回给我们的值,这里返回识别值是Unicode编码的,这里用因为返回的是json串,所以用引入litjson,解析一下就可以输出识别出的字了。
如图是请求与返回参数:
这里附上代码:
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using LitJson;
using UnityEngine.UI;
public class FaceTest1 : MonoBehaviour
{
public string ImageURL = "";
//按钮上的文本
public Text Btn_ShibieText;
//显示结果
public GameObject ShowResult;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void TestHttpSend()
{
//识别文字
WWWForm form = new WWWForm();
form.AddField("api_key", "q8QTfr-xS5hm-i25JuWRLmWQQSHRRtzy");
form.AddField("api_secret", "3JAabNdllrl-Dm_-iYSG43B0ewypFlWt");
form.AddField("image_url", ImageURL);
StartCoroutine(SendPost("https://api-cn.faceplusplus.com/imagepp/v1/recognizetext", form));
}
//提交数据进行识别
IEnumerator SendPost(string _url, WWWForm _wForm)
{
WWW postData = new WWW(_url, _wForm);
yield return postData;
if (postData.error != "")
{
Debug.Log(postData.error);
ShowResult.SetActive(true);
Btn_ShibieText.text = "识别";
ShowResult.transform.Find("Text").GetComponent<Text>().text = "识别失败!";
GameObject.Find("DebugText").GetComponent<Text>().text = postData.error;
//myTimer = 2.0f;
}
else
{
Btn_ShibieText.text = "识别";
Debug.Log(postData.text);
GameObject.Find("DebugText").GetComponent<Text>().text = postData.text;
JsonJieXi(postData.text);
}
}
void JsonJieXi(string str)
{
JsonData jd = JsonMapper.ToObject(str);
Debug.Log(jd["result"].Count);
for (int i = 0; i < jd["result"].Count; i++)
{
for (int j = 0; j < jd["result"][i]["child-objects"].Count; j++)
{
Debug.Log(jd["result"][i]["child-objects"][j]["type"].ToString());
Debug.Log(jd["result"][i]["child-objects"][j]["value"].ToString());
}
}
}
}
有了面板和代码,大家应该就很清楚了。
图片是访问的网络的,不过API里介绍有明确的图片各种限制和报错返回值的可能原因,大家可以根据原因来差错。
我用的是这个图片,成功识别出,网址:
![](http://img.manew.com/data/attachment/forum/201709/25/005736jmvc03379qindqx3.png.thumb.jpg)
如图:
![](http://img.manew.com/data/attachment/forum/201709/25/021945j1cnecjqi00j1en9.png.thumb.jpg)
结果图:
到此,简单的图片识别流程就OK了。不管是识别本地图片还是网络图片,根据API来就可以了。