python opencv 验证码识别,opencv tesseract

  python opencv 验证码识别,opencv tesseract

  本文主要介绍了中文版宇宙魔方实现验证码识别的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  

目录

一、需要识别的内容二、直接调用超正方体来完成识别(识别率很差)三、训练数据样本,提升识别率四、生成样本库字体五、通过中文版清除图片的多余杂质(Java实现)

 

  

一、需要识别的内容

 

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

  

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

 

  识别的图片内容为:

  在窗户系统钟打开煤矿管理局命令窗口,执行识别命令如下:

  tesseract.exe01.png输出

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

  

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

 

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

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

  1)jTessBoxEditor-工具-合并争执

  2)全选所有的样本文件,之后生成的标签图像文件格式。命名为jtbnum.font.exp0.tif

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

  

四、生成样本库字体

 

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

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

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

  雷姆执行改批处理前先要目录下创建字体属性文件

  训练用回声运行宇宙魔方.

  tesseract.exe jtb编号。字体。exp0。TIF jtb编号。字体。exp0无批次箱。火车

  回声计算字符集.

  unicharset _ extractor。exe jtb编号。字体。exp0。包厢

  MF training-F font _ properties-U unicharset-O jtb num。unicharset jtb编号。字体。实验0。tr

  回声聚类.

  cntraining.exe jtb编号。字体。exp0。tr

  回显重命名文件.

  del jtbnum.normproto

  重命名normproto jtbnum.normproto

  del jtbnum.inttemp

  重命名inttemp jtbnum.inttemp

  del jtbnum.pffmtable

  重命名pffmtable jtbnum.pffmtable

  del jtbnum.shapetable

  重命名shapetable jtbnum.shapetable

  回声创建Tessdata.

  combine_tessdata.exe jtbnum .

  中止

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

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

  5)测试识别率:

  识别的图片内容为:

  tesseract.exe01.png输出。txt -l jtbnum

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

  

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

 

  如果(!hasLoad){

  系统。load(opencv path /build/Java/x64/opencv _ Java 440。dll’);

  hasLoad=true

  }

  byte[]bytes=base 64 utils。decodefromstring(base64);

  string path=保存路径“/”系统。当前时间毫秒() .png ;

  尝试{

  输出流输出流=新文件输出流(新文件(路径));

  输出流.写(字节);

  outputStream.flush().

  输出流。close();

  } catch(异常e) {

  e。printstacktrace();

  }

  mat image 0=img编解码器。im read(路径);

  Mat image1=new Mat();

  //灰度处理

  Imgproc.cvtColor(image0,image1,Imgproc .COLOR _ bgr 2灰色);

  Imgproc。自适应阈值(图像1,图像1,255,Imgproc .自适应阈值均值C,Imgproc .THRESH_BINARY,11,2);

  Core.bitwise_not(image1,image1);

  mat kernel=Imgproc。getstructuringelement(Imgproc .RECT墨菲,新大小(2,2),新点(-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输出. txt -l jtbnum

  识别结果是:5191,识别已经很精确.

  关于opencv tesseract验证码识别的例子,本文到此结束。关于opencv tesseract验证码识别的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门的IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • qq短信验证码发送失败怎么回事,qq验证码失败是怎么回事
  • ,,使用阿里大于(大鱼)平台进行发送手机验证码的流程
  • ,,SpringSceurity实现短信验证码登陆
  • android读取短信验证码,
  • android读取短信验证码,,Android使用MobSDK短信验证
  • android自动获取短信验证码功能在哪,安卓自动获取短信验证码
  • android自动获取短信验证码功能在哪,android自动获取短信验证码功能失效,Android自动获取短信验证码功能
  • android实现短信验证码自动填写功能是什么,安卓短信验证码自动填充 实现
  • android实现短信验证码自动填写功能是什么,安卓短信验证码自动填充 实现,Android实现短信验证码自动填写功能
  • android如何通过手机自动获取短信验证码信息,安卓自动获取短信验证码
  • android如何通过手机自动获取短信验证码信息,安卓自动获取短信验证码,Android如何通过手机自动获取短信验证码
  • ,,python网络爬虫实现发送短信验证码的方法
  • ,,Python实现滑块拼图验证码详解
  • ,,python3 破解 geetest(极验)的滑块验证码功能
  • 发验证码不在桌面显示,验证码能收到桌面上不显示怎么回事
  • 留言与评论(共有 条评论)
       
    验证码: