本次介绍的解决方法是使用谷歌的验证码识别引擎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,下面来看一下效果吧
测试图片:
输出:
可见识别准确度是相当狗屎的 这是因为验证码图片还未经处理,一般还会有去噪点,彩色转灰度,灰度转二值,二值图像识别等手段来提高识别准确度,当然还可以用自己的机器学习算法...当然不提倡这种从轮子造起的行为,敬请期待下一期,验证码识别进阶。
Comments | 1 条评论
最后呢?不够完善?