快速调用百度AI开放平台的API,以OCR通用文字识别为例(封装函数进行连续调用)

3e13cd05f3894165ad2c4e8f01878906.png

🔥博客主页:是dream

🚀系列专栏:深度学习环境搭建环境配置问题解决自然语言处理语音信号处理项目开发

💘每日语录:眼里有不朽的光芒 心里有永恒的希望

🎉感谢大家点赞👍收藏⭐指正✍️

2a56908b146e4436a0b3912a5114489a.png

前言

        百度开放平台允许开发者访问和利用百度的各种服务和功能,包括语音识别、人脸识别、文字识别、自然语言处理等等。这些API能够满足我们绝大部分需求,来供我们学习和使用。本文就OCR文字识别为例,详细介绍新手小白如何调用百度开放平台的API。

前期准备工作

1、注册一个百度AI开放平台的账号

网址:百度AI开放平台-全球领先的人工智能服务平台 (baidu.com)

2、编译器:Pycharm

搜索 OCR文字识别,点击立即使用。

b52fe91788494c00971cd7e1c916fdd0.png

进入到OCR文字识别的界面,点击“去领取”。

        百度开放平台是可以免费试用的,一个月可以调用几千次,足够我们用来学习和使用。

cd1a8be2fe5441468a83f55e25ff526c.png

        直接点击全部领取。

07fa4486922745dd984aaf38c4c4782c.png

点击应用列表,进行创建应用(信息随便填,但也不要太离谱,SDK不要选择)

51f7327e48cf451787ce2954cbe68c3d.png

        这里特别需要注意的是,你需要保管好API Key 和Secret Key,后边会使用到。

正式调用环节(仅需两步)

获取你的access_token

        首先,我们获得access_token,具体的方法是通过百度的API文档中获得,很简单,上图!

e79bb4e0c03447f3a906d50ff4261be6.png

        搜索文字识别,选择“调用方式这一栏”,可以看到,官方给出了多种语言用来获取access_token,这里我选择python。将代码复制到pycharm,并将你的API Key 和Secret Key分别替换掉host中的“【官网获取的AK】”和“【官网获取的SK】”,运行代码就可以拿到你的access_token了。

        为了方便大家,这里直接附上代码。我对代码进行了部分修改,大家可以直接替换掉client_id和client_secret即可。

# encoding:utf-8
import requests 

# 替换下面的【官网获取的AK】和【官网获取的SK】为你的实际API密钥和密钥
client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT_SECRET'

# 构建获取访问令牌的URL
token_url = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}'

# 发送请求获取访问令牌
response = requests.get(token_url)

# 检查响应状态码
if response.status_code == 200:
    access_token = response.json()['access_token']
    print(f"Access Token: {access_token}")
else:
    print("Failed to obtain Access Token")

正式开始调用

        随机选择一个文字识别场景,这里我选择了通用文字识别(高精度版本)。

6059d3e228d94628916d590555c9fabd.png

        复制里边的代码,并将自己的access_token添加上去,就可以进行文字识别了!

测试

        随机截取了一张图片,来测试一下效果如何。

11f1a84aba7a4a10a33fbc1981ac1a29.png

        部分结果展示:

6a90cd444c57417ba52500b02f06953e.png

        可以看到效果还是非常好的。

经验之谈(点赞、收藏、关注、不迷路)

        需要特别注意的是,我们获得到的 access_token 具有时效性,通常在30天后会失效,因此需要定期重新获取。并且,官方给的代码,我们每次需要识别图片的时候,都需要更改图片的途径,这样非常麻烦,为了一劳永逸,这里建议将代码进行打包封装。这样在我们的项目中,如果需要识别图片中的文字,只需要调用相应的函数就行了。这里我直接贴出封装后的代码,需要进行文字识别的时候只需要调用ocr_image()函数即可。

# coding=utf-8

import sys
import json
import base64
import requests

# 保证兼容python2以及python3
IS_PY3 = sys.version_info.major == 3

API_KEY = '你的API Key'
SECRET_KEY = '你的Secret Key'
OCR_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'


"""
    获取access token
"""
def fetch_token():
    params = {'grant_type': 'client_credentials', 'client_id': API_KEY, 'client_secret': SECRET_KEY}
    response = requests.post(TOKEN_URL, params=params)
    result = response.json()

    if ('access_token' in result.keys() and 'scope' in result.keys()):
        if not 'brain_all_scope' in result['scope'].split(' '):
            print ('please ensure has check the  ability')
            exit()
        return result['access_token']
    else:
        print ('please overwrite the correct API_KEY and SECRET_KEY')
        exit()


"""
    读取文件
"""
def read_file(image_path):
    with open(image_path, 'rb') as f:
        return f.read()


"""
    调用远程服务
"""
def request(url, data):
    response = requests.post(url, data=data.encode('utf-8'))
    if response.status_code == 200:
        return response.text
    else:
        print("Error response {}".format(response.status_code))


def ocr_image(image_path, access_token):
    # 调用OCR服务
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    with open(image_path, 'rb') as f:
        image_data = f.read()
    params = {'access_token': access_token, 'image': base64.b64encode(image_data)}
    response = requests.post(OCR_URL, headers=headers, data=params)

    # 解析OCR结果
    result = ''
    result_json = response.json()
    for words_result in result_json["words_result"]:
        result += words_result["words"] + '\n'

    return result


if __name__ == '__main__':
    # 获取access token
    token = fetch_token()

    # 调用文字识别服务
    result = ocr_image(r"runs/detect/exp160/crops/plate/2.jpg", token)

    # 打印文字
    print(result)

18d250456f11449f9b1b56c1537b49a3.gif

看到这里,相信你已经能够掌握如何调用百度开放平台的API,关注我,后续会有更多的人工智能相关的保姆级教程。

超短脉冲激光是一种时间极短的激光脉冲,其宽度一般为飞秒或皮秒级别。它具有很高的峰值功率和能量密度,可以用于领域的非线性光学、超快速光谱学和光生物学等领域。对于超短脉冲激光,使用Matlab编写代码可以非常方便地进行模拟和分析。 Matlab中的超短脉冲激光模拟代码可以基于传递函数模型进行编写。以下是一个简单的超短脉冲激光Matlab代码示: %% 超短脉冲激光Matlab代码示 % 定义脉冲参数 tau = 10^-12; % 脉冲宽度(s) f_rep = 10^9; % 重复频率(Hz) E_pulse = 1; % 脉冲能量(J) % 计算光子能量和光子数 h = 6.62607004 * 10^-34; % 普朗克常数 nu = 1/tau; % 中心频率(Hz) E_photon = h * nu; % 光子能量(J) N_photon = E_pulse / E_photon; % 光子数(个) % 定义传递函数 z = 100; % 传输距离(m) beta2 = 20 * 10^-27; % 色散参数(s^2/m) lambda = 800 * 10^-9; % 波长(m) k = 2 * pi / lambda; % 波数 w0 = k^2 * z / (2 * abs(beta2)); % 配置半宽度(s^2) H = exp(-1j * (w0 * t.^2 / tau^2) * abs(beta2)); % 传递函数 % 生成脉冲信号 t = (-20 * tau : 0.1 * tau : 20 * tau); % 时间轴(s) E_field = sqrt(N_photon / (h * nu * tau)) * exp(-t.^2 / tau^2); % 干涉线圈发射的光电场 % 传输脉冲信号 E_out = ifft(H .* fft(E_field)); % 传输后的光电场 % 绘图 figure(1) plot(t*10^12, E_field); xlabel('时间 (ps)'); ylabel('电场强度 (V/m)'); figure(2) plot(t*10^12, abs(E_out)); xlabel('时间 (ps)'); ylabel('电场强度 (V/m)'); 该代码中的主要步骤是:定义脉冲参数,计算光子能量和光子数,定义传递函数,生成脉冲信号,传输脉冲信号,绘图显示结果。通过这个示,可以更好地理解超短脉冲激光的数学模型和Matlab代码实现。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是dream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值