广告
返回顶部
首页 > 资讯 > 后端开发 > Python >opencv+tesseract实现验证码识别的示例
  • 877
分享到

opencv+tesseract实现验证码识别的示例

2024-04-02 19:04:59 877人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

一、需要识别的内容

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

二、直接调用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 验证码识别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: opencv+tesseract实现验证码识别的示例

本文链接: https://www.lsjlt.com/news/118944.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • opencv+tesseract实现验证码识别的示例
    目录一、需要识别的内容二、直接调用tesseract来完成识别(识别率很差)三、训练数据样本,提升识别率 四、生成样本库字体五、通过Opencv清除图片的多余杂质(Java...
    99+
    2022-11-11
  • Selenium+Tesseract-OCR智能识别验证码爬取网页数据的实例
    目录1.项目需求描述2.整体思路3.功能实现1.项目需求描述 通过订单号获取某系统内订单的详细数据,不需要账号密码的登录验证,但有图片验证码的动态识别,将获取到的数据存到数据库。 ...
    99+
    2022-11-12
  • PHP验证码识别的示例分析
    这篇文章主要介绍PHP验证码识别的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,...
    99+
    2023-06-14
  • Python+Opencv实现数字识别的示例代码
    一、什么是数字识别?   所谓的数字识别,就是使用算法自动识别出图片中的数字。具体的效果如下图所示: 上图展示了算法的处理效果,算法能够自动的识别到LC...
    99+
    2022-11-11
  • python ocr简单示例之识别验证码
    最终运行效果: OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计...
    99+
    2023-01-16
    python识别验证码 Python OCR 库
  • python验证码识别的实例详解
    其实关于验证码识别涉及很多方面的内容,入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足,对这感兴趣的朋友们下面跟着小编一起来学习学习吧。 依赖 sudo apt-get instal...
    99+
    2022-06-04
    验证码 详解 实例
  • Python验证码识别处理实例
    一、准备工作与代码实例 (1)安装PIL:下载后是一个exe,直接双击安装,它会自动安装到C:Python27Libsite-packages中去, (2)pytesser:下载解压后直接放C:Python...
    99+
    2022-06-04
    验证码 实例 Python
  • python+opencv实现的简单人脸识别代码示例
    # 源码如下: #!/usr/bin/env python #coding=utf-8 import os from PIL import Image, ImageDraw import cv def...
    99+
    2022-06-04
    示例 代码 简单
  • python通过pillow识别动态验证码的示例代码
    目录环境配置 安装 pillow(PIL)库识别过程生活中,我们在登录微博,邮箱的时候,常常会碰到验证码。在工作时,如果想要爬取一些数据,也会碰到验证码的阻碍。本次试验将带领大家认识...
    99+
    2022-11-12
  • 如何使用Python实现极验验证码识别验证码
    这篇“如何使用Python实现极验验证码识别验证码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用Python实现极验...
    99+
    2023-07-05
  • Python+Pillow+Pytesseract实现验证码识别
    目录一、环境配置二、验证码识别实例1实例2实例3昨天十行代码实现文字识别,感觉怎样,是不是很爽 今天咋们继续利用pillow和pytesseract来实现验证码的识别 一、环境配置 ...
    99+
    2022-11-12
  • 基于Opencv图像识别实现答题卡识别示例详解
    目录1. 项目分析2.项目实验3.项目结果总结在观看唐宇迪老师图像处理的课程中,其中有一个答题卡识别的小项目,在此结合自己理解做一个简单的总结。 1. 项目分析 首先在拿到项目时候,...
    99+
    2022-11-12
  • python基于opencv批量生成验证码的示例
    基本思路是使用opencv来把随机生成的字符,和随机生成的线段,放到一个随机生成的图像中去。   虽然没有加复杂的形态学处理,但是目前看起来效果还不错   尝试生成1000张图片,但是最后只有998张,因为有有重复的...
    99+
    2022-06-02
    python 生成验证码 python opencv
  • python简单验证码识别的实现过程
    目录1. 环境准备1.1 安装pillow 和 pytesseract1.2 安装Tesseract-OCR.exe1.3 更改pytesseract.py的ocr路径2. 测试识别...
    99+
    2022-11-12
  • python实现腾讯滑块验证码识别
    腾讯滑块验证码识别,识别凹槽的x轴位置,mock滑块的加速度。该项目公开API,提供识别和加速度模拟部分,第二部分模拟滑动进行识别返回数据请求 项目地址:https://github.com/zhaojunlike/...
    99+
    2022-06-02
    python 验证码识别 python 滑块验证码识别 python 腾讯验证码
  • Python+Selenium+Pytesseract实现图片验证码识别
    目录一、selenium截取验证码二、安装识别环境pytesseract+Tesseract-OCR验证识别环境是否正常三、处理验证码图片图片处理识别一、selenium截取验证码 ...
    99+
    2022-11-12
  • Python+Pillow+Pytesseract怎么实现验证码识别
    这篇“Python+Pillow+Pytesseract怎么实现验证码识别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Py...
    99+
    2023-06-30
  • Python怎么实现图形验证码识别
    这篇文章主要介绍了Python怎么实现图形验证码识别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现图形验证码识别文章都会有所收获,下面我们一起来看看吧。环境使用python 3.9pycha...
    99+
    2023-07-05
  • redis 手机验证码实现示例
    本文主要介绍了redis 手机验证码实现示例,分享给大家,具体如下: public class PhoneCode { public static void main...
    99+
    2022-11-12
  • Java实现滑动验证码的示例代码
    目录1.效果演示2.后端代码控制层工具类3.前端页面功能:java实现滑动验证码 项目是采用springboot,maven 开发工具:采用idea 1.效果演示 2.后端代码...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作