目录
- 1. 作者介绍
- 2. 腾讯云英文识别API介绍
- 2.1 英文识别原理—OCR技术
- 2.2 腾讯云英文识别API
- 3. 实验过程
- 3.1获得API
- 3.2申请调用接口
- 3.3调试接口
- 3.4实验代码
- 3.5实验结果
- 3.6 问题分析
- 4. 参考连接
1. 作者介绍
乔奕婕,女,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:qyj1558@163.com
王泽宇,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:2717124491@qq.com
2. 腾讯云英文识别API介绍
2.1 英文识别原理—OCR技术
光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,并以文本的形式返回。基本原理是将文本图像转换为数字信号,通过分析图像中的亮度和颜色进行识别。
图像预处理:对图像进行预处理,包括去除噪声、分割字符、校正图像等。
特征提取:对每个字符进行特征提取,并生成用于识别的特征向量。
分类识别:将每个字符进行分类识别,通过与之前的训练数据进行匹配,确定字符类型。
后处理:对识别结果进行后处理,包括纠正拼写、合并单词等。
2.2 腾讯云英文识别API
1.接口描述:支持图像英文文字的检测和识别,返回文字框位置与文字内容。支持多场景、任意版面下的英文、字母、数字和常见字符的识别,同时覆盖英文印刷体和英文手写体识别。
2.图片格式与大小:要求图片分辨率为 15-4096 像素,支持的图片格式包括 JPG、JPEG、PNG、BMP。图片经过Base64编码后不超过7M,图片下载时间不超过3秒。建议使用清晰度高、光线均匀、背景简单的图片进行识别,以确保识别效果的准确性。
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