调用腾讯云API实现英文识别

1. 作者介绍

乔奕婕,女,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:[email protected]

王泽宇,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

2. 腾讯云英文识别API介绍

2.1 英文识别原理—OCR技术

光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,并以文本的形式返回。基本原理是将文本图像转换为数字信号,通过分析图像中的亮度和颜色进行识别。
在这里插入图片描述

图像预处理:对图像进行预处理,包括去除噪声、分割字符、校正图像等。

特征提取:对每个字符进行特征提取,并生成用于识别的特征向量。

分类识别:将每个字符进行分类识别,通过与之前的训练数据进行匹配,确定字符类型。

后处理:对识别结果进行后处理,包括纠正拼写、合并单词等。

2.2 腾讯云英文识别API

1.接口描述:支持图像英文文字的检测和识别,返回文字框位置与文字内容。支持多场景、任意版面下的英文、字母、数字和常见字符的识别,同时覆盖英文印刷体和英文手写体识别。

2.图片格式与大小:要求图片分辨率为 15-4096 像素,支持的图片格式包括 JPG、JPEG、PNG、BMP。图片经过Base64编码后不超过7M,图片下载时间不超过3秒。建议使用清晰度高、光线均匀、背景简单的图片进行识别,以确保识别效果的准确性。

扫描二维码关注公众号,回复: 15289881 查看本文章

3. 实验过程

3.1获得API

首先进入腾讯云注册账号,之后登录账号提示需要实名认证(认证后可申请API免费调用额度),之后按照下图所示点击页面左上角“云产品”,下滑找到“管理与审计”,点击“访问密钥”,进入页面后点击“新建密钥”。
在这里插入图片描述
在这里插入图片描述

3.2申请调用接口

依次点击“云产品”—“通用文字识别”—“资源包管理”。之后会有询问是否开通服务,选择开通,等待1~2分钟“资源包管理”栏目下的资源就会刷新出来
在这里插入图片描述在这里插入图片描述

3.3调试接口

点击页面左上角“腾讯云”,进入页面后在右上搜索栏搜索“英文识别”,点击搜索结果中的“英文识别”,然后点击“调试”。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进入调试界面选择参数和编程语言,注意ImageBase64和ImageUrl参数任选其一即可
输入参数在每个参数名后的“参数说明”有详细解释。
输出参数:
TextDetection:检测到的文本信息。
Angel:图片旋转角度(角度制),文本的水平方向为0°;顺时针为正,逆时针为负。
RequestId:唯一请求 ID,每次请求都会返回。

利用第三方网站得到输入图片的Base64码或者URL地址输入到参数中,之后发起调用得到识别结果。
在这里插入图片描述

在这里插入图片描述

上图URL链接:https://www.helloimg.com/images/2023/05/18/oEdI7v.jpg

3.4实验代码

运行程序在使用的环境中下载tencentcloud包

pip install tencentcloud-sdk
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.ocr.v20181119 import ocr_client, models
import base64
# 以二进制方式读取图片,然后对读取的图片进行base64编码和解码
def get_json(img_dir):
    with open(img_dir, 'rb') as f:
        base64_data = base64.b64encode(f.read())
        base64_code = base64_data.decode()
    try:
        #实例化一个认证对象
        #传入腾讯云账户 secretId,secretKey
        cred = credential.Credential(secretId,secretKey)
        # 实例化一个http选项,可选的,没有特殊需求可以跳过
        httpProfile = HttpProfile()
        httpProfile.endpoint = "iai.tencentcloudapi.com"
        # 实例化一个客户端配置对象
        clientProfile = ClientProfile()
        #clientProfile.httpProfile = httpProfile#若使用ImageURL请释放这行代码
        # 实例化要请求产品的client对象,clientProfile是可选的
        client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)
        # 实例化一个请求对象,每个接口都会对应一个request对象
        req = models.EnglishOCRRequest()
        params = {
    
    
            "ImageBase64": base64_code,#若使用ImageURL请注释掉这行代码,并释放下一行代码
            #"ImageUrl": "https://www.helloimg.com/images/2023/05/19/oEDha9.md.jpg",#手写happy
            "EnableCoordPoint": True,
            "EnableCandWord": True,
            "Preprocess": True
         }
        req.from_json_string(json.dumps(params))

    # 返回的resp是一个EnglishOCRResponse的实例,与请求对象对应
        resp = client.EnglishOCR(req)
    # 输出json格式的字符串回包
        print(resp.to_json_string())

    except TencentCloudSDKException as err:
        print(err)
# 填入自己新建的访问密钥和图片的详细地址
secretId = '替换为自己的secretId'
secretKey = '替换为自己的secretKey'
img_dir = r"替换为输入图片路径"
json_data = get_json(img_dir)
print(json_data)

3.5实验结果

运行图片:
在这里插入图片描述

图片URL地址:https://www.helloimg.com/images/2023/05/19/oEDha9.jpg
运行结果:

{
    
    "TextDetections": [{
    
    "DetectedText": "happy", "Confidence": 99, "Polygon": [{
    
    "X": 344, "Y": 256}, {
    
    "X": 602, "Y": 256}, {
    
    "X": 602, "Y": 433}, {
    
    "X": 344, "Y": 433}], "AdvancedInfo": "{}", "WordCoordPoint": [{
    
    "WordCoordinate": [{
    
    "X": 301, "Y": 444}, {
    
    "X": 301, "Y": 245}, {
    
    "X": 302, "Y": 245}, {
    
    "X": 302, "Y": 444}]}], "CandWord": [{
    
    "CandWords": [{
    
    "Confidence": 99, "Character": "h"}, {
    
    "Confidence": 0, "Character": "㊥"}]}, {
    
    "CandWords": [{
    
    "Confidence": 99, "Character": "a"}, {
    
    "Confidence": 0, "Character": "㊥"}]}, {
    
    "CandWords": [{
    
    "Confidence": 99, "Character": "p"}, {
    
    "Confidence": 0, "Character": "㊥"}]}, {
    
    "CandWords": [{
    
    "Confidence": 100, "Character": "p"}, {
    
    "Confidence": 0, "Character": "㊥"}]}, {
    
    "CandWords": [{
    
    "Confidence": 99, "Character": "y"}, {
    
    "Confidence": 0, "Character": "㊥"}]}], "Words": [{
    
    "Confidence": 99, "Character": "happy"}]}], "Angel": 173.99000549316406, "RequestId": "df27956f-1336-4693-9cd1-b85d250432ef"}

3.6 问题分析

(1)下载tencentcloud-sdk包报错

ERROR: Could not find a version that satisfies the requirement tencentcloud (from versions: none)
ERROR: No matching distribution found for tencentcloud

这个错误提示表明在 PyPI 网站中没有找到符合该名称的包,可能是由于 PyPI 上还没有将 tencentcloud 包进行注册。
选择在 tencentcloud 官方 Github 页面下载并手动安装:
①前往 tencentcloud-sdk-python 的 Github 页面:https://github.com/TencentCloud/tencentcloud-sdk-python 。
②点击 “Clone or download” 并选择 “Download ZIP”,下载该项目的压缩文件。
③解压该文件,在使用的环境中进入解压后的 tencentcloud-sdk-python 文件夹。
④在终端中输入以下命令进行手动安装:python setup.py install
在这里插入图片描述
显示Finished processing dependencies表示安装完成。
(2)FailedOperation.OcrFailed:OCR识别失败
因为只能识别英文印刷体和手写体,其余字体无法识别。
(3)FailedOperation.DownLoadError:下载失败
使用ImageUrl可能会出现这样的问题,网络速度不高或是托管图片的网站不稳定,换个速度更高的网络。

4. 参考连接

https://blog.csdn.net/m0_37758063/article/details/124026160
https://blog.csdn.net/weixin_40248634/article/details/105938224

猜你喜欢

转载自blog.csdn.net/m0_37758063/article/details/131074654