本文主要讨论C#开发使用百度文字识别OCR来识别文字,本文最后会提供本安全源代码以及运行软件包,如有需要可自行下载
1. 创建百度应用:
创建应用之后就能看到创建完的应用和 API KEY 以及 Secret KEY了,在调用API时需传入这些配置值
详见:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index
2. 引用 Baidu.Aip (SDK)
Baidu.Aip 封闭了文字识别Ocr API 的Http请求,简化代码,提高开发效率。如果不想引用该DLL,可以自己封装Http请求方法。
C# SDK 现已开源,快速接入文档参考:https://ai.baidu.com/ai-doc/OCR/ok3h7y6zw
3. 调用API,
这里仅展示通用及高精度识别示例,特殊场景识别,详见官方文档:https://ai.baidu.com/ai-doc/OCR/Mk3h7y6j8
/// <summary> /// 调用百度 API 识别文字 /// </summary> /// <param name="imgPath">图片路径</param> /// <param name="accurate">是否高精度</param> /// <returns></returns> public BaiduRetOcr Recognize(string imgPath, bool accurate) { try { string appId, apiKey, secretKey; if(!RiverAuth.Instant.GetOcrApiConfig(out appId, out apiKey, out secretKey))// 读取应用配置 return new BaiduRetOcr(); var client = new Baidu.Aip.Ocr.Ocr(apiKey, secretKey); client.Timeout = (int)ConfigUtil.GetConfig(EnumConfigKey.ClientTimeOut, 60 * 1000); var image = File.ReadAllBytes(imgPath); // 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用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"} }; // 带参数调用通用文字识别, 图片参数为本地图片 if (accurate) { result = client.AccurateBasic(image, options); } else result = client.GeneralBasic(image, options); return result.ToObject<BaiduRetOcr>(); } catch (Exception ex) { MsgUtil.Error("识别错误:"+ex.Message); return new BaiduRetOcr(); } finally { } }
4. 识别结果
原图片:
图片识别结果:
5. 源代码及软件包下载
软件开源代码地址(集成项目):https://gitee.com/bidev_admin/river-int-ai.git
运行软件包下载地址(.Net Framework 4.5): https://pan.baidu.com/s/1z-WFDGHhEP8tqLqwp9I0Mw 提取码: r3sk
作者:沐汐 Vicky
出处:http://www.cnblogs.com/EasyInvoice
以上就是c# 开发文字识别软件的详细内容,更多关于c# 文字识别的资料请关注小牛知识库其它相关文章!
本文向大家介绍c# 开发语音识别程序,包括了c# 开发语音识别程序的使用技巧和注意事项,需要的朋友参考一下 AI 平台:http://ai.baidu.com/ 开发工具:vs 2017 准备工作 1、注册百度账号 2、登录百度 AI 开发平台,http://ai.baidu.com/ 3、在控制台点击“百度语音”服务,点击“创建应用”,填写必填项,勾选额外接口,点击立即创建获取秘钥。在应用列表中
有些记不清了,记得啥写啥 1.智能指针作用,具体到哪个智能指针 2.如何让 class A{} A a; A b = a;报错 3.进程、线程区别 4.有几种拷贝构造函数 5.进程间通信方式 6.算法:单链表快速排序
总时长30分钟 无手撕 1. 自我介绍 2. 进程和线程的区别(资源消耗、安全性、通信方面)重点问了通信方面的区别, 3. 从输入百度,到显示出来,中间涉及到的协议。 讲了DNS,tcp三次握手,四次挥手,https中的ssl握手等 4. 又问了以上都是应用层传输层网络层的协议,那底下的数据链路层和物理层的协议有哪些,有什么作用 讲了arp协议,mac协议,以及IEEE802.1A协议。 5. 因
1、自我介绍 2、项目介绍 3、局部变量,全局变量,静态变量区别 4、本科成绩如何 5、对公司影像算法有了解吗?HDR实现原理 6、反问,介绍工作业务 整体花了25min,项目介绍花的时间较多,介绍了毕设怎么做的。我毕设是基于GPT2,所以又问了GPT2底层是什么原理,历代GPT有什么区别,attention机制怎么实现的。 因为虹软做cv算法,之前猜到会问cv相关,果真问我CNN了解怎么样,就说
1、自我介绍。 2、STL库vector对内存优化。 3、堆排序解释,删除插入操作怎么实现。 4、开发c++主要用什么平台,遇到过什么问题,比如内存泄露是怎么解决的。 5、父类有两个虚函数,虚函数同名但参数不同,也就是进行了重载。子类对其重载的虚函数进行重写之后,能否访问到未重载的虚函数(回答不能,用虚函数实现原理解释的,面试官后面纠正我说其实是有保护机制) 其他细节忘了,感觉二面明显比一面难点,
90分钟 题型:选择题(单选和多选混杂)、编程题 知识点:C/C++、操作系统、计算机网络等 编程题2道:电话号码排序(不让用stl的容器,没说有没有重复,可能是想考察bitmap吧)、名字簿关键字查找(不让用strstr等接口,可能是考察手搓字符串匹配吧) 贼头疼的一次笔试,题目难度是目前做到过的最高的,考察的点都特别细,选择题做到第七道才发现单选和多选是混着来的,并且不能回退!编程题没有自测运