mac使用Python识别验证码

安装tesserocr

brew install tesserocr

因为pytesseract依赖于tesserocr所以首先需要先安装tesserocr这个软件。接下来就是安装python相关的包
Python系列教程,免费获取,遇到bug及时反馈,讨论交流可加扣裙<60 61 15 02 7>

安装python所需要的包

pip3 install pytesseract
pip3 install pillow 

安装pytesseract是ocr识别图片上的字,因为验证码的识别难度高低不同,所以在这个过程中需要对图片做一定的处理,这就需要使用处理图片的模块pillow。

一个简单的demo
mac使用Python识别验证码_第1张图片
示例中的图片
mac使用Python识别验证码_第2张图片
 

需要用到的图像知识:

对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函数打开后,返回的图像对象的模式都是“RGB”。而对于灰度图像,不管其图像格式是PNG,还是BMP,或者JPG,打开后,其模式为“L”也就是我们说的灰度化的一个操作。除此之外,还有其他的模式,不过我们在处理验证码的时候是将其转为灰度模式,所以就不强调其他的模式了。

模式“L”

模式“L”为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换的:

L = R * 299/1000 + G * 587/1000+ B * 114/1000

通过灰度化之后的图片变为
mac使用Python识别验证码_第3张图片
 

灰度化我们还要对其进行二值化操作

二值化操作

二值化故名思议,就是整个图像所有像素只有两个值可以选择,一个是黑(灰度为0),一个是白(灰度为255)。二值化的好处就是将图片上的有用信息和无用信息区分开来,比如二值化之后的验证码图片,验证码像素为黑色,背景和干扰点为白色,这样后面对验证码像素处理的时候就会很方便。对于简单的图形验证码,到这里基本上就够了,但是如果有干扰线,还要进行除干扰线的操作。
对应的代码为
mac使用Python识别验证码_第4张图片
 

可以看到图片变得锐化了很多,这个时候再去识别就比较好识别了。

去干扰线

常见的4邻域、8邻域算法。所谓的X邻域算法,可以参考手机九宫格输入法,按键5为要判断的像素点,4邻域就是判断上下左右,8邻域就是判断周围8个像素点。如果这4或8个点中255的个数大于某个阈值则判断这个点为噪音,阈值可以根据实际情况修改。

使用cv2处理

除此之外还可以使用cv2模块进行处理。
安装

 pip install opencv-python

代码示例
mac使用Python识别验证码_第5张图片

你可能感兴趣的:(python,opencv,计算机视觉,人工智能,算法)