接口描述
图片翻译是火山引擎基于行业领先的文字识别和翻译技术,提供多场景、多语种、高精度的整图识别+翻译服务。您只需传入图片,即可自动识别图片中的文字并进行翻译,支持实景回填将译文还原到原图相应位置上。
接口限制
- 支持语言:可在语言支持列表中查看图片翻译支持的的源语言及目标语言。
- 图片要求:
- 支持的图片格式: jpg、png
- 图片大小限制:4MB
- 图片尺寸限制:4096*4096
- 图片内文字的要求:图片内文字要清晰,不能为手写体
支持语言
原文语言
语种 | 语种代号 | 百度语种代号 | 谷歌语种代号 | 腾讯语种代号 |
---|
波斯尼亚语 | bs | bos | | |
爱沙尼亚语 | et | est | | |
立陶宛语 | lt | lit | | |
泰米尔语 | ta | tam | | |
拉脱维亚语 | lv | lav | | |
斯洛文尼亚语 | sl | slo | | |
马拉提语 | mr | | | |
马拉亚拉姆语 | ml | | | |
马来语 | ms | may | | |
斯洛伐克语 | sk | | | |
阿塞拜疆语 | az | aze | | |
孟加拉语 | bn | ben | | |
捷克语 | cs | | | |
丹麦语 | da | dan | | |
德语 | de | | | |
英语 | en | | | |
西班牙语 | es | spa | | |
芬兰语 | fi | fin | | |
法语 | fr | fra | | |
古吉拉特语 | gu | guj | | |
印地语 | hi | | | |
克罗地亚语 | hr | hrv | | |
印尼语 | id | | | |
意大利语 | it | | | |
日语 | ja | jp | | |
朝鲜语 | ko | | | |
荷兰语 | nl | | | |
挪威语 | no | nor | | |
旁遮普语 | pa | pan | | |
波兰语 | pl | | | |
葡萄牙语 | pt | | | |
俄语 | ru | | | |
瑞典语 | sv | swe | | |
泰语 | th | | | |
越南语 | vi | vie | | |
中文(简体) | zh | | | |
中文(繁体) | zh-Hant | cht | | |
目标语言
语种 | 语种代号 | 百度语种代号 | 谷歌语种代号 | 腾讯语种代号 |
---|
中文 | zh | | | |
日语 | jp | jp | | |
英语 | en | | | |
葡萄牙语 | pt | | | |
法语 | fr | fra | | |
德语 | de | | | |
印尼语 | id | | | |
荷兰语 | nl | | | |
意大利语 | it | | | |
土耳其语 | tr | | | |
俄语 | ru | | | |
波兰语 | pl | | | |
芬兰语 | fi | fin | | |
罗马尼亚语 | ro | rom | | |
捷克语 | cs | | | |
现代希腊语 | el | | | |
乌克兰语 | uk | ukr | | |
瑞典语 | sv | swe | | |
马来语 | ms | may | | |
挪威语 | no | nor | | |
斯洛伐克语 | sk | | | |
马其顿语 | mk | mac | | |
拉脱维亚语 | lv | lav | | |
他加禄语 | tl | tgl | | |
蒙古语 | mn | | | |
立陶宛语 | lt | lit | | |
克罗地亚语 | hr | hrv | | |
爱沙尼亚语 | et | est | | |
波斯尼亚语 | bs | bos | | |
丹麦语 | da | dan | | |
保加利亚语 | bg | bul | | |
阿非利堪斯语 | af | | | |
中文(简体) | zh | | | |
日语 | ja | jp | | |
朝鲜语 | ko | | | |
中文(繁体) | zh-Hant | cht | | |
泰语 | th | | | |
印地语 | hi | | | |
马拉提语 | mr | | | |
泰卢固语 | te | tel | | |
泰米尔语 | ta | tam | | |
缅甸语 | my | bur | | |
马拉亚拉姆语 | ml | | | |
高棉语 | km | hkm | | |
坎纳达语 | kn | | | |
希伯来语 | he | heb | | |
孟加拉语 | bn | ben | | |
格鲁吉亚语 | ka | geo | | |
接口说明
字段 | 类型 | 是否为必须项 | 说明 | 备注 |
---|
TargetLanguage | String | 是 | 目标语言对应的语言代码 | |
Image | String | 是 | 图片二进制内容进行base64编码后的字符串 | 无 |
字段 | 类型 | 说明 | 备注 |
---|
ResponseMetadata | ResponseMetadata | 通用字段 | 无 |
Image | String | 文字识别+翻译后文本回贴后图片的base64编码 | 无 |
TextBlocks | [TextBlock] | 包含位置信息、识别文本、翻译文本等信息的文本块结果列表 | TextBlocks 列表内具体字段信息见下表 |
字段 | 类型 | 说明 | 备注 |
---|
Points | [Point] | 文本块坐标点 | Points 的具体字段信息见下表 |
DetectedLanguage | String | 检测到的语种 | 无 |
Text | String | 识别内容 | 无 |
Translation | String | 翻译结果 | 无 |
ForeColor | [int32] | 文字平均色RGBA | 无 |
BackColor | [int32] | 背景平均色RGBA | 无 |
字段 | 类型 | 说明 | 备注 |
---|
X | int32 | X坐标 | 无 |
Y | int32 | Y坐标 | 无 |
- 样例
{
"Image": "iVBORw0KGgoAAAANSUhEUgA......yspVVQAAAAASUVORK5CYII=",
"TargetLanguage": "zh"
}
{
"Image": "iVBORw0KGgoAAAANSUhEUgAA......IpHha3IAAAAASUVORK5CYII=",
"TextBlocks":[
{
"Points": [
{"X":0, "Y":0},
{"X":100, "Y":0},
{"X":0, "Y":100},
{"X":100, "Y":100}
],
"DetectedLanguage": "en",
"Text": "Hello",
"Translation": "你好",
"ForeColor": [0, 0, 0, 0],
"BackColor": [255, 255, 255, 255]
],
"ResponseMetadata": {
"RequestId":"20200708125936010014044066270A1763",
"Action":"TranslateImage",
"Version":"2020-07-01",
"Service":"translate",
"Region":"cn-north-1"}
}
示例代码
依赖 volc-sdk-python
import json
import requests
import base64
import time
from volcengine.ApiInfo import ApiInfo
from volcengine.Credentials import Credentials
from volcengine.ServiceInfo import ServiceInfo
from volcengine.base.Service import Service
# 示例图片url
img_url = 'https://s1.ax1x.com/2020/07/07/UAtqnf.png'
k_access_key = '密钥管理中的 AccessKey ID' # https://console.volcengine.com/iam/keymanage/
k_secret_key = '密钥管理中的 AccessKey Secret'
k_timeout = 5 # second
k_service_info = \
ServiceInfo('open.volcengineapi.com',
{'Content-Type': 'application/json'},
Credentials(k_access_key, k_secret_key, 'translate', 'cn-north-1'),
5,
5)
k_query = {
'Action': 'TranslateImage',
'Version': '2020-07-01'
}
k_api_info = {
'translate': ApiInfo('POST', '/', k_query, {}, {})
}
service = Service(k_service_info, k_api_info)
img_data = requests.get(img_url).content
img_base64 = str(base64.b64encode(img_data), encoding='utf8')
body = {
'Image': img_base64,
'TargetLanguage': "zh"}
res_data = service.json('translate', {}, json.dumps(body))
print(res_data)
package main
import (
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"time"
"github.com/volcengine/volc-sdk-golang/base"
)
const (
kAccessKey = "密钥管理中的 AccessKey ID" // https://console.volcengine.com/iam/keymanage/
kSecretKey = "密钥管理中的 AccessKey Secret"
kServiceVersion = "2020-07-01"
// 示例图片url
imgUrl = "https://s1.ax1x.com/2020/07/07/UAtqnf.png"
)
var (
ServiceInfo = &base.ServiceInfo{
Timeout: 5 * time.Second,
Host: "open.volcengineapi.com",
Header: http.Header{
"Accept": []string{"application/json"},
},
Credentials: base.Credentials{Region: base.RegionCnNorth1, Service: "translate"},
}
ApiInfoList = map[string]*base.ApiInfo{
"TranslateImage": {
Method: http.MethodPost,
Path: "/",
Query: url.Values{
"Action": []string{"TranslateImage"},
"Version": []string{kServiceVersion},
},
},
}
)
func newClient() *base.Client {
client := base.NewClient(ServiceInfo, ApiInfoList)
client.SetAccessKey(kAccessKey)
client.SetSecretKey(kSecretKey)
return client
}
func main() {
imgRes, _ := http.Get(imgUrl)
defer imgRes.Body.Close()
imgData, _ := ioutil.ReadAll(imgRes.Body)
imgBase64 := base64.StdEncoding.EncodeToString(imgData)
jsonBody := map[string]string{
"Image": imgBase64,
"TargetLanguage": "zh"}
body, _ := json.Marshal(jsonBody)
client := newClient()
res, code, err := client.Json("TranslateImage", nil, string(body))
if err != nil {
panic(err)
}
fmt.Printf("%d %s\n", code, string(res))
}
// byte[] input = new byte[10]; // read file
String base64Image = Base64.getEncoder().encodeToString(input);
TranslateImageRequest translateImageRequest = new TranslateImageRequest();
translateImageRequest.setTargetLanguage("zh");
translateImageRequest.setImage(base64Image);
TranslateImageResponse translateImageResponse = translateService.translateImage(translateImageRequest);
System.out.println(JSON.toJSONString(translateImageResponse.getResponseMetadata()));
System.out.println(JSON.toJSONString(translateImageResponse.getResult()));
byte[] output = Base64.getDecoder().decode(translateImageResponse.getImage());
// write file