簡單的驗證碼識別

這裏只介紹最簡單的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 其他驗證碼 

其他方式的驗證碼,需要對圖片進行處理。涉及到比較複雜的處理流程和原理。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章