验证码的识别 -01 -图形验证码的识别

验证码的识别 -01 -图形验证码的识别

1. 准备工作

  • 1. 下载安装 tesseract 下载地址
  • 下载完成后双击,安装程序, 可以勾选Additional language data(download)选项来安装 OCR 识别支持的语言包,这样 OCR 便可以识别多国语言
  • 将tesseract 配置环境变量
  • 将tesseract的语言包添加到环境变量中,在环境变量中新建一个系统变量,变量名称为TESSDATA_PREFIX,tessdata是放置语言包的文件夹,一般在你安装tesseract的目录下,即tesseract的安装目录就是tessdata的父目录,把TESSDATA_PREFIX的值设置为它即可
  • pip安装tesserocr文件, 注意pip install tesserocr 在window系统上安装总是失败, 需要去github上下载 与我们安装的tesseract版本对应的 tesserocr 的 .whl文件,进行安装,

2. 获取验证码图片

import os
import requests
from uuid import uuid4
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(‘http://my.cnki.net/elibregister/commonRegister.aspx‘)
browser.implicitly_wait(2)
os.mkdir(‘picture‘)
for i in range(5):
    image =  browser.find_element_by_xpath(‘//*[@id="checkcode"]‘)
    image_url = image.get_attribute(‘src‘)
    image_content = requests.get(image_url).content
    image_path = os.path.join(‘picture‘, f‘{uuid4()}.jpg‘)
    with open(image_path, ‘wb‘) as f:
        f.write(image_content)
    image.click()
    browser.implicitly_wait(2)

3. 识别测试

import tesserocr
from PIL import Image

image = Image.open(‘picture/1.jpg‘)
result = tesserocr.image_to_text(image)  #将image对象转换为文字
print(result)

print(tesserocr.file_to_text(‘picture/1.jpg‘))  #将文件对象转换为文字

4. 验证码处理

  转化为灰度图像和二值化处理

image = image.convert(‘L‘) #将图片转化为灰度图像
image.show()
image = image.convert(‘1‘) #将图片进行二值化处理
image.show()

我们还可以指定二值化的阈值, 上面的方法采用的是默认阈值127, 不过我们不能直接转化原图, 要将原图先转化为灰度图像, 然后再指定二值化阈值,

import tesserocr
from PIL import Image
image = Image.open(‘picture/2.jpg‘)
image = image.convert(‘L‘)
threshold = 105  #数值越小, 图片中的像素点越少, 空白越多
table = []
for i in range(256):
    if i  < threshold:
        table.append(0)
    else:
        table.append(1)
image = image.point(table,‘1‘)
image.show()
result = tesserocr.image_to_text(image)

原文地址:https://www.cnblogs.com/zhangjian0092/p/11248712.html

时间: 2024-09-29 19:50:51

验证码的识别 -01 -图形验证码的识别的相关文章

Python验证码识别--利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中需要用

Python验证码识别:利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域--    简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中

Python3网络爬虫实战-41、图形验证码的识别

本节我们首先来尝试识别最简单的一种验证码,图形验证码,这种验证码出现的最早,现在也很常见,一般是四位字母或者数字组成的,例如中国知网的注册页面就有类似的验证码,链接为:http://my.cnki.net/elibregister/commonRegister.aspx,页面如图 8-1 所示: 图 8-1 知网注册页面 表单的最后一项就是图形验证码,我们必须完全输入正确图中的字符才可以完成注册. 1. 本节目标 本节我们就以知网的验证码为例,讲解一下利用 OCR 技术识别此种图形验证码的方法.

Python3网络爬虫实战-42、图形验证码的识别

本节我们首先来尝试识别最简单的一种验证码,图形验证码,这种验证码出现的最早,现在也很常见,一般是四位字母或者数字组成的,例如中国知网的注册页面就有类似的验证码,链接为:http://my.cnki.net/elibregister/commonRegister.aspx,页面如图 8-1 所示: 图 8-1 知网注册页面 表单的最后一项就是图形验证码,我们必须完全输入正确图中的字符才可以完成注册. 1. 本节目标 本节我们就以知网的验证码为例,讲解一下利用 OCR 技术识别此种图形验证码的方法.

python web框架Flask——图形验证码及验证码的动态刷新

下列代码都是以自己的项目实例讲述的,相关的文本内容很少,主要说明全在代码注释中 自制图形验证码 这里所说的图形验证码都是自制的图形,通过画布.画笔.画笔字体的颜色绘制而成的.将验证码封装成一个类比较好管理,代码里有绝对详细的注释,当然大家可以直接复制. 里面涉及的字体都是从系统电脑上自带的,大家直接复制当前目录下就可以了. 主目录/utils/captcha/__init__.py import random import string # Image:一个画布 # ImageDraw:一个画笔

02.实现图形验证码

实现图形验证码 使用过滤器实现图形验证码 使用kaptcha验证码 <!--验证码组件--> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency> /** * 自定义身份验证失败处理程序 */ public c

利用pytesser识别图形验证码

简单识别 1.一般思路 验证码识别的一般思路为: 图片降噪 图片切割 图像文本输出 1.1 图片降噪 所谓降噪就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好. 对于彩色背景的验证码:每个像素都可以放在一个5维的空间里,这5个维度分别是,X,Y,R,G,B,也就是像素的坐标和颜色,在计算机图形学中,有很多种色彩空间,最常用的比如RGB,印刷用的CYMK,还有比较少见的HSL或者HSV,每种色彩空间的维度都不一样,但是可以通过公式互相转换.

验证码识别——图形验证码

先找了一个简单的图形验证码进行测试,比如知网,从网页里把验证码下载到本地 进行简单的灰度处理和二值化处理,能够提高不少识别正确率 验证码: 代码: 1 import tesserocr 2 from PIL import Image 3 4 image = Image.open('code.jpg') 5 #灰度处理 6 image = image.convert('L') 7 #阈值 8 threshold = 127 9 table = [] 10 #阈值处理 11 for i in ran

图形验证码的识别

利用OCR技术识别图形验证码 安装tesserocr tesserocr GitHub:https://github.com/sirfz/tesserocr tesserocr PyPI:https://pypi.python.org/pypi/tesserocr tesseract 下载地址:http://digi.bib.uni-mannheim.de/tesseract tesseract GitHub:https://github.com/tesseract-ocr/tesseract