利⽤百度OCR的接⼝实现⽂字识别的功能
安装⽂字识别 C# SDK
** ⽀持平台:.Net Framework 3.5 4.0 4.5, .Net Core 2.0 **
⽅法⼀:使⽤Nuget管理依赖(推荐)
在NuGet中搜索 Baidu.AI,安装最新版即可。
⽅法⼆:下载安装
⽂字识别 C# SDK⽬录结构
Baidu.Aip
├── net35
│├── AipSdk.dll            // 百度AI服务 windows 动态库
│├── l            // 注释⽂件
│└── Newtonsoft.Json.dll    // 第三⽅依赖
├── net40
├── net45
└── netstandard2.0
├── AipSdk.deps.json
└── AipSdk.dll
如果需要在 Unity 平台使⽤,可引⽤⼯程源码⾃⾏编译。
安装
1.在下载C# SDK压缩⼯具包。
2.解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引⽤。
下载完成后解压,选择相应的版本引⽤dll⽂件:
新建交互类
Baidu.Aip.Ocr.Ocr是⽂字识别的交互类,为使⽤⽂字识别的开发⼈员提供了⼀系列的交互⽅法。
⽤户可以参考如下代码新建⼀个交互类:
// 设置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";
var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
client.Timeout = 60000;  // 修改超时时间
在上⾯代码中,常量APP_ID在百度云控制台中创建,常量API_KEY与SECRET_KEY是在创建完毕应⽤后,系统分配给⽤户的,均为字符串,⽤于标识⽤户,为访问做签名验证,可在AI服务控制台中的应⽤列表中查看。
注意:如您以前是百度云的⽼⽤户,其中API_KEY对应百度云的“Access Key ID”,SECRET_KEY对应百度云的“Access Key Secret”。
接⼝说明
通⽤⽂字识别
⽤户向服务请求识别某张图中的所有⽂字
// 设置APPID/AK/SK
public static string APP_ID = "你的APP_ID";
public static string API_KEY = "你的API_KEY";
public static string SECRET_KEY = "你的SECRET_KEY";
public Baidu.Aip.Ocr.Ocr client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
//通过图⽚提取⽂字
public JsonResult GetImgText(string UserName)
{
if (Request.Files.Count > 0)
{
Request.Files[0].SaveAs(Server.MapPath("~/Img/") + UserName + "_" + Path.GetFileName(Request.Files[0].FileName));
var image = System.IO.File.ReadAllBytes(Server.MapPath("~/Img/") + UserName + "_" + Path.GetFileName(Request.Files[0].FileName));
// 调⽤通⽤⽂字识别, 图⽚参数为本地图⽚,可能会抛出⽹络等异常,请使⽤try/catch捕获
var result = client.GeneralBasic(image);
// 如果有可选参数
var options = new Dictionary<string, object>{
{"language_type", "CHN_ENG"},
{"detect_direction", "true"},
{"detect_language", "true"},
{"probability", "true"}
};
// 带参数调⽤通⽤⽂字识别, 图⽚参数为本地图⽚
result = client.GeneralBasic(image, options);
result = client.GeneralBasic(image, options);
System.Diagnostics.Debug.WriteLine(result);
System.IO.File.Delete(Server.MapPath("~/Img/") + UserName + "_" + Path.GetFileName(Request.Files[0].FileName));
return Json(result.ToString());
}
else {
return Json(null);
}
}
public JsonResult GeneralBasicDemo()
{
var filePath = Server.MapPath(string.Format("~/Img", "File"));//项⽬下的⽬录
var image = System.IO.File.ReadAllBytes(Path.Combine(filePath, "sfzb.jpg"));//注意File有可能⽆法识别,所以需要完整的引⽤-System.IO.File            // 调⽤通⽤⽂字识别, 图⽚参数为本地图⽚,可能会抛出⽹络等异常,请使⽤try/catch捕获
var result = client.GeneralBasic(image);
Console.WriteLine(result);
return Json(result);
// 如果有可选参数
//var options = new Dictionary<string, object>{
//    {"language_type", "CHN_ENG"},
//    {"detect_direction", "true"},
//    {"detect_language", "true"},
//    {"probability", "true"}
//};
带参数调⽤通⽤⽂字识别, 图⽚参数为本地图⽚
//result = client.GeneralBasic(image, options);
//Console.WriteLine(result);
}
public void GeneralBasicUrlDemo()
{
var url = "http//www.x/sample.jpg";
// 调⽤通⽤⽂字识别, 图⽚参数为远程url图⽚,可能会抛出⽹络等异常,请使⽤try/catch捕获
var result = client.GeneralBasicUrl(url);
Console.WriteLine(result);
// 如果有可选参数
//var options = new Dictionary<string, object>{
// {"language_type", "CHN_ENG"},
//  {"detect_direction", "true"},
/
/  {"detect_language", "true"},
// {"probability", "true"}
//};
带参数调⽤通⽤⽂字识别, 图⽚参数为远程url图⽚
//result = client.GeneralBasicUrl(url, options);
//Console.WriteLine(result);
}
前台代码(⽤到了layui前台框架):
@{
Layout = null;
}
<html>
<head>
<title>百度云OCR技术</title>
</head>
<body>
<h1>百度云OCR技术</h1>
<h2>提取图⽚中的⽂字|数字|.|-</h2>
<div id="main" >
<form id="ocr_form" action="#" method="post" enctype="multipart/form-data">
<input type="file" id="ocr_form_imgSelBtn" />
<button type="submit" id="ocr_form_submit" hidden >提交</button>
</form>
</div>
</body>
</html>
<script src="~/PageUI/MyInfoIndexUi/js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="~/layui/layui.js" type="text/javascript" charset="utf-8"></script>
<script>
$(function () {
layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload;
var ocr = der({
elem: '#ocr_form_imgSelBtn'
, url: "/Home/GetImgText"
, method: 'post'
, accept: "images"
, before: function (obj) {
this.data = { "UserName": "test"};//额外参数关键代码
}
, done: function (data) {
var regx = /^[\u4e00-\u9fa5 -.a-zA-Z0-9]+$/
var jsons = "";
for (var i = 0; i < data.words_result_num; i++) {
if (st(data.words_result[i].words)) {
jsons += data.words_result[i].words + "<br\>";
}
}
layer.alert(jsons);
}
, error: function () {
//失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span >上传失败</span> <br/><a class="layui-btn layui-btn-
mini demo-reload layui-btn-normal">重试</a>');                  demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
}
});
});
});
</script>
通⽤⽂字识别 请求参数详情
参数名称是
类型
可选值范
默认值说明
image是byte[]⼆进制图像数据
url是string 图⽚完整URL,URL长度不超过1024字节,URL对应的图⽚base64编码后⼤⼩不超过4M,最短边⾄少15px,最长边最⼤4096px,⽀持jpg/png/bmp格式,当image字段存在时url字段失效
language_type否string CHN_ENG
ENG
POR
FRE
GER
ITA
SPA
RUS
JAP
KOR
CHN_ENG
识别语⾔类型,默认为CHN_ENG。可选值包括:
- CHN_ENG:中英⽂混合;
- ENG:英⽂;
-
POR:葡萄⽛语;
- FRE:法语;
- GER:德语;
- ITA:意⼤利语;
- SPA:西班⽛语;
- RUS:俄语;
- JAP:⽇语;
- KOR:韩语;
detect_direction否string true
false
false
是否检测图像朝向,默认不检测,即:false。朝向是指输⼊图像是正常⽅向、逆时针旋转
90/180/270度。可选值包括:
- true:检测朝向;
- false:不检测朝向。
detect_language否string true
writeline方法的作用
false
false是否检测语⾔,默认不检测。当前⽀持(中⽂、英语、⽇语、韩语)
probability否string true
false
是否返回识别结果中每⼀⾏的置信度
通⽤⽂字识别 返回数据参数详情
字段必选类型说明
direction否number 图像⽅向,当detect_direction=true时存在。- -1:未定义,
- 0:正向,
- 1: 逆时针90度,
- 2:逆时针180度,
- 3:逆时针270度
log_id是number唯⼀的log id,⽤于问题定位
words_result_num是number识别结果数,表⽰words_result的元素个数
words_result是array定位和识别结果数组
+words否string识别结果字符串
probability否object⾏置信度信息;如果输⼊参数 probability = true 则输出+average否number⾏置信度平均值
+variance否number⾏置信度⽅差
+min否number⾏置信度最⼩值
调⽤⽅法的ajax:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。