使用Tesseract-OCR编程识别验证码

本文参加i春秋原创计划,未经许可严禁转载


Tesseract简介

OCR是什么?OCR(Optical Character Recognition):光学字符识别,简单来说就是识别图片上的文字获取,然后转换成一些我们需要的编码格式,当然当中的实现与ANN,deep learning有所关系,这是后话了,好用就行。

Tesseract是什么?Tesseract是一款开源的OCR识别引擎,一开始是由HP实验室挖坑的,开源后就给Google进行继续填坑了。最初Tesseract发布在SourceForge,googleCode,不过到今天(2016年12月30日),这个项目基本扎根在gayhub上了。

那么最后Tesseract有什么用?为什么使用Tesseract?显然的验证码识别可以使用Tesseract,至于为什么,当然是因为使用起来非常非常的简单,你不需要任何相关的知识就可以把Tesseract移植到自己的代码中。


如何获取Tesseract

获取Tesseract的方法非常简单,直接登录gayhub就可以了。当然如果你希望下载快一点的话,你应该使用一些科学上网的手段。


一.你可以使用下面的链接来获取tesseract


https://github.com/tesseract-ocr

163115x0aa0rataznva88g.png
然后点击Clone or download,如果你没用gayhub for windows的话,你可以直接点击download Zip
163115eefbi2ffibmohiz7.png


编译Tesseract的准备工作

当然光有Tesseract还不够,Windows平台你还需要下面三个工具。


1.Visual studio 2015(至少是2013以后版本),必须支持C++ 11。


你可以在这个连接中下载到Visual Studio 2015:
https://www.visualstudio.com/


2.你还需要cppan和CMake将Tesseract转换为Visual Studio 2015可以编译的项目。


CPPAN下载地址:
https://cppan.org/client/cppan-master-Windows-client.zip
CMAKE下载地址:
https://cmake.org/download/

当你全部搞定后,你应该有类似下面几个文件
163115vvqqsl5xvqv81485.png 现在你需要做以下事情
1. 安装CMake,然后重启你的电脑。
2.把tesseract解压出来,解压完成后大概是这个样子
163116rfbsajh5f0xjhyzf.png
解压cppan,然后把解压出来的cppan.exe它分别放在tesseract的目录和cmake的安装目录下,如图1.1,1.2。
163116or2222cqrtlnunaz.png    
图1.1
163116tzdbzddw3bgann9r.png             
图1.2

编译Tesseract

一、打开cmd,cd到tesseract的解压目录(为了方便我把tesseract-master重命名为tesseract了)
163116oq0f1yif1f1rsg06.png


然后依次输入下面的命令:
1. cppan
2. mkdir build
3. cd build
4. cmake ..
不出意外的话,你应该看到这个:
163117hzufqkqhrarbrwmp.png

二、然后进入tesseract目录下的build目录,应该就可以看到visual studio 2015的项目文件了。
163117kl9maoc7lviacmr7.png

三、双击这个项目文件,启动visual studio 2015,在项目中,找到tesseract,点击鼠标右键,将发布版本切换为release,单击build,然后去泡一杯咖啡,慢慢坐着等。
163117hbk18fibfku7ifib.png


四、假如不出意外的话,你应该看得到这个错误
163118n1e1zxq5ce672ese.png

双击这个错误,找到那个报错的源代码文件,将那个文件用记事本打开,以UTF-8的编码格式保存,没错,就是这个文件
163118tbvy2u20tbutcbll.png

然后重新编译一次,这回不出意外的话,你应该看得到这个
163118y28hp5tmjq05jqjh.png

编译结束后,你应该可以在tesseract的文件下找到下面的目录
Tesseract\build\bin\Release
里面的文件类似于这样
163119c4iynazz8yw7it4a.png

使用tesseract编程识别验证码

1、打开Visual studio 2015,新建一个空项目,创建一个Main.cpp

2、将Tesseract\build\bin\Release目录下的所有文件拷贝到这个项目目录下。

3.将Tesseract这个目录拷贝到这个项目的文件夹下

4.将C:\Users\你的名字\.cppan这个目录拷贝到项目文件夹下。

5.从这里下载一个tesseract-ocr-3.02.eng英文包:http://download.csdn.net/detail/coverupsorrow/8336781;解压后把解压出来的文件放在Tesseract目录下的tessdata

完成后,应该是这个样子。
163119gizs6wtt1z1kg7jm.png
回到Visual Studio 2015,将额外的include的目录写入项目配置中。
163120id6w5xxuiph6sds6.png
163120ggs2ngazgg32cscs.png

打开__Main.cpp编写DEMO代码

#pragma comment(lib,"tesseract305.lib")

#pragma comment(lib,"pvt.cppan.demo.danbloomberg.leptonica-1.74.0.lib")

#pragma comment(lib,"pvt.cppan.demo.jpeg-9.2.0.lib")

#pragma comment(lib,"pvt.cppan.demo.openjpeg.openjp2-2.1.2.lib")

#pragma comment(lib,"pvt.cppan.demo.png-1.6.27.lib")

#pragma comment(lib,"pvt.cppan.demo.tiff-4.0.7.lib")

#pragma comment(lib,"pvt.cppan.demo.unicode.icu.common-58.2.0.lib")

#pragma comment(lib,"pvt.cppan.demo.unicode.icu.data-58.2.0.lib")

#pragma comment(lib,"pvt.cppan.demo.unicode.icu.i18n-58.2.0.lib")

#pragma comment(lib,"pvt.cppan.demo.xz_utils.lzma-5.2.2.lib")

#pragma comment(lib,"pvt.cppan.demo.zlib-1.2.8.lib")


#include <iostream>

#include <memory>


#include <allheaders.h> // leptonica main header for image io

#include <baseapi.h> // tesseract main header


int main()

{


    tesseract::TessBaseAPI tess;


    if (tess.Init("D:\\Validata\\Validata\\tesseract\\tessdata", "eng"))

    {

        std::cout << "OCRTesseract: Could not initialize tesseract." << std::endl;

        return 1;

    }


    // setup

    tess.SetPageSegMode(tesseract::PageSegMode::PSM_AUTO);

    tess.SetVariable("save_best_choices", "T");


    // read image

    auto pixs = pixRead("D:/validateCode.jpg");//这里自行修改为需要识别的图片

    if (!pixs)

    {

        std::cout << "Cannot open input file" << std::endl;

        return 1;

    }


    // recognize

    tess.SetImage(pixs);

    tess.Recognize(0);


    // get result and delete[] returned char* string

    std::cout << tess.GetUTF8Text()<< std::endl;


    // cleanup

    tess.Clear();

    pixDestroy(&pixs);

    getchar();

    return 0;

}



载一个验证码图片,鉴于我们使用的是默认的识别库,找一些不大复杂的,例如这个
164037ohzp3q79si8u67fa.jpg

我将这个文件放在了D:/validateCode.jpg,也就是源代码写的那样。
运行DEMO,结果如下,成功识别了验证码:

163120pga47dgm71nfaudf.png

更多安全技术、精品好文、白帽黑客大佬尽在:http://bbs.ichunqiu.com/portal.php

转载于:https://my.oschina.net/ichunqiu/blog/819742

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vb.net tesseract-ocr是一种用于在vb.net编程使用tesseract-ocr库的方法。Tesseract-ocr是一个开源的光学字符识别(OCR)引擎,它可以识别图像中的文字并将其转换为可编辑的文本。在vb.net中使用tesseract-ocr,你需要使用一些相关的库和工具,如Eclipse、selenium、火狐、log4j、AUTOIT_3.3.14.1和tesseract-ocr库本身。 为了使用vb.net tesseract-ocr,你可以在命令行中使用一些特定的命令来调用tesseract-ocr库进行文字识别。例如,你可以使用以下命令来查看tesseract-ocr的版本信息:tesseract --version。 有时候,为了解决一些特定的问题,你可能需要在使用tesseract-ocr时添加一些额外的参数。例如,有些人可能会在命令行中使用"-psm 6"参数来解决特定的问题。 总的来说,在vb.net中使用tesseract-ocr需要安装相应的库和工具,配置好环境,并使用合适的命令来调用tesseract-ocr进行文字识别。希望这个回答能对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【自动化测试】使用Java+selenium填写验证码成功登录](https://blog.csdn.net/weixin_30358181/article/details/115739499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [详细解读文字识别工具———Tesseract-OCR](https://blog.csdn.net/weixin_43656359/article/details/103401848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值