1.注册百度AI,这个步骤要获得3样东西,这三样东西得到后是有次数和时间限制的,如果做学术研究可以忽略:
https://blog.csdn.net/qq_40484582/article/details/82054009 (引用)
(1)AK:API_KEY;
(2)SK:SECRET_KEY;
(3)AT:access_token
如果获得了前两个可以直接填写这个链接到浏览器(或者cn.bing.com/?toHttps=1&redig=A4DDA4194C544F0B98D53B777EAB03A5),找一下就能找到access_token:
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】
2.调用百度API(我的环境是visual studio)
https://cloud.baidu.com/doc/OCR/s/vk3h7y58v
2.1下载百度的SDK
http://ai.baidu.com/sdk#search
因为使用的是C#,所以我下载下来就好几个文件夹:
Baidu.Aip
├── net35(这个指的是.Net版本)
│ ├── AipSdk.dll // 百度AI服务 windows 动态库
│ ├── AipSdk.xml // 注释文件
│ └── Newtonsoft.Json.dll // 第三方依赖
├── net40
├── net45
└── netstandard2.0
├── AipSdk.deps.json
└── AipSdk.dll
2.2 VS 调用
把.AipSdk.dll 和 Newtonsoft.Json.dll放到当前工程的Debug文件夹下。
然后在VS里面加入引用
2.3程序调用:
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using System.Net.Http;
using System.Net;
using System.Web;
// 通用文字识别(高精度含位置版)
public static string accurate()
{
string token = "24.08c4557c1c6ca46c71eacde1200fb911.2592000.1588499297.282335-19243980";
//string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate?access_token=" + token;
string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=" + token;
Encoding encoding = Encoding.Default;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
request.Method = "post";
request.KeepAlive = true;
// 图片的base64编码
string base64 = getFileBase64((System.IO.Directory.GetCurrentDirectory() + "test.jpg"));
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.Default);
string result = reader.ReadToEnd();
Console.WriteLine("通用文字识别(高精度含位置版):");
Console.WriteLine(result);
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;
}