美文网首页Pythonpython红红火火恍恍惚惚
[CP_13] Python调用百度AI接口进行文字识别、数字验

[CP_13] Python调用百度AI接口进行文字识别、数字验

作者: Fighting_001 | 来源:发表于2019-04-08 00:50 被阅读0次

    目录结构

    一、百度AI平台文字识别接口申请和OCR模块安装
        1. 申请Baidu通用文字识别接口
        2. 查看适用不同平台/语言/功能的SDK
        3. 安装支持文字识别的Python SDK
    二、文字识别实践应用
        1. 案例:识别本地图片中的文字内容
        2. 案例:模拟识别登录界面中的数字验证码
    

    一、百度AI平台文字识别接口申请和OCR模块安装

    1. 申请Baidu通用文字识别接口

    Step-1 登录百度AI平台

    登录Baidu账号,免费激活AI平台使用权限
    百度AI开放平台传送门:http://ai.baidu.com/

    Step-2 进入【通用文字识别】界面

    http://ai.baidu.com/tech/ocr/general

    Step-3 创建文字识别应用

    点击【创建应用】,填写:应用名称、应用类型、接口选择(默认)、文字识别包名(默认)、应用描述

    创建OK

    以上,申请通用文字识别接口完成,即可获取到三个有效信息:AppID、API Key、Secret Key

    2. 查看适用不同平台/语言/功能的SDK

    传送门:https://ai.baidu.com/sdk#ocr
    Python文字识别SDK:http://ai.baidu.com/docs#/OCR-Python-SDK/top

    3. 安装支持文字识别的Python SDK

    pip install baidu-aip
    

    新建AipOcr
    AipOcr是OCR的Python SDK客户端,使用OCR时提供了一系列的交互方法
    语法规则,如下:

    from aip import AipOcr
    
    """ 创建应用后获取的APPID、AK、SK """
    APP_ID = '{App ID}'
    API_KEY = '{Api Key}'
    SECRET_KEY = '{Secret Key}'
    
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    

    以上接口返回的数据为json格式,每一行文字会分别以键值对形式包含在一个大括号中存放,此时可利用正则提取需要识别的内容

    二、文字识别实践应用

    1. 案例:识别本地图片中的文字内容

    被测图片1:

    被测图片2:

    代码实现:

    wordOCR.py

    from aip import AipOcr
    import re
    
    """ 创建应用后获取的APPID、AK、SK """
    APP_ID = 'xxxxx'  # 替换为实际申请值
    API_KEY = 'yyyyy'  # 替换为实际申请值
    SECRET_KEY = 'zzzzz'  # 替换为实际申请值
    
    # 传入参数,生成对象
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
    # 以二进制方式读取图片内容
    with open(r"D:\CI_Env\Python_Test\file\img\1.png","rb") as f:
        image=f.read()
    
    # 调用通用文字识别接口
    data=client.basicGeneral(image)
    data=str(data)  # 将接口返回数据转为字符串,便于后续正则处理
    
    # 定义正则,提取识别的文字内容
    pat=re.compile(r"{'words': '(.*?)'}")
    result=pat.findall(data)
    
    # 遍历输出图片中的每一行文字内容
    for rs in result:
        print(rs)
    

    执行结果:

    2. 案例:模拟识别登录界面中的数字验证码

    登录界面中的数字验证码是动态变化的,由4位数字组成,如下:

    authCode.py

    from aip import AipOcr
    import re
    import requests
    
    """ 创建应用后获取的APPID、AK、SK """
    APP_ID = 'xxxxx'  # 替换为实际申请值
    API_KEY = 'yyyyy'  # 替换为实际申请值
    SECRET_KEY = 'zzzzz'  # 替换为实际申请值
    
    # 传入参数,生成对象
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
    # 包含图片验证码的登录界面,发送请求并获取响应数据
    url="xxxxxxxxxxxx"  # 替换为实际登录界面的url
    resp=requests.get(url).text
    # 定义正则,提取并构造登录界面的验证码链接
    pat=re.compile(r'<img src="(.*?)" onclick="refreshVerify')
    imgUrl=pat.findall(resp)[0]
    
    # 获取图片内容
    image=requests.get(imgUrl).content
    
    # 调用OCR接口
    data=client.basicGeneral(image)
    data=str(data)
    # 定义正则,提取验证码识别的内容
    pat=re.compile(r"{'words': '(.*?)'}")
    result=pat.findall(data)
    print(result[0])
    

    执行结果:

    以上,识别的结果有可能出现不准确的情况,具体会与识别时的网络、图片的尺寸和清晰度、数字倾斜程度等有关联影响

    备注:
    调用通用文字识别接口(高精度版):data=client.basicAccurate(image)
    调用通用文字识别接口(常规版):data=client.basicGeneral(image)

    相关文章

      网友评论

        本文标题:[CP_13] Python调用百度AI接口进行文字识别、数字验

        本文链接:https://www.haomeiwen.com/subject/ldteiqtx.html