python调用百度AI平台做简单的图片识别功能

这样做的缘由

工作需要把100多张图片中的文字(主要是车牌号)提取出来,并作为文件名字。用python从头到尾写车牌识别的功能,耗时耗力。故在网上寻找可用于直接图片文字识别的接口直接调用,省时省力。

用百度AI平台接口的理由

有百度经验提供每一步的参考,且通用文字识别(高精度版)的功能每天有500次的免费试用机会,且当前功能没有并发需求。故非常适合达到临时目的。

具体步骤

  1. 用百度账号登录百度AI开放平台:https://login.bce.baidu.com
  2. 选择要使用的接口:人工智能->文字识别。
  3. 点击创建应用,获取App ID、API key、Secret Key,记下来。
  4. 阅读技术文档,知晓接口的参数和返回值等信息:https://cloud.baidu.com/doc/OCR/s/Fjwvxzxgv
  5. 用pip install baidu-aip安装OCR Python SDK。
  6. 参照Python-SDK文档,修改成自己想要的效果:
from aip import AipOcr
import re
import os

APP_ID = '1*****'
API_KEY = 'U*************************'
SECRET_KEY = '0********************************'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

#把读出的文字内容统一保存在一个txt文档里
f = open(r'E:\work\filename\plateread.txt','w')

#保存了待识别图片的路径
PlatePath = r'E:\work\pic'

#按顺序识别出图片,并把图片文件名改成“识别出的文字.jpg”的格式
for Dir in os.listdir(PlatePath):
    srcDir = os.path.join(PlatePath,Dir)
    print(srcDir)
    fsrc = open(srcDir,'rb')
    
    img = fsrc.read()

    message = client.basicAccurate(img)

    for results in message.get('words_result'):
        name = results.get('words')
        print(name)
        f.write(name)
        dstDir = os.path.join(r'E:\work\pic',name) + '.jpg'
        print(dstDir)
        fsrc.close()
        os.rename(srcDir, dstDir)

f.close()
### 使用 Python 调用百度 AI 开放平台 API 实现图像识别 为了通过 Python 调用百度 AI 的图像识别功能,可以按照以下方法操作。此过程涉及创建应用、获取访问令牌以及发送请求到百度的 OCR 接口。 #### 创建应用并获取密钥 首先,在百度 AI 开放平台上注册账号并创建一个新的应用。成功创建后会获得 `APP_ID`、`API_KEY` 和 `SECRET_KEY`。这三个参数用于生成安全的访问令牌[^2]。 #### 安装依赖库 需要安装两个主要的 Python 库来完成这一任务:`requests` 用来发起 HTTP 请求;`base64` 则负责将图片文件转换成 Base64 编码形式以便传输给服务器。 ```bash pip install requests ``` #### 获取 Access Token 每次调用百度 AI 提供的服务之前都需要先得到有效的 access token。可以通过下面这段代码实现: ```python import requests def fetch_token(api_key, secret_key): url = 'https://aip.baidubce.com/oauth/2.0/token' params = { 'grant_type': 'client_credentials', 'client_id': api_key, 'client_secret': secret_key } response = requests.post(url, data=params).json() return response.get('access_token') ``` #### 发送图片数据至 OCR 接口 一旦拥有了 access token ,就可以利用它向指定 URL 地址上传待处理的图片,并接收返回的结果。这里展示了一个简单的例子,演示如何读取本地图片并将之转化为适合传递的形式。 ```python from PIL import Image import base64 def recognize_image(image_path, access_token): request_url = f'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token={access_token}' headers = {'content-type': 'application/x-www-form-urlencoded'} with open(image_path, 'rb') as img_file: image_data = base64.b64encode(img_file.read()).decode() payload = {"image": image_data} result = requests.post(request_url, data=payload, headers=headers).json() return result['words_result'] ``` 以上函数接受一张存储于磁盘上的图片路径作为输入参数之一,另一个则是前面提到过的有效期内的 access token 。最终输出的是由字典组成的列表,其中每个元素代表检测出来的单个文本框及其位置信息等细节[^3]。 #### 处理可能遇到的问题 当尝试运行上述脚本时可能会碰到若干常见错误,比如因为网络连接不稳定而导致超时异常或者由于未正确设置 Content-Type 导致服务端拒绝解析传来的 JSON 数据包等问题。另外值得注意的一点是在实际部署过程中还需要考虑安全性方面的要求,例如妥善保管自己的私钥材料以免泄露风险等等[^4]。 如果希望提升识别效果还可以借助 EasyDL 自定义模型训练工具来自行优化特定场景下的表现水平[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值