本文主要是调用百度云的接口来实现文字识别这一方法,调用百度云的其他方法也差不多
官方文档地址: https://cloud.baidu.com/doc/OCR/s/zk3h7xz52
先点击立即使用
创建好之后记住几个参数,后面获取Token用
获取AccessToken
public class AccessToken
{
//ocr
// 百度云中开通对应服务应用的 API Key 建议开通应用的时候多选服务
private static String clientId = "";
// 百度云中开通对应服务应用的 Secret Key
private static String clientSecret = "";
/// <summary>
/// 获取AccessToken值
/// </summary>
/// <returns></returns>
public static String getAccessToken()
{
String authHost = "https://aip.baidubce.com/oauth/2.0/token";
HttpClient client = new HttpClient();
List<KeyValuePair<String, String>> paraList = new List<KeyValuePair<string, string>>();
paraList.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
paraList.Add(new KeyValuePair<string, string>("client_id", clientId));
paraList.Add(new KeyValuePair<string, string>("client_secret", clientSecret));
HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;
String result = response.Content.ReadAsStringAsync().Result;
return result;
}
}
新建一个类来接受返回值
public class ResultAccessToken
{
public string refresh_token { get; set; }
public int expires_in { get; set; }
public string scope { get; set; }
public string session_key { get; set; }
public string access_token { get; set; }
public string session_secret { get; set; }
}
请求的方法:
// 通用文字识别
public static string generalBasic(string token, string iamge)
{
string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + token;
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
request.Method = "post";
request.KeepAlive = true;
// 图片的base64编码
string base64 = getFileBase64(iamge);
String str = "image=" + HttpUtility.UrlEncode(base64);
byte[] buffer = encoding.GetBytes(str);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string result = reader.ReadToEnd();
return result;
}
public static String getFileBase64(String fileName)
{
FileStream filestream = new FileStream(fileName, FileMode.Open);
byte[] arr = new byte[filestream.Length];
filestream.Read(arr, 0, (int)filestream.Length);
string baser64 = Convert.ToBase64String(arr);
filestream.Close();
return baser64;
}
返回值参考:
public class OCRResult
{
/// <summary>
/// 唯一的log id,用于问题定位
/// </summary>
public long log_id { get; set; }
/// <summary>
/// 识别结果数,表示words_result的元素个数
/// </summary>
public int words_result_num { get; set; }
/// <summary>
/// 识别结果数组
/// </summary>
public List<Words_resultItem> words_result { get; set; }
}
public class Words_resultItem
{
public string words { get; set; }
}
前台写个触发事件:
//按钮点击触发事件
$("#btnOCR").click(function () {
$.ajax({
url: "/home/OCR",
type: "post",
dataType: "json"
}).done(function (data) {
console.log(data)
})
});
跑起来跑起来,在浏览器的控制台中打印结果
完成
文字识别这个应用也可以用到其他的OCR识别的地方,按照自己需求改改就行