百度OCR验证码识别连接
+
简单的图片灰度化处理
1.安装
pip install baidu-aip
2.导入
from aip import AipOcr
3.创建应用
https://ai.baidu.com/
选择自己需求的参数,点击创建,创建完成后查看应用详情即可看到以下参数:
常量APP_ID
在百度云控制台中创建,常量API_KEY
与SECRET_KEY
是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
如果用户需要配置AipOcr的网络请求参数(一般不需要配置),可以在构造AipOcr之后调用接口设置参数,目前只支持以下参数:
接口 说明
setConnectionTimeoutInMillis 建立连接的超时时间(单位:毫秒
setSocketTimeoutInMillis 通过打开的连接传输数据的超时时间(单位:毫秒)
参考配置文档
https://ai.baidu.com/docs#/OCR-Python-SDK/top
代码如下:
#
from aip import AipOcr
from PIL import Image
""" 你的 APPID AK SK """
APP_ID = 'xxxxx'
API_KEY = 'xxxxxxxxxx'
SECRET_KEY = 'xxxxxxxxxxxxxx '
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
#定义参数变量
options = {
"recognize_granularity" :"big",
"detect_direction": "true",
}
image = Image.open(r'C:\Users\Administrator\Desktop\7708.jfif')
# image=PIL.Image.open(r"C:\Users\Administrator\Desktop\5107.jfif")
# 灰度化
image = image.convert('L')
# 杂点清除掉。只保留黑的和白的。返回像素对象
data = image.load()
w, h = image.size
for i in range(w):
for j in range(h):
if data[i, j] > 125:
data[i, j] = 255 # 纯白
else:
data[i, j] = 0 # 纯黑
image.save('clean_captcha.png')
# image2 = get_file_content(r'C:\Users\Administrator\Desktop\7708.jfif')
image2 = get_file_content('clean_captcha.png')
# print(image2)
""" 调用数字识别 """
result= client.numbers(image2)
# for key in result:
# print(key,result[key])
print(result["words_result"][0]["words"])
""" 如果有可选参数 """
# options = {}
# options["recognize_granularity"] = "big"
# options["detect_direction"] = "true"
""" 带参数调用数字识别 """
client.numbers(image2, options)