Example #1
0
        /// <summary>
        /// 百度文字识别-解析返回的json数据
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        private static string GeneralParseJSON(string json)
        {
            // 解析json数据
            JavaScriptSerializer js   = new JavaScriptSerializer();
            BaiduOcrJson         list = js.Deserialize <BaiduOcrJson>(json);

            if (list.error_code != null) // 如果调用Api出现错误
            {
                throw new Exception("OCR识别错误!" + "\n原因:" + list.error_msg);
            }
            if (list.words_result.Count == 0)
            {
                return("未检测到文字");
            }
            // 接收序列化后的数据
            StringBuilder builder = new StringBuilder();

            foreach (var item in list.words_result)
            {
                builder.Append(item.words + "\r\n");
            }

            // 查找最后一个换行符的位置
            return(builder.ToString().TrimEnd(new char[] { '\r', '\n' }));
        }
Example #2
0
        // 调用百度API文字识别
        private static string GeneralBasic(string from, Image img)
        {
            if (from == "ru")
            {
                from = "RUS";
            }
            else
            {
                from = "CHN_ENG";
            }
            // 获取文字识别AccessToken
            string token = GetAccessToken();

            Encoding       encoding = Encoding.Default;
            HttpWebRequest request  = (HttpWebRequest)WebRequest.Create(accurate_basic_host + token);

            request.Method    = "post";
            request.KeepAlive = true;

            string base64 = ImageToBase64(img);
            string str    = "image=" + HttpUtility.UrlEncode(base64) + "&language_type=" + from;

            byte[] buffer = encoding.GetBytes(str);
            request.ContentLength = buffer.Length;
            request.GetRequestStream().Write(buffer, 0, buffer.Length);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            string result;

            using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                result = reader.ReadToEnd();
            }

            JavaScriptSerializer js   = new JavaScriptSerializer();            // 实例化一个能够序列化数据的类
            BaiduOcrJson         list = js.Deserialize <BaiduOcrJson>(result); // 将json数据转化为对象类型并赋值给list

            if (list.error_code != null)                                       // 如果调用Api出现错误
            {
                throw new Exception("OCR识别错误!" + "\n原因:" + list.error_msg);
            }

            // 接收序列化后的数据
            StringBuilder builder = new StringBuilder();

            foreach (var item in list.words_result)
            {
                builder.Append(item.words + "\r\n");
            }

            // 查找最后一个换行符的位置
            int len = builder.ToString().LastIndexOf('\r');

            return(len < 0 ? "" : builder.ToString().Remove(len));
        }
Example #3
0
        /// <summary>
        /// 二维码识别
        /// </summary>
        /// <param name="path"></param>
        /// <param name="img"></param>
        /// <returns></returns>
        public static string QRCode(Image img)
        {
            string host   = "https://aip.baidubce.com/rest/2.0/ocr/v1/qrcode?access_token=";
            string base64 = WebExt.ImageToBase64(img);
            string str    = "image=" + HttpUtility.UrlEncode(base64);
            string result = WebExt.Request(host, GetAccessToken(), str);
            // 解析json数据
            JavaScriptSerializer js   = new JavaScriptSerializer();
            BaiduOcrJson         list = js.Deserialize <BaiduOcrJson>(result);

            if (list.error_code != null) // 如果调用Api出现错误
            {
                throw new Exception("OCR识别错误!" + "\n原因:" + list.error_msg);
            }
            if (list.codes_result.Count == 0)
            {
                return("未检测到二维码");
            }

            // 接收序列化后的数据
            StringBuilder builder = new StringBuilder();

            foreach (var item in list.codes_result)
            {
                builder.Append("二维码类型:" + item.type + "\r\n");
                builder.Append("二维码内容:");
                foreach (var text in (IEnumerable <object>)item.text)
                {
                    builder.Append(text + "\r\n");
                }
            }

            // 查找最后一个换行符的位置
            int len = builder.ToString().LastIndexOf('\r');

            return(len < 0 ? "" : builder.ToString().Remove(len));
        }