• 简单的验证码识别


    这里只介绍最简单的4位数字不太复杂的验证码。

    1. 生成验证码图片。(随机数直接使用数字。 new Random().Next(10) 。 )

    生成图片的代码

            /// <summary>
            /// 获取含验证码字符串的图片。
            /// </summary>
            /// <param name="validateCode">验证码字符串。</param>
            /// <returns>图片对象。</returns>
            public static Image CreateCaptchaSimpleImage(string validateCode)
            {
                Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 16.0), 27);
                using (Graphics g = Graphics.FromImage(image))
                {
                    var font = new Font(FontFamily.GenericMonospace, 13);
                    var brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue,
                        Color.DarkRed, 1.2f, true);
                    g.DrawString(validateCode, font, brush, 3, 2);
                    return image;
                }
            }

    2. 识别部分, 

    使用nuget安装  使用Tesseract +data  或者直接使用 Tesseract.Net.SDK

    调用方法识别验证码

            /// <summary>
            /// 识别字符串。
            /// </summary>
            /// <param name="bitmap">bitmap图片。</param>
            /// <returns>识别结果。</returns>
            public string GetStringFromImage(Bitmap bitmap)
            {
                using (var ocrApi = OcrApi.Create())
                {
                    ocrApi.Init(Languages.English);
                    return ocrApi.GetTextFromImage(bitmap);
                }
            }

    3. 测试识别率。

    可以看到 数字识别率是最高的。 字母识别率比较低。

     4 其他验证码 

    其他方式的验证码,需要对图片进行处理。涉及到比较复杂的处理流程和原理。

  • 相关阅读:
    07 监控100台服务器磁盘利用率
    算法提高 阮小二买彩票
    算法提高 日期计算
    算法提高 身份证号码升级
    算法提高 统计单词数
    算法提高 3000米排名预测
    算法提高 最长字符序列
    算法提高 种树
    算法训练 装箱问题
    算法训练 瓷砖铺放
  • 原文地址:https://www.cnblogs.com/wtujvk/p/11273427.html
Copyright © 2020-2023  润新知