本次介绍的解决方法是使用谷歌的验证码识别引擎Tesseract对验证码进行简单粗暴的识别,看到这里,你也许会有几个疑问,下面我就几个问题作出我个人的一些理解。

1.什么是Tesseract

  Tesseract本质上就是基于OCR技术,通过机器学习的某些算法实现的对图片进行分类的技术,那么什么叫做机器学习?简单的来说,大概就是你告诉电脑这张图片是1,那张图片是2,经过不断地试错与校正,最终在你给出待测图片时,电脑会根据算法找到最接近正确答案的解。某种意义上来说,是一种二分(暴论。现实当中,PWM调制时的电流比较型电路中,也采用了类似原理的滞环比较方式。

2.什么叫做“简单粗暴的识别”?

  简单主要体现在几个方面,首先是简单的安装方式,在github上有tesseract的源码,同时也有官方指路的windows系统下的安装包,直接下载exe文件安装即可。另一方面,在代码实现上也十分简单,只需要短短的几行代码,就可以调用识别功能。当然,缺点一定是与方便性并存的...关于这些后面会提到。

那么,这么便民的功能,在哪里才买(获取)得到呢?



Tesseract的下载与安装

1.安装tesseract-ocr

github地址:https://github.com/tesseract-ocr/tesseract

Windows下载地址:https://digi.bib.uni-mannheim.de/tesseract/?C=M;O=A

进入下载页面后下载相应的安装包即可,我用的是Windows平台,选择的是tesseract-ocr-w64-setup-v5.0.0-alpha.20201127.exe

2.配置环境变量

  网上大多数的安装教程写的都是安装到C:\Program Files(x86)\Tesseract-OCR这一路径下,但是我下载之后一路点默认,最终的安装路径是C:\Program Files\Tesseract-OCR。所以下面也根据我个人的配置给出建议。
  在系统变量的Path一栏添加一条C:\Program Files\Tesseract-OCR,同时系统变量新增一项TESSDATA_PREFIX,变量值为C:\Program Files\Tesseract-OCR\tessdata。这些都是常规操作了,稍微玩过电脑的同学就可以直接跳过这一部分(整个教程)。这个时候win+R,运行cmd,输入tesseract -v,如果出现版本号,那么就安装完成了。

3.安装pytesseract

  这一步很简单,因为我用的是anaconda整合的python环境,如果你用的是Spyder或者PyCharm一类的IDE,一行pip install pytesseract就能解决问题。

pytesseract的使用例

代码如下

# -*- coding: utf-8 -*-

from PIL import Image,ImageFilter
import pytesseract
path = './test.png'
cap = Image.open(path)
res = pytesseract.image_to_string(cap)
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write(res)

把验证码图片命名为test.png,放在同一目录下运行代码即可,其实那里放的就是相对路径,绝对路径应该也可以,我这里把结果输出到了output.txt,下面来看一下效果吧

测试图片:


输出:

可见识别准确度是相当狗屎的 这是因为验证码图片还未经处理,一般还会有去噪点,彩色转灰度,灰度转二值,二值图像识别等手段来提高识别准确度,当然还可以用自己的机器学习算法...当然不提倡这种从轮子造起的行为,敬请期待下一期,验证码识别进阶。