当前位置: 首页 >>ASP.NET >>ASP.NET实战 >>如何用C#语言识别图片上的文字

如何用C#语言识别图片上的文字

时间:2020/5/8 10:03:00 【Luckyfish小文】

如何用C#语言识别图片上的文字…

如何用C#语言识别图片上的文字

因为编程是业余的,所以写的东西不规范,大家凑合看:


一、准备工作

    1、dll下载:用的是百度云API,到官网上下载C#SDK http://ai.baidu.com/sdk#ocr,文字识别对应版本:3.6.11 ;解压对应.net版本,在项目引用 以下两个dll;

image.png

 

aip-csharp-sdk-3.6.11.zip

 2、百度云上,利用百度帐号登录Web控制台后,创建生成Access Key ID / Secret Access Key密钥对,下面程序要用到,生成方法可查看官方帮助文档:https://cloud.baidu.com/doc/Reference/s/9jwvz2egb


二、程序开始


 1、新建一个窗体,拉入一个pictureBox和textbox分别用来存放图片和识别后的文字,其它不说了,直接看后台主代码:


       //引用using Newtonsoft.Json;

    /// <summary>

        ///定义 apikey,secret key

        /// APP_ID = "你的 App ID";

        /// API_KEY = "你的 Api Key";

        /// SECRET_KEY = "你的 Secret Key";

        /// </summary>

        public class ApiMessage

        {

            public const string API_ID = " 省略 ";

            public const string API_KEY = "省略";

            public const string SECRET_KEY ="省略";

        } 

     /// <summary>

        /// 图片上文字识别方式

        /// </summary>

        /// <param name="imgUrl">图片路径</param>

        /// <param name="way">GeneralBasic(普通识别);AccurateBasic(高精度识别)</param>

        private void RecognitionWay(string imgUrl,string way)

        {

            var image = File.ReadAllBytes(imgUrl);

            var client = new Baidu.Aip.Ocr.Ocr(ApiMessage.API_KEY, ApiMessage.SECRET_KEY);

            client.Timeout = 60000;  // 修改超时时间

            

            var result=client.AccurateBasic(image);

            // 如果有可选参数

            var options = new Dictionary<string, object>{

                {"language_type", "CHN_ENG"},//语言

                {"detect_direction", "true"},//图片方向

                {"probability", "true"}//图片识别成功可能性

                };

            // 带参数调用通用文字识别,识别方式有很多种,我只是取了其中常用的两种,其它方式可以查看官网帮助文档

            switch(way)

            {

                case"AccurateBasic":

                    result = client.AccurateBasic(image, options);

                    break;

                case"GeneralBasic":

                    result = client.GeneralBasic(image, options);

                    break;

            }

      //关键:result返回的是一个一串Json格式的数据,具体大家可以单独输出查看;

            string getJson = result.ToString();  

      //所以要解析这个JSON,还需一个帮助类JsonImage,然后用JSON反序列化,最后StringBuilder拼接

            JsonImage.Root rt = JsonConvert.DeserializeObject<JsonImage.Root>(getJson);//JSON反序列化

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < rt.words_result.Count; i++)

            {

                textBox1.Text = sb.AppendLine(rt.words_result[i].words).ToString();

            }           

        }      


2、建一个用来解析JSON的辅助类JsonImage.cs

class JsonImage

    {

        public class Probability

        {

            /// <summary>

            ///

            /// </summary>

            public double variance { get; set; }

            /// <summary>

            ///

            /// </summary>

            public double average { get; set; }

            /// <summary>

            ///

            /// </summary>

            public double min { get; set; }

        }

 

        public class Words_resultItem

        {

            /// <summary>

            /// 精确识别图片上的文字

            /// </summary>

            public string words { get; set; }

            /// <summary>

            ///

            /// </summary>

            public Probability probability { get; set; }

        }

 

        public class Root

        {

            /// <summary>

            ///

            /// </summary>

            public Int64 log_id { get; set; }

            /// <summary>

            ///

            /// </summary>

            public int direction { get; set; }

            /// <summary>

            ///

            /// </summary>

            public int words_result_num { get; set; }

            /// <summary>

            ///

            /// </summary>

            public List<Words_resultItem> words_result { get; set; }

        }

    }

  


三、一个简单的识别图片文字程序就完成了,看看效果(标点和文字都能正确识别)

image.png

相关文章

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-15 http://www.yuyanba.com

分享按钮