一、需要识别的内容

需要识别的验证码内容如下  验证码下载下载地址。

二、直接调用tesseract来完成识别(识别率很差)

识别的图片内容为:

在window系统钟打开cmd命令窗口,执行识别命令如下:

tesseract.exe 01.png output.txt -l eng

识别结果为:519}       该识别准确率远远达不到预期

三、训练数据样本,提升识别率

1、下载10份样本(样本数量越多,识别率越高),然后通过jTessBoxEditor来进行样本数据矫正(该步骤耗时较长)。

 2、打开 jTessBoxEditor,将所有的样本数据生成一个总的tif文件(tif就是所有图片的集合)。操作如下:

1)jTessBoxEditor->Tools->Merge TIFF

2 )全选所有的样本文件,之后生成的tif命名为 jtbnum.font.exp0.tif

3)进行数据识别调整,如下图:

 四、生成样本库字体

将所有的样本识别内容都调整正确后(调整的参数保存在jtbnum.font.exp0.box文件钟),我们需要将我们生成的样本文件封装成我们的 jtbnum.traineddata 字体库,生成方式如下:

1)创建 font_properties 文件,内容为 font 0 0 0 0 0

2)在同级目录创建 run.bat 文件 内容如下

rem 执行改批处理前先要目录下创建font_properties文件  
  
echo Run Tesseract for Training..  
tesseract.exe jtbnum.font.exp0.tif jtbnum.font.exp0 nobatch box.train  
  
echo Compute the Character Set..  
unicharset_extractor.exe jtbnum.font.exp0.box  
mftraining -F font_properties -U unicharset -O jtbnum.unicharset jtbnum.font.exp0.tr  
  
echo Clustering..  
cntraining.exe jtbnum.font.exp0.tr  
  
echo Rename Files..  
 
del jtbnum.normproto
rename normproto jtbnum.normproto
 
del jtbnum.inttemp
rename inttemp jtbnum.inttemp
 
del jtbnum.pffmtable
rename pffmtable jtbnum.pffmtable
 
del jtbnum.shapetable
rename shapetable jtbnum.shapetable
  
echo Create Tessdata..  
combine_tessdata.exe jtbnum. 
 
pause

 3)双击执行 run.bat 文件,系统执行完成后,将会生成 jtbnum.traineddata 文件。

4)将 jtbnum.traineddata 拷贝到tesseract安装目录下的tessdata文件夹下。

5)测试识别率:

 识别的图片内容为:

tesseract.exe 01.png output.txt -l jtbnum

 识别结果为:51915       识别结果已经很准确率,但是验证码图片中的杂质没有清除,导致会识别出多余内容来。

五、通过Opencv清除图片的多余杂质(Java实现)

if(!hasLoad){
            System.load(opencvPath "/build/java/x64/opencv_java440.dll");
            hasLoad = true;
        }
 
        byte [] bytes = Base64Utils.decodeFromString(base64);
        String path = savePath "/" System.currentTimeMillis() ".png";
        try {
            OutputStream outputStream = new FileOutputStream(new File(path));
            outputStream.write(bytes);
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        Mat image0 = Imgcodecs.imread(path);
        Mat image1 = new Mat();
        //灰度处理
        Imgproc.cvtColor(image0, image1, Imgproc.COLOR_BGR2GRAY);
        Imgproc.adaptiveThreshold(image1,image1,255,Imgproc.ADAPTIVE_THRESH_MEAN_C,Imgproc.THRESH_BINARY,11, 2);
        Core.bitwise_not(image1,image1);
        Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(2, 2), new Point(-1, -1));
        Mat temp = new Mat();
        Imgproc.erode(image1, temp, kernel);
        Imgproc.dilate(temp, temp, kernel);
        String newPath = path.substring(0,path.lastIndexOf("."))  "_1.png";
        Imgcodecs.imwrite(newPath,temp);

图片处理结果如下(杂质已经清除):

5)测试识别率:

 识别的图片内容为:

tesseract.exe 01.png output.txt -l jtbnum

 识别结果为:5191       识别已经很精确

到此这篇关于opencv tesseract实现验证码识别的示例的文章就介绍到这了,更多相关opencv tesseract 验证码识别内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

opencv+tesseract实现验证码识别的示例的更多相关文章

  1. iOS使用openCV检测来自摄像头的矩形

    如果我在处理它之前克隆matimage,通过记录它,它似乎处理图像甚至找到矩形,但矩形不会被绘制到图像输出到imageView.我很确定我错过了一些东西,可能是因为我没有正确传递某个对象,指向对象的指针等等,而我需要修改的对象则没有.无论如何,如果这不是正确的方法,我真的很感谢他们做这样的事情的教程或例子,使用openCV或GPUImage…它不需要尝试使用matimage来设置imageView.image,而只需要将matimage转换为在imageView中实际修改,因为CvVideoCamera已

  2. 使用Xcode为OS X Lion / Mountain Lion编译OpenCV(2.3.1)

    任何人都可以为我提供一些如何使用Xcode在OSXLion上编译OpenCV2.3.1的详细指南吗?我对此感到生气…我得到了源码,使用cmake创建Xcode模板并尝试构建它,但它失败了大约200个错误.提前致谢,大教堂解答我的回答帖子.解决方法详细指南如何使用MacPorts在Xcode4.2.1的OSXLion下启动和运行OpenCV2.3.1编辑08/06/2012:这也适用于OpenCV2.4.1.只需确保您获得最新版本的Xcode并安装“命令行工具”.编辑15/08/2012:使用Mountai

  3. ios – OpenCV构建问题,找不到ext/atomicity.h

    我得到编译器错误抱怨在构建包含OpenCV的项目时.环境是针对iOS的Xcode4.5.它为模拟器编译良好,但在为设备构建时失败.这是错误文本:我正在使用opencv2.framework,使用指令here构建cmake.解决方法默认情况下,XCode4.5使用libc(支持C11的LLVMC标准库)生成要构建的新项目.但OpenCV期望针对GNUlibstd

  4. 从IOS / iPad / iPhone的最大速度

    我使用OpenCVforiOS完成计算密集型应用程序.当然这很慢.但它比我的PC原型慢了200倍.所以我正在优化它.从最初的15秒,我能够获得0.4秒的速度.我想知道我是否找到了所有的东西以及别人想要分享的东西.我做了什么:>将OpenCV中的“double”数据类型替换为“float”.双倍是64位,32位cpu不能轻易处理,所以浮动给了我一些速度.OpenCV经常使用双倍.>为编译器选项添加了

  5. ios – 在哪里可以找到tesseract-> setvariable函数的第一个参数的可用属性名称列表?

    从很多护目镜中,我只能找到其中几个,如下图所示:tesseract的setvariable我想知道他们中有多少人?有没有列表可用?如果有的话请给我链接.解决方法这个代码应该是iOS的诀窍…可能需要一点调整.

  6. ios – 是否可以使用Tesseract OCR识别iPhone屏幕上绘制的角色?

    从过去的2周开始,我正在努力实现“识别iPhone屏幕上绘制的角色”.我搜索这个,我找到了TesseractOCR.通过使用TesseractOCR,我们能够识别图片中的字符.现在我的问题是,是否可以使用TesseractOCR识别iPhone屏幕上绘制的角色?

  7. 在Swift iOS中使用OpenCV

    在我的xcode项目中添加OpenCV2框架后,我试图搜索samlpes或教程与swift集成。有什么好的教程同样吗?OpenCV是用C编写的框架。苹果的reference告诉我们YoucannotimportC++codedirectlyintoSwift.Instead,createanObjective-CorCwrapperforC++code.所以你不能在一个swift项目中直接导入和使用OpenCV,但这实际上并不坏,因为你(需要)继续使用框架的C语法,这是在网络上有很多文档。那么你怎么进行呢

  8. 在Android Studio中解决已弃用的NDK警告

    或者除了添加所有已编译的代码并设置我之前提到的标志之外,还有其他方法可以将OpenCV导入Android项目吗?任何有关这方面的帮助将不胜感激.解决方法我建议迁移到使用cmake的本机支持.您可以查看链接,该链接提供了使用cmake通过以下link添加OpenCV的分步教程.您的代码应该保持不变而不做任何更改,只有必要的操作才能弄清楚如何使用CMakeLists.txt将它们包含在构建过程中.

  9. android – opencv管理器包没找到?如何自动安装?

    我正在使用openCV,每当我运行代码时它都会给我包管理器没有安装,那么如何通过我的应用程序安装它.是必须从Play商店下载它还是我们可以在设备中自动安装它.请帮我.提前致谢.解决方法您需要使用静态初始化来包含apk中的所有OpenCV二进制文件.请参阅此文档:ApplicationDevelopmentwithStaticInitialization

  10. 如何从Android相机中找到框架的轮廓并将其转换为box2d实体?

    使用openframeworks,OpenCV和Box2D,我能够以良好的帧速率实现它.使用Android似乎是一项更复杂的任务(部分原因是我是JAVA新手).这就是我的开始:>使用“OpenCV示例–图像处理”并删除除“canny”效果之外的所有内容,这会产生一个漂亮的黑色&白色图像,非常适合找到轮廓.>从“OpenCVSample–color-blob-detection”中我抓住了在Mat中

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部