惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
小众软件
小众软件
V
V2EX
博客园 - Franky
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
量子位
博客园 - 【当耐特】
雷峰网
雷峰网
WordPress大学
WordPress大学
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog

博客园 - 余昭(Ray)

AI 编程实战营毕业总结 解决github访问速度慢的问题 使用交互界面配置centos网络(NMTUI) 银河麒麟安装达梦数据库失败Unable to load native library: libnsl.so.1: cannot open shared object file: No such file or directory Net5中使用Swagger 编译Windows 版本的Redis 6.x TypeScript入门 NetCore使用Nlog记录日志 QuickStart系列:Docker部署PostgreSQL 搭建docker本地仓库 NT Kernel & System (ntoskrnl)占用80端口 使用SSH配置git服务器免密提交 QuickStart系列:docker部署之Gitlab本地代码仓库 https环境搭建(本地搭建) docker搭建elk 使用本机IP调试web项目 本地调试微信(内网穿透) ElasticsearchCRUD翻译系列之(一): ElasticsearchCRUD 介绍 阿里云Oss对象存储 asp.netmvc部署到linux(centos)
简单的验证码识别
余昭(Ray) · 2019-07-30 · via 博客园 - 余昭(Ray)

这里只介绍最简单的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 其他验证码 

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