zoukankan      html  css  js  c++  java
  • C#使用Tesseract OCR 解析验证码

    之前我在<<C#简单数字验证码解析>>一文中介绍了用C#识别简单不变形数字验证码,但是对于识别变形的image 或生成位置变化比较频繁的image 验证码的准确率却不高。

    下面介绍一个开源的OCR引擎Tesseract2。值得庆幸的是虽然是开源的但是它的识别率较高,并不比其他引擎差劲。网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是Google在维护,大家都知道Google 在搞电子图书馆,每天都有不同类目的书被扫描成电子版。所以有G老大维护,识别率差不到哪里去。呵呵。。别鄙视我。。。

    Tessnet2 是用vc ++ 开发的,其中是生成Tessnet2.dll ,我们可以通过.net 来调用内部具体类库实现识别。

    Tessnet2的使用:

    1、点击https://files.cnblogs.com/zhuxiangyu/tessnet2_32.rar链接下载Tessnet2.dll ,

       Tessnet2是支持多国语的。语言包下载链接:http://code.google.com/p/tesseract-ocr/downloads/list

    2、将Tessnet2.dll 添加到vs 引用中,和添加.net程序集一样。

    3、用Tessnet2进行识别

     WebRequest request = WebRequest.Create("http://sz.2zf.cn/js/code2.asp");
                WebResponse response = request.GetResponse();
                Stream st = response.GetResponseStream();
                Bitmap bitmap = (Bitmap)Bitmap.FromStream(st);
     UnCodebase ud = new UnCodebase(bitmap );
                bitmap = ud.GrayByPixels();
                ud.ClearNoise(128, 2);
    
                pictureBox1.Image = bitmap ;
    
    tessnet2.Tesseract ocr = new tessnet2.Tesseract();//声明一个OCR类
                ocr.SetVariable("tessedit_char_whitelist", "0123456789"); //设置识别变量,当前只能识别数字。
                ocr.Init(Application.StartupPath + @"\\tmpe", "eng", true); //应用当前语言包。注,Tessnet2是支持多国语的。语言包下载链接:http://code.google.com/p/tesseract-ocr/downloads/list
                List<tessnet2.Word> result = ocr.DoOCR(bitmap , Rectangle.Empty);//执行识别操作
                string code = result[0].Text;
                textBox1.Text = code;

    识别效果:

    image

    代码下载:CSharp简单数字验证码解析.rar

  • 相关阅读:
    (二十三)、int与integer的区别
    (二十一)、Java序列化与反序列化
    (二十)、MVC设计思想的优缺点
    (十九)、列出自己常用的JDK包
    (十八)、Session与Cookie区别
    win10 下安装laravel
    冒泡排序
    常用php正则表达式
    AE网站
    AE压缩网站
  • 原文地址:https://www.cnblogs.com/ivanyb/p/2263043.html
Copyright © 2011-2022 走看看