访问文字识别功能演示页面可以在线体验文字识别服务
https://cloud.tencent.com/act/event/ocrdemo
--1)API 密钥是构建腾讯云 API 请求的重要凭证,使用腾讯云 API 可以操作您名下的所有腾讯云资源,为了您的财产和服务安全,请妥善保存和定期更换密钥。
注:请勿通过任何方式(如 GitHub)上传或者分享您的密钥信息,一旦泄露至外部渠道,可能造成您的云上资产重大损失
--2)成功注册腾讯云账号之后,可以通过如下演示获取API秘钥
推荐使用API Explorer,因为API Explorer提供了在线调用、签名验证、 SDK 代码生成和快速检索接口等能力,能显著降低使用云 API 的难度。
使用方式说明:
这里我们以文字识别-身份证识别这个API为例,首先,通过参照文字识别-身份证识别的接口文档来填写API Explorer中调用该接口的各项参数,然后点“在线调用”,点"发送请求"按钮即可
测试地址如下:
支持,请联系我们告知具体的使用场景和需求。
--1)如果您的身份证图片是Url入参,请核对如下问题:
--2)如果您的身份证图片是ImageBase64入参,请核对如下问题:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBDAAIBAQIBAQICAgICAgICAwUD
那么,您在入参时,是需要去掉"data:image/jpeg;base64,"
http://tool.chinaz.com/tools/imgtobase/
注意:还原时,base64字符需要携带特征头,如这里的"data:image/jpeg;base64,"
同样是出于安全方面的考虑,文字识别服务的IP虽然有配置IP段,但我们会周期性地改变IP段来提升安全性,关于您的需求,我们为您提供如下解决方案: 方案一:您可以将您的业务服务器部署到您的内网环境中,然后搭建一台代理服务器,您的业务服务器发起的文字识别服务请求通过代理服务器转发到文字识别服务端,这样可以提升您的业务服务器的安全性
方案二:也是基于代理服务器的逻辑,我们向您推荐API网关,使用API网关之后,您可以将文字识别API请求托管到API网关,然后您可以通过请求API网关发起文字识别服务请求。
API网关参考文档:https://cloud.tencent.com/document/product/628/41654
十分抱歉,文字识别的权限控制是服务级的,目前仅支持文字识别(OCR)全读写访问权限配置,如有相关更新信息,请留意官方文档动态。
根据报错,我们可以推测您的图片入参方式是Url,这里的Url指的是基于HTTP协议的Web访问地址,通俗的说就是一个HTTP协议的网络地址,通过公网要能正常访问图片,建议您做如下排查:
如果SDK运行在内网服务器中,需要通过内网服务器中的SDK发起文字识别服务请求到代理服务器,再由代理服务器将请求转发至文字识别服务端。 1)首先我们假设您的代理服务器已经配置完成,此时需要在SDK的接口调用中配置代理服务器的信息,我们这里为您提供各开发语言版本SDK的代理配置方法
第一步:设置环境变量,设置https_proxy、http_proxy环境变量即可
第二步:下载您需要的开发语言SDK
https://cloud.tencent.com/document/sdk/Java
第三步:在SDK的接口调用Demo中进行配置
//代理方案 $httpProfile->setProxy('https://ip:port');
$httpProfile = new HttpProfile();
$httpProfile->setProxy("http://127.0.0.1:12639");
不支持代码中设置代理,可通过环境变量设置
#如果需要指定proxy访问接口,可以按照如下方式初始化 python2
httpProfile = HttpProfile(proxy="http://用户名:密码@代理IP:代理端口")
#python3
httpProfile.proxy = "http://127.0.0.1:12639" #http://用户名:密码@代理IP:代理端口 也可
HttpProfile httpProfile = new HttpProfile();
httpProfile.setProxyHost("127.0.0.1");
httpProfile.setProxyPort("12639");
// 代理服务器,当你的环境下有代理服务器时设定
httpProfile.WebProxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
//或者
httpProfile.WebProxy = "http://127.0.0.1:12639";
不支持代码中设置代理,可通过环境变量设置
2)如果您还没有搭建好代理服务器,我们以文字识别-身份证识别这个接口为例,为您提供Nginx代理服务器的搭建方式以及Java SDK调用Nginx代理服务器的整个过程,请参考如下文档和示例Demo :
示例Demo
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.ocr.v20181119.OcrClient;
import com.tencentcloudapi.ocr.v20181119.models.IDCardOCRRequest;
import com.tencentcloudapi.ocr.v20181119.models.IDCardOCRResponse;
public class IDCardOCR
{
public static void main(String [] args) {
try{
Credential cred = new Credential("AKIDbx60g9mLlwxhBLAYFfneDbKlwqTpxxxx", "JL5oGVSDhGYzCD3ctxkHVVM8cpokaD4D");
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("ocr.tencentcloudapi.com");
System.setProperty("https.proxyHost", "tencent.cdhwdl.com"); # 代理服务器的域名
System.setProperty("https.proxyPort", "443"); # 代理服务器的HTTPS协议端口号
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
OcrClient client = new OcrClient(cred, "ap-hongkong", clientProfile);
String params = "{\"ImageUrl\":\"https://tencent-1256311141.cos.ap-chengdu.myqcloud.com/ai/idcardf1.png\"}";
IDCardOCRRequest req = IDCardOCRRequest.fromJsonString(params, IDCardOCRRequest.class);
IDCardOCRResponse resp = client.IDCardOCR(req);
System.out.println(IDCardOCRResponse.toJsonString(resp));
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
}
}
Web服务器访问文字识别服务时,会涉及到双向认证,所以您的Apache服务端也需要配置证书。请参考如下解决方案:
第一步:到 https://curl.haxx.se/ca/cacert.pem 下载证书文件cacert.pem
,将其保存到 PHP 安装路径下。
第二步:编辑php.ini
文件,删除curl.cainfo
配置项前的分号注释符(;),值设置为保存的证书文件cacert.pem
的绝对路径。
第三步:重启Apache服务或其他Web服务
您可以通过如下Github获取集成了V3签名算法的Nodejs 3.0,然后配置签名算法参数为TC-HmacSHA256
https://github.com/TencentCloud/tencentcloud-sdk-nodejs/tree/signature3
clientProfile.signMethod = "TC3-HMAC-SHA256";
V1的特点:
V3的特点:
对于签名计算逻辑,我们以文字识别-身份证识别这个接口的POST请求为例进行分析,可以使用API Explorer工具来辅助签名计算
V1签名的计算逻辑:
第一步:将所有请求参数(注意是所有,包含业务参数和公共参数)按照参数名的字典序升序排序,获得A
{
'Action' : 'IDCardOCR',
'ImageUrl' : 'https://tencent-1256311141.cos.ap-chengdu.myqcloud.com/ai/idcardf1.png',
'Language' : 'zh-CN',
'Nonce' : '7694',
'Region' : 'ap-hongkong',
'SecretId' : 'AKIDbx60g9mLlwxhBLAYFfneDbKlwqTpooQp',
'Timestamp' : '1600594405',
'Version' : '2018-11-19',
}
第二步:将排序好的请求参数转换为"A=B&C=D&E=F"格式,获得B
Action=IDCardOCR
ImageUrl=https://tencent-1256311141.cos.ap-chengdu.myqcloud.com/ai/idcardf1.png
Language=zh-CN
Nonce=7694
Region=ap-hongkong
SecretId=AKIDbx60g9mLlwxhBLAYFfneDbKlwqTpxxxx
Timestamp=1600594405
Version=2018-11-19
第三步:拼接签名原文串,获得C
POSTocr.tencentcloudapi.com/?Action=IDCardOCR&ImageUrl=https://tencent-1256311141.cos.ap-chengdu.myqcloud.com/ai/idcardf1.png&Language=zh-CN&Nonce=7694&Region=ap-hongkong&SecretId=AKIDbx60g9mLlwxhBLAYFfneDbKlwqTpooQp&Timestamp=1600594405&Version=2018-11-19
第四步:调用HmacSha1加密算法,以C为加密内容,SecretKey为秘钥进行加密处理,获得签名D
a/kKdyxV/6tjZs9sQpuP1KBmab4=
V3签名的计算逻辑:
第一步:拼接规范请求串
规范请求串=HTTP方法+HTTPURI+URL查询字符串+参与签名的Header(键值对)+参与签名的Header(键)+请求主体的16进制小写SHA256值
POST
/
content-type:application/json
host:ocr.tencentcloudapi.com
content-type;host
970539395f4bb228406c064a509aa5c7fc846ac15595f1961fb333fb1a9b21a9
第二步:拼接待签名字符串
待签名字符串=签名方法+时间戳+凭证范围+规范请求串的哈希值(SHA256)
TC3-HMAC-SHA256
1600594502
2020-09-20/ocr/tc3_request
25791c965a96b3685593eb363ef7ab55fe90739dddcd2054b4fcf7f9598b5420
第三步:计算签名,签名的计算包含如下三个值
SecretKey(控制台可获取) Date(即待签名字符串中的凭证范围中的date值) Service(即待签名字符串中的凭证范围中的service,文字识别是ocr
计算签名又包含四个步骤
--1)计算SecretDate
拼接TC3和SecretKey作为HMACSHA256加密算法的秘钥,Date作为HMACSHA256加密算法的消息
--2)计算SecretService 将SecretDate作为HMACSHA256加密算法的秘钥,Service作为HMACSHA256加密算法的消息
--3)计算SecretSigning 将SecretService作为HMACSHA256加密算法的秘钥,tc3_request作为HMACSHA256加密算法的消息
--4)计算签名 将SecretSigning作为HMACSHA256加密算法的消息,将待签名字符串作为HMACSHA256加密算法的秘钥(转16进制小写)
3f124dc4a0b633466bf5073203a142fe6a953ef6af025f43bc4af4a00870d81a
第四步:拼接Authorization
Authorization=签名方法(TC3-HMAC-SHA256)+"空格"+"Credential=SecretId/凭证范围"+"逗号"+"空格"+"SignedHeaders=content-type;host"+"逗号"+"空格"+"Signature=签名
TC3-HMAC-SHA256 Credential=AKIDbx60g9mLlwxhBLAYFfneDbKlwqTpooQp/2020-09-20/ocr/tc3_request, SignedHeaders=content-type;host, Signature=3f124dc4a0b633466bf5073203a142fe6a953ef6af025f43bc4af4a00870d81a
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。