栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 通过调用百度的api实现简单的验证码识别

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 通过调用百度的api实现简单的验证码识别

AipOcr 是百度的文字识别接口,每个月有免费的识别次数

如果没有安装 就使用命令 pip install baidu-aip 来安装

from aip import AipOcr
import requests
from PIL import Image
第一步 先找到网页中验证码的图片接口

第二步 下载验证码的图片保存到本地
# 从指定的网页中下载图片
def download_code():
    s = requests.session()
    url = '验证码的地址'
    head = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36'
    }
    # 发送get请求获取到图片
    result = s.get(url=url,headers=head)
    # 把图片保存到本地
    with open('code.jpg','wb') as f:
        f.write(result.content)
第三步 把下载完成的图片进行二值化 方便识别
def image_er():
    image = Image.open('code.jpg').convert('L')
    table = []
    for i in range(256):
        if i < 127:
            table.append(0)
        else:
            table.append(1)
    # 处理完成后覆盖保存
    image.point(table,'1').save('code.jpg')

处理前:

处理后: 

第四步 调用百度的识别接口,申请方式在文章底部
# 调用百度的 api 来进行识别
def baidu_code_api():
    APP_ID = '百度官网申请的 APP_ID'
    API_KEY = '百度官网申请的 API_KEY'
    SECRET_KEY = '百度官网申请的 SECRET_KEY'
    with open('code.jpg','rb') as f:
        code = f.read()
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 调用百度的接口,使用 标准 方式识别
    result = client.general(code)
    # 识别的结果是一个字典 取值取到words的值后把空格删除
    return result['words_result'][0]['words'].replace(' ','')
第五步 把识别的结果打印出来
# 调用函数
if __name__ == '__main__':
    download_code()
    image_er()
    print(baidu_code_api())

可以看到 图片的识别结果就打印出来了~ 

完整代码:
# -*- coding: utf-8 -*-
# @Author  : Chengtianyu
# @Time    : 2022/5/22 10:45
from aip import AipOcr
import requests
from PIL import Image

# 从指定的网页中下载图片
def download_code():
    s = requests.session()
    url = '图片的地址'
    head = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36'
    }
    result = s.get(url=url,headers=head)
    with open('code.jpg','wb') as f:
        f.write(result.content)

# 把下载完成的图片灰度化处理一下 提高识别准确率
def image_er():
    image = Image.open('code.jpg').convert('L')
    table = []
    for i in range(256):
        if i < 127:
            table.append(0)
        else:
            table.append(1)
    image.point(table,'1').save('code.jpg')


# 调用百度的 api 来进行识别
def baidu_code_api():
    APP_ID = '申请的 APP_ID'
    API_KEY = '申请的 API_KEY'
    SECRET_KEY = '申请的 SECRET_KEY'
    with open('code.jpg','rb') as f:
        code = f.read()
    # 配置百度的接口
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 调用百度的接口,使用 手写方式识别
    result = client.general(code)
    return result['words_result'][0]['words'].replace(' ','')


# 调用函数
if __name__ == '__main__':
    download_code()
    image_er()
    print(baidu_code_api())
百度接口申请:

打开登陆 百度文字识别,覆盖全面,响应迅速,准确率超99%-百度AI开放平台

领取完成创建一个应用就可以看到 id key 了

在 pycharm 中就可以使用了,百度还提供了很多识别方式,注意不要用超额了類

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923114.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号