当前位置: 首页 > 编程笔记 >

c# 开发文字识别软件

景修杰
2023-03-14
本文向大家介绍c# 开发文字识别软件,包括了c# 开发文字识别软件的使用技巧和注意事项,需要的朋友参考一下

本文主要讨论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、在控制台点击“百度语音”服务,点击“创建应用”,填写必填项,勾选额外接口,点击立即创建获取秘钥。在应用列表中

  • 总时长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、父类有两个虚函数,虚函数同名但参数不同,也就是进行了重载。子类对其重载的虚函数进行重写之后,能否访问到未重载的虚函数(回答不能,用虚函数实现原理解释的,面试官后面纠正我说其实是有保护机制) 其他细节忘了,感觉二面明显比一面难点,

  • 一个类里有char和int,这个类的size C语言怎么实现多态 多进程死锁怎么排查 栈和堆的区别 全局静态变量在堆还是栈 软硬链接 信号与槽的底层机制 vector的扩容机制 map的查找时间复杂度 指针和引用的区别 自旋锁 互斥锁 读写锁 怎么确定一个点在多边形内部 快速排序思路 20gb的文件中的字符串排序 智能指针 自定义智能指针的具体实现 四种强制类型转换 怎么避免隐式类型转换#金山软件

  • 一二面+hr面 一面:40min(一二面一起面,两个面试官) 1.自我介绍 2.联合体和结构体区别 联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------自定义数据类型 Struct与Union主要有以下区别: (1)struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了