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

news2024/9/19 10:37:08

目录

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/617213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx系列第六篇:结合nginx梳理linux中信号的使用

nginx中master进程来管理整个nginx工作的全过程,运行时其通过接收外部信号输入的方式来对内部进行相关调整。本文对照nginx来梳理一下linux中信号常用API的使用。 目录 1.函数sigaction和signal 2.关于信号集sigset_t 2.1 测试程序1 2.2 测试程序1 3.信号屏蔽…

宝塔安装ModStart常见问题

Q:环境提示PHP未禁用危险函数 安装系统时通常会需要解禁 system,exec,passthru,shell_exec,popen,proc_open 等危险函数。部分集成环境会提示危险函数风险,通常可以如下方式解决: 该函数在通常只是在系统 系统安装/系统升级/模块安装/模块升…

【SpinalHDL快速入门】4.3、基本类型之UInt/SInt

文章目录 1.1、描述1.2、声明1.3、运算符1.3.1、逻辑运算(Logic)1.3.2、算术运算(Arithmetic)1.3.3、比较(Comparison)1.3.4、类型转换(Type Cast)1.3.5、部分赋值/提取操作符&#…

第一章:数据库概述

第一章:数据库概述 1.1:为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化"&a…

低代码平台简单分享

低代码平台简单分享 文章目录 低代码平台简单分享1、什么是低代码?什么是低代码平台?2、低代码平台的前世今生**一、低代码的起源**二、低代码的分类三、低代码的能力四、低代码开发的特点 3、目前主流的低代码平台有哪些?优缺点?…

常用模拟低通滤波器的设计——契比雪夫II型滤波器

常用模拟低通滤波器的设计——契比雪夫II型滤波器 切比雪夫 II 型滤波器的振幅平方函数为: 式中,为有效带通截止频率, 是与通带波纹有关的参量, 大,波纹大,; 为 N 阶契比雪夫多项式。 在 Matl…

几种常见数据库的表和列信息查询

文章目录 前言1. oracle数据库1.1 表信息和注释信息1.2 表的列信息 2. mysql数据库2.1 常用的几个命令2.2 使用desc查看表结构2.3 表结构信息主要存在information_schema数据库2.4 主要表是columns,tables,schemata2.4.1 schemata 数据库信息2.4.2 table…

三、opengles画三角形

第一部分Java端 1&#xff09;界面 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.andro…

数据中台浅析——概念、架构以及未来

数据中台浅析 1. 引言 在当今的数字化时代&#xff0c;数据被誉为"新的石油"&#xff0c;越来越多的企业和组织开始深度挖掘数据的价值。在这个过程中&#xff0c;数据中台逐渐成为了数据管理和分析的核心架构&#xff0c;让我们来深入了解一下它。 1.1 数据中台…

算法复杂度分析(一)

求第n个斐波那契数列 斐波那契数 0 1 1 2 3 5 数列默认从0开始 public static int fib1(int n) {if(n < 1) return n;return fib1(n-1) fib1(n-2);}public static int fib2(int n) {if(n < 1) return n;int first 0;int secend 1;for (int i 0; i < n-1; i) {int…

七、帧缓冲离屏渲染

第一部分基础概念 1)两种帧缓冲的由来 首先opengl能够显示到屏幕&#xff0c;也是有一个默认的framebuffer由窗口系统创建并管理的&#xff0c;将数据放到默认framebuffer 中就可以显示到屏幕上。但是应用程序也想创建额外的非可显示的framebuffer。 应用程序自己创建FBO也是…

【2023RT-Thread全球技术峰会】一套全新的物联网多应用框架xiotman,助你解决多应用的难题

写在前面 就在上周&#xff0c;我作为讲师参与了2023RT-Thread全球技术峰会的主题演讲&#xff0c;我给大家带来了一套全新的解决物联网终端应用多样化的软件架构解决方案&#xff0c;在这里我再次以图文的形式介绍一下给社区的小伙伴&#xff0c;希望借此机会找到更多的同频小…

Nginx优化、Nginx+Tomcat实现负载均衡、动静分离集群部署

Nginx优化、NginxTomcat实现负载均衡、动静分离集群部署 一、Tomcat 优化二、Tomcat多实例部署1、安装好jdk2、安装tomcat3、配置tomcat环境变量4、修改tomcat2中的server.xml文件&#xff0c;要求各tomcat实例配置不能有重复的端口号5、修改各tomcat实例中的startup.sh和shutd…

ARM--$2$驱动模块

目录 1.驱动模块&#xff08;驱动程序的框架&#xff09; 2.内核中的打印函数&#xff08;编写第一个驱动程序&#xff09; Source Insight 使用&#xff1a; 打印函数编写 分析 3.驱动的多文件编译 4.模块传递参数 安装好驱动之后如何传参&#xff1f; 多驱动之间调用…

js内存管理与闭包

JavaScript内存管理 ◼ 不管什么样的编程语言&#xff0c;在代码的执行过程中都是需要给它分配内存的&#xff0c;不同的是某些编程语言需要我们自己手动的管理内存&#xff0c; 某些编程语言会可以自动帮助我们管理内存&#xff1a; ◼ 不管以什么样的方式来管理内存&#xf…

扩展系统功能——装饰模式(二)

装饰模式概述 装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为&#xff0c;在现实生活中&#xff0c;这种情况也到处存在&#xff0c;例如一张照片&#xff0c;我们可以不改变照片本身&#xff0c;给它增加一个相框&#xff0c;使得它具有防潮的功能&…

安装Unity Hub和Unity Editor

1、首先下载UnityHub的安装包&#xff1a; https://unity.com/cn/download 开始您的创意项目并下载 Unity Hub | Unity 2、运行安装包 3、运行Unity Hub 第一次运行Unity Hub会默认弹出登录Unity提示&#xff0c;正常登录就可以了&#xff0c;登录后会在浏览器提示打开 Unity…

nginx+lua(openresty) 安装及使用(一)

前言 OpenResty —— 通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台。 OpenResty&#xff08;也称为 ngx_openresty&#xff09;是一个基于 Nginx 与 Lua 的高性能 Web 平台&#xff0c;其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超…

全志V3S嵌入式驱动开发(lcd屏幕驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于一些设备&#xff0c;人们是希望从屏幕上面获取结果信息的&#xff0c;这样也显得更直观一些。另外&#xff0c;也有一些设备&#xff0c;它本…

阿里云OSS实现图片上传(后端接口)

文章目录 1、阿里云oss服务开通2、java操作阿里云oss&#xff0c;上传文件到阿里云oss1. 创建操作阿里云oss许可证2. 安装SDK3.修改配置文件4.创建常量类&#xff0c;读取配置文件中的内容5、OssController6、OssService7、OssServiceImpl8、改进1. 多次上传相同名称文件&#…