### 1.目标
中国知网注册:[http://o.cnki.net/Register/CommonRegister.aspx](http://o.cnki.net/Register/CommonRegister.aspx)
### 2.安装
[tesserocr](/1kai-fa-huan-jing-pei-zhi/1.3/134-tesserocrde-an-zhuang.md)
### 3.获取图形验证码
验证码地址:[http://o.cnki.net/Register/CheckCode.aspx](http://o.cnki.net/Register/CheckCode.aspx)
保存图片
```
import requests
content = requests.get("http://o.cnki.net/Register/CheckCode.aspx").content
with open("code.jpg",'wb') as f:
f.write(content)
```
![](/assets/code.png)
### 4.识别测试
```
import tesserocr
from PIL import Image
image = Image.open('code.png')
result = tesserocr.image_to_text(image)
print(result)
print(tesserocr.file_to_text('code.png'))
```
注意file\_totext的识别效果没有image\_to\_text的好
### 5.验证码处理
验证码内的多条线余会干扰图片的识别
需要做一下额外的处理,如转灰度、二值化等操作
转灰度
利用Image对象的convert\(\)方法参数传入L,即可将图片转化为灰度图像
```
import tesserocr
from PIL import Image
image = Image.open('code.png')
image = image.convert('L')
# image.show() # 显示图片
result = tesserocr.image_to_text(image)
print(result)
```
传入1即可将图片进行二值化处理
```
image = image.convert('1')
image.show()
```
指定二值化的阈值,上面默认阈值是127
首先将原图先转为灰度图像,再指定二值化阈值
```
import tesserocr
from PIL import Image
image = Image.open('code.png')
image = image.convert('L')
threshold = 130
table = []
for i in range(256):
if i
table.append(0)
else:
table.append(1)
image = image.point(table,'1')
image.show()
result = tesserocr.image_to_text(image)
print(result)
```