C#Winfrom基于百度Ai开放平台进行个人文字识别
本帖最后由 liu8359 于 2020-9-9 14:44 编辑一.下载dll
1.在官方网站下载C# SDK压缩工具包。下载地址:https://ai.baidu.com/file/7D961BC013AB4AA7905001FAF89EE327
2.解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引用。
二.获取API Key/Secret Key
1.打开百度智能云官网进行注册后登陆。网址:https://cloud.baidu.com/?from=console
2.进入文字识别工作台,这有很多接口可以都试试。
3.创建应用
4.管理应用
三.代码部分
上传照片访问Api,输出字符串
string savePath = null; //保存路径文件夹
string newPath = null; //保存路径
string photoName = null; //图片名称
string saveName = null; //保存名称
/// <summary>
/// 上传照片访问Api,输出字符串
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//上传照片
OpenFileDialog op = new OpenFileDialog();
if (op.ShowDialog() == DialogResult.OK)
{
UploadPhoto(op);
}
//访问API
var result = GetBaiDuApi();
//获取字符串"["位置
int IndexofA = result.ToString().IndexOf("[");
int IndexofB = result.ToString().IndexOf("]");
//截取位数字符串
string baiDuApiJson = result.ToString().Substring(IndexofA, IndexofB - IndexofA + 1);
//JSON转List
JavaScriptSerializer baiDuApiSerializer = new JavaScriptSerializer();
List<model> wordsModelList = baiDuApiSerializer.Deserialize<List<model>>(baiDuApiJson);
//list转string
List<string> StrList = new List<string>();
wordsModelList.ForEach(t =>
{
string str = null;
if (!string.IsNullOrEmpty(t.words))
str = t.words;
StrList.Add(str);
});
string resultStr = string.Join("", StrList.ToArray());
//文本框输出字符串
this.textBox1.Text = resultStr;
}
上传图片
/// <summary>
/// 上传照片
/// </summary>
/// <returns></returns>
private void UploadPhoto(OpenFileDialog op)
{
FileInfo fi = new FileInfo(op.FileName);
if (fi.Exists)
{
//获取所在项目目录+"\temp"
savePath = System.Windows.Forms.Application.StartupPath + @"\temp";
photoName = fi.Name;
//确保文件名称唯一性
saveName = photoName.Substring(0, photoName.LastIndexOf(".")) + "_"
+ DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + photoName.Substring(photoName.LastIndexOf(".") + 1);
//savePath=@"D:\temp";
//saveName="result.txt";
//newPath = "D:\temp\result.txt";
newPath = Path.Combine(savePath, saveName);
//是否存在这个文件夹==存在?跳过:创建;
if (!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
//保存照片
fi.CopyTo(newPath);
}
}
访问百度API
/// <summary>
/// 访问百度API
/// </summary>
/// <returns></returns>
public JObject GetBaiDuApi()
{
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";
//访问接口
var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
client.Timeout = 60000;// 修改超时时间
var image = File.ReadAllBytes(newPath);
//var url = "图片网址";
// 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用try/catch捕获
//用户向服务请求识别某张图中的所有文字
var result = client.GeneralBasic(image); //本地图图片
//var result = client.GeneralBasicUrl(url); //网络图片
//var result = client.Accurate(image); //本地图片:相对于通用文字识别该产品精度更高,但是识别耗时会稍长。
//var result = client.General(image); //本地图片:通用文字识别(含位置信息版)
//var result = client.GeneralUrl(url); //网络图片:通用文字识别(含位置信息版)
//var result = client.GeneralEnhanced(image); //本地图片:调用通用文字识别(含生僻字版)
//var result = client.GeneralEnhancedUrl(url);//网络图片:调用通用文字识别(含生僻字版)
//var result = client.WebImage(image); //本地图片:用户向服务请求识别一些背景复杂,特殊字体的文字。
//var result = client.WebImageUrl(url); //网络图片:用户向服务请求识别一些背景复杂,特殊字体的文字。
return result;
}
model
/// <summary>
/// model
/// </summary>
public class model
{
public string words{get;set;}
}
蓝奏云下载:https://www.lanzoui.com/iq480gh576b
土豪下载
rosemaryzed 发表于 2020-9-9 14:50
这个接口免费么 速度怎么样 可否研究下图片转文字
速度蛮快的。
通用文字识别(标准版),免费使用,50000次/天免费QPS限制 2 liu8359 发表于 2020-9-9 15:33
原谅我没文化,第一次听说INI
也就是把key等参数放在配置文件里,C#的config文件 差点以为是人脸识别 辉夜年华 发表于 2020-9-9 14:44
差点以为是人脸识别
有人脸识别的API没研究呢{:17_1054:} 这个接口免费么 速度怎么样 可否研究下图片转文字 liu8359 发表于 2020-9-9 14:46
有人脸识别的API没研究呢
研究研究,我估计很难,毕竟没素材 感谢交流,做成INI文件保存参数也是好的选择! 谢谢楼主的教程 weikun444 发表于 2020-9-9 15:12
感谢交流,做成INI文件保存参数也是好的选择!
{:1_893:}原谅我没文化,第一次听说INI 主楼 代码有点问题想要请教,21156456方便联系一下吧。
页:
[1]
2