图文翻译
更新时间:
一、 服务概述
针对包含文字的图片,结合OCR图文识别技术和机器翻译,对图片中的文字内容进行识别,并翻译为指定语言
二、 服务申请
翻译 API 采用全流程自助申请的模式。
点击云上曲率官网(https://www.ilivedata.com/) 右上方的“免费试用”按钮,按照提示信息“注册账号-创建企业”后,在控制台选择“实时文本翻译”服务并创建应用,即可获得 pid 和服务密钥。
如需开通更多服务,可在管理控制台-总览页面开通其他服务。
三、 接入方式
-
请求 URL: https://translate.ilivedata.com/api/v1/image/translate
-
请求方法: HTTP POST
-
请求 Header:
参数
是否必需
值
描述
Content-Type
必需
application/json;charset=UTF-8
请求体类型
Accept
必需
application/json;charset=UTF-8
接受的返回类型
X-AppId
必需
项目唯一标识
获取方式: <控制台-服务配置>中的项目编号
X-TimeStamp
必需
当前时间
需要把当前时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)
Authorization
必需
签名字符串
计算方式参照下方的请求签名
- 请求体JSON参数
参数
是否必需
类型
描述
type
必需
Number
1: 图片URL
2: 图片BASE64值。推荐使用BASE64方式调用,图片URL在网络不佳时可能会造成图片下载缓慢或下载失败等问题
image
必需
String
图片内容,如type=1,则该值为图片URL,如type=2,则该值为图片BASE64值
支持格式:jpg, png, bmp, gif, webp, tiff, heic 图片大小上限:10M
target
必需
String
图片中文字翻译的目标语言,同上需设置为语言支持文档中列举的ISO 639-1标准的语言代码之一
- 请求签名:
当用户请求 Image Translation API 时,可以使用 appId
和 secretKey
对请求做签名,当 API 收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API 将会返回 401
给用户。如果 API 验证签名一致,且 appId 对应的用户有权限操作请求的资源,则请求成功,否则 API 返回 401
。
- 通过 HTTP 请求 Header 发送签名
方法: 在请求中加入名为 Authorization
的 Header,值为签名值。如下:
Authorization: *****
-
签名计算方法
-
构造规范化的请求字符串(Canonicalized Query String):
将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)
CanonicalizedQueryString = hex(sha256(jsonBody))
-
构造被签名字符串 StringToSign
("\n" 代表 ASCII 里的换行符):
StringToSign = HTTPMethod + "\n" +
HostInLowercase + "\n" +
HTTPRequestURI + "\n" +
CanonicalizedQueryString <从上一步得到>
"X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
"X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI
是请求 URI 的绝对路径,不包含请求串。如果 HTTPRequestURI
为空,也需保留一个正斜杠 /
。
使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码(HMAC),然后计算签名。
-
StringToSign
作为签名字符串,secretKey
作为秘钥,SHA256作为哈希算法
有关 HMAC 的更多信息,请参阅 HMAC:用于消息身份验证的哈希密钥(https://tools.ietf.org/html/rfc2104)。
-
将上一步的结果转换为 BASE64 串
-
将 BASE64 串放入 HTTP 请求 Header 的 Authorization
-
签名示例
-
appId
& secretKey
的示例
appId=***
secrectKey=***
-
示例请求
Request Json:
{
"type": "2",
"userId": "test",
"target": "zh-CN",
"image": "T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."
}
生成CanonicalizedQueryString:
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
-
生成 StringToSign
POST\n
translate.ilivedata.com\n
api/v1/image/translate\n
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:***
X-TimeStamp:2020-07-31T07:59:03Z
-
HMAC 计算得到的签名
******
设置Header Authorization:******
- 请求响应:
Content-Type: application/json;charset=UTF-8
具体参数说明:
字段名
类型
描述
errorCode
Number
错误码,0表示成功
errorMessage
String
错误消息
code
Number
状态码,定义为:0:检测成功,1:图片下载失败,2:图片格式错误,3:其他
taskId
String
翻译任务唯一标识
ocr
String[]
识别出的图文列表
ocrDetail
OcrDetail[]
识别出的图文详细信息列表 含有文本内容和
translateResult
TranslateResult[]
翻译结果
OcrDetail结构:
字段名
类型
描述
text
String
文本内容
coordinate
Number[][]
文本对应的一组坐标, 分别是矩形文本框四个顶点的相对坐标, 范围在(0,1)
TranslateResult结构:
字段名
类型
描述
source
String
图文语种
target
String
翻译目标语种
sourceText
String
图文内容
targetText
String
翻译结果
- HTTP 响应示例:
{
"errorCode": 0,
"code": 0,
"ocr": [ "MICHAEL" ],
"ocrDetail": [
{
"coordinate": [
[0.8256130790190735,0.9365079365079365],
[0.9346049046321526,0.9365079365079365],
[0.9346049046321526,0.981859410430839],
[0.8256130790190735,0.981859410430839]
],
"text": "MICHAEL"
}
],
"taskId": "Tencent-ap_867488e27ab14c138180479992ab114b_1719829148272",
"translateResult": [
{
"source": "en",
"target": "zh-CN",
"sourceText": "MICHAEL",
"targetText": "迈克尔"
}
]
}
一、 服务概述
针对包含文字的图片,结合OCR图文识别技术和机器翻译,对图片中的文字内容进行识别,并翻译为指定语言
二、 服务申请
翻译 API 采用全流程自助申请的模式。
点击云上曲率官网(https://www.ilivedata.com/) 右上方的“免费试用”按钮,按照提示信息“注册账号-创建企业”后,在控制台选择“实时文本翻译”服务并创建应用,即可获得 pid 和服务密钥。
如需开通更多服务,可在管理控制台-总览页面开通其他服务。
三、 接入方式
-
请求 URL: https://translate.ilivedata.com/api/v1/image/translate
-
请求方法: HTTP POST
-
请求 Header:
参数 | 是否必需 | 值 | 描述 |
---|---|---|---|
Content-Type | 必需 | application/json;charset=UTF-8 | 请求体类型 |
Accept | 必需 | application/json;charset=UTF-8 | 接受的返回类型 |
X-AppId | 必需 | 项目唯一标识 | 获取方式: <控制台-服务配置>中的项目编号 |
X-TimeStamp | 必需 | 当前时间 | 需要把当前时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime) |
Authorization | 必需 | 签名字符串 | 计算方式参照下方的请求签名 |
- 请求体JSON参数
参数 | 是否必需 | 类型 | 描述 |
---|---|---|---|
type | 必需 | Number | 1: 图片URL 2: 图片BASE64值。推荐使用BASE64方式调用,图片URL在网络不佳时可能会造成图片下载缓慢或下载失败等问题 |
image | 必需 | String | 图片内容,如type=1,则该值为图片URL,如type=2,则该值为图片BASE64值 支持格式:jpg, png, bmp, gif, webp, tiff, heic 图片大小上限:10M |
target | 必需 | String | 图片中文字翻译的目标语言,同上需设置为语言支持文档中列举的ISO 639-1标准的语言代码之一 |
- 请求签名:
当用户请求 Image Translation API 时,可以使用 appId
和 secretKey
对请求做签名,当 API 收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API 将会返回 401
给用户。如果 API 验证签名一致,且 appId 对应的用户有权限操作请求的资源,则请求成功,否则 API 返回 401
。
- 通过 HTTP 请求 Header 发送签名
方法: 在请求中加入名为 Authorization
的 Header,值为签名值。如下:
Authorization: *****
-
签名计算方法
-
构造规范化的请求字符串(Canonicalized Query String):
将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64) CanonicalizedQueryString = hex(sha256(jsonBody))
-
构造被签名字符串
StringToSign
("\n" 代表 ASCII 里的换行符):StringToSign = HTTPMethod + "\n" + HostInLowercase + "\n" + HTTPRequestURI + "\n" + CanonicalizedQueryString <从上一步得到> "X-AppId:" + SAME_APPID_IN_HEADER + "\n" + "X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI
是请求 URI 的绝对路径,不包含请求串。如果HTTPRequestURI
为空,也需保留一个正斜杠/
。使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码(HMAC),然后计算签名。
-
StringToSign
作为签名字符串,secretKey
作为秘钥,SHA256作为哈希算法有关 HMAC 的更多信息,请参阅 HMAC:用于消息身份验证的哈希密钥(https://tools.ietf.org/html/rfc2104)。
-
将上一步的结果转换为 BASE64 串
-
将 BASE64 串放入 HTTP 请求 Header 的
Authorization
-
-
签名示例
-
appId
&secretKey
的示例appId=*** secrectKey=***
-
示例请求
Request Json:
{
"type": "2",
"userId": "test",
"target": "zh-CN",
"image": "T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."
}
生成CanonicalizedQueryString: b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
-
生成
StringToSign
POST\n translate.ilivedata.com\n api/v1/image/translate\n b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118 X-AppId:*** X-TimeStamp:2020-07-31T07:59:03Z
-
HMAC 计算得到的签名
******
设置Header Authorization:******
- 请求响应:
Content-Type: application/json;charset=UTF-8
具体参数说明:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Number | 错误码,0表示成功 |
errorMessage | String | 错误消息 |
code | Number | 状态码,定义为:0:检测成功,1:图片下载失败,2:图片格式错误,3:其他 |
taskId | String | 翻译任务唯一标识 |
ocr | String[] | 识别出的图文列表 |
ocrDetail | OcrDetail[] | 识别出的图文详细信息列表 含有文本内容和 |
translateResult | TranslateResult[] | 翻译结果 |
OcrDetail结构:
字段名 | 类型 | 描述 |
---|---|---|
text | String | 文本内容 |
coordinate | Number[][] | 文本对应的一组坐标, 分别是矩形文本框四个顶点的相对坐标, 范围在(0,1) |
TranslateResult结构:
字段名 | 类型 | 描述 |
---|---|---|
source | String | 图文语种 |
target | String | 翻译目标语种 |
sourceText | String | 图文内容 |
targetText | String | 翻译结果 |
- HTTP 响应示例:
{
"errorCode": 0,
"code": 0,
"ocr": [ "MICHAEL" ],
"ocrDetail": [
{
"coordinate": [
[0.8256130790190735,0.9365079365079365],
[0.9346049046321526,0.9365079365079365],
[0.9346049046321526,0.981859410430839],
[0.8256130790190735,0.981859410430839]
],
"text": "MICHAEL"
}
],
"taskId": "Tencent-ap_867488e27ab14c138180479992ab114b_1719829148272",
"translateResult": [
{
"source": "en",
"target": "zh-CN",
"sourceText": "MICHAEL",
"targetText": "迈克尔"
}
]
}