调用百度Api读取图片文字 C#

1.注册百度Api

2.引用 c# SDK

安装文字识别 C# SDK

C# SDK 现已开源! https://github.com/Baidu-AIP/dotnet-sdk

** 支持平台:.Net Framework 3.5 4.0 4.5, .Net Core 2.0 **

方法一:使用Nuget管理依赖 (推荐)

在NuGet中搜索 Baidu.AI,安装最新版即可。

packet地址 https://www.nuget.org/packages/Baidu.AI/

方法二:下载安装

文字识别 C# SDK目录结构

Baidu.Aip
    ├── net35
    │   ├── AipSdk.dll             // 百度AI服务 windows 动态库
    │   ├── AipSdk.xml             // 注释文件
    │   └── Newtonsoft.Json.dll    // 第三方依赖
    ├── net40
    ├── net45
    └── netstandard2.0
        ├── AipSdk.deps.json
        └── AipSdk.dll


官方网站下载C# SDK压缩工具包;解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引用。

 

3.demo源码:

using Newtonsoft.Json.Linq;
using System.IO;

namespace HelperBll
{
    public class ImgApiBll
    {
        //基础参数:从配置文件取过来
        private readonly string _api_key;//百度api键值
        private readonly string _secret_key;//百度api秘钥
        private readonly int _timeOut;//超时设置

        public ImgApiBll(string api_key, string secret_key, int timeOut )
        {
            _api_key = api_key;
            _secret_key = secret_key;
            _timeOut = timeOut;
        }

        /// <summary>
        /// 文字-json格式
        /// </summary>
        /// <param name="imgPath">图片地址</param>
        /// <returns></returns>
        public string ReadImgTxt(string imgPath)
        {
            var client = new Baidu.Aip.Ocr.Ocr(_api_key, _secret_key)
            {
                Timeout = _timeOut  //超时时间
            };

            //本地图片
            byte[] imgStream = File.ReadAllBytes(imgPath); //图片二进制
            JObject jsonResult = client.GeneralBasic(imgStream);

            //网络图片
            //JObject jsonResult = client.GeneralBasicUrl(imgUrl);

            //JObject jsonResult = client.Accurate(imgStream);          //本地图片:相对于通用文字识别该产品精度更高,但是识别耗时会稍长。
            //JObject jsonResult = client.General(imgStream);           //本地图片:通用文字识别(含位置信息版)
            //JObject jsonResult = client.GeneralUrl(imgUrl);          //网络图片:通用文字识别(含位置信息版)

            //JObject jsonResult = client.GeneralEnhanced(imgStream);   //本地图片:调用通用文字识别(含生僻字版)
            //JObject jsonResult = client.GeneralEnhancedUrl(imgUrl);  //网络图片:调用通用文字识别(含生僻字版)

            //JObject jsonResult = client.WebImage(imgStream);          //本地图片:用户向服务请求识别一些背景复杂,特殊字体的文字。
            //JObject jsonResult = client.WebImageUrl(imgUrl);         //网络图片:用户向服务请求识别一些背景复杂,特殊字体的文字。

            return jsonResult.ToString();
        }

    }
}

  

 

4. 程序效果:

图片示例:

 

读出文字结果:

 

{{
  "log_id": 2872598628702849350,
  "words_result_num": 18,
  "words_result": [
    {
      "words": "接口名称"
    },
    {
      "words": "接口能力简要描述"
    },
    {
      "words": "通用文字识别"
    },
    {
      "words": "识别图片中的文字信息"
    },
    {
      "words": "通用文字识别(高精度版)"
    },
    {
      "words": "更高精度地识别图片中的文字信息"
    },
    {
      "words": "通用文字识别(含位置信息版)识别图片中的文字信息(包含文字区域的坐标信息)"
    },
    {
      "words": "通用文字识别(高精度含位置更高精度地识别图片中的文字信息(包含文字区域的坐标信息)"
    },
    {
      "words": "通用文字识别(含生僻字版)识别图片中的文字信息(包含对常见字和生僻字的识别)"
    },
    {
      "words": "网络片文字识别"
    },
    {
      "words": "识别一些网络上背景复杂,特殊字体的文字"
    },
    {
      "words": "身份证识别"
    },
    {
      "words": "识别身份证正反面的文字信息"
    },
    {
      "words": "银行卡识另"
    },
    {
      "words": "识别银行卡的卡号并返回发卡行和卡片性质信息"
    },
    {
      "words": "识别机动车驾驶证所有关键字段"
    },
    {
      "words": "行驶证识别"
    },
    {
      "words": "识别机动车行驶证所有关键字段"
    }
  ]
}}

  

5.总结:

文字截图,基本是可以完整读出来的。

 

参考:https://www.cnblogs.com/xiongze520/p/11283484.html

 

posted @ 2020-05-06 15:15  夏目-D  阅读(886)  评论(2编辑  收藏  举报