圖片翻譯 Android SDK 簡(jiǎn)介
概述
(1) 概念解釋
圖片翻譯:基于文字識(shí)別與文本翻譯技術(shù),結(jié)合組段和渲染技術(shù),滿足用戶翻譯圖片文字的需求,提升輸入效率
(2) 說(shuō)明
Hi,您好,歡迎使用有道智云圖片翻譯 Android SDK。
如果您想快速體驗(yàn)服務(wù),建議您前往 圖片翻譯體驗(yàn)中心或者在體驗(yàn)中心右下側(cè)找到小程序二維碼,掃描進(jìn)行體驗(yàn)。
本文檔主要針對(duì)需要集成圖片翻譯服務(wù) Android SDK 的開發(fā)工程師,詳細(xì)描述有道圖片翻譯能力及集成過程。
如果您有與我們商務(wù)合作的需求,可以通過以下方式聯(lián)系我們:
商務(wù)郵箱: AIcloud_Business@corp.youdao.com
如果您對(duì)文檔內(nèi)容有任何疑問,可以通過以下幾種方式聯(lián)系我們:
客服 QQ:1906538062
智云翻譯技術(shù)交流 QQ 1 群: 652880659
智云翻譯技術(shù)交流 QQ 2 群: 669384425
智云翻譯技術(shù)交流 QQ 3 群: 807539209
智云翻譯技術(shù)交流 QQ 4 群: 936752411
聯(lián)系郵箱: zhiyun@corp.youdao.com
溫馨提示:
本文檔主要針對(duì)開發(fā)人員,接入測(cè)試前需要在后臺(tái)創(chuàng)建 Android 應(yīng)用,并綁定圖片翻譯實(shí)例;如果您還沒有,請(qǐng)按照 新手指南操作。
平臺(tái)向每個(gè)賬戶贈(zèng)送 50 元的體驗(yàn)金,供用戶集成前測(cè)試所用,具體資費(fèi)規(guī)則詳見 圖片翻譯服務(wù)報(bào)價(jià) 。
功能介紹
圖片翻譯 SDK 是有道在線圖片翻譯服務(wù)進(jìn)行封裝。提供快速的接入方式;同時(shí)提供數(shù)據(jù)統(tǒng)計(jì)能力,方便了解用戶翻譯使用情況。
兼容性
支持設(shè)備:運(yùn)行了 Android 4.0.3 以及以上系統(tǒng)的 Android 設(shè)備
圖片翻譯 Android SDK 集成指南
集成前提
開始集成 SDK 之前開發(fā)者需要登錄有道智云平臺(tái) ,創(chuàng)建應(yīng)用獲取應(yīng)用 ID(或者通過運(yùn)營(yíng)人員獲取應(yīng)用 ID),以便使用翻譯服務(wù)。
翻譯 sdk 由如下幾個(gè) sdk 組成,用戶可根據(jù)需要組合使用:
文件 |
說(shuō)明 |
YoudaoBase_v20230803.jar |
翻譯相關(guān) sdk 基礎(chǔ)庫(kù)(必選) |
online_auth.jar |
翻譯相關(guān) sdk 基礎(chǔ)庫(kù)(必選) |
zhiyun_offline_common.jar |
翻譯相關(guān) sdk 基礎(chǔ)庫(kù)(必選) |
YoudaoTranslateOnline_v2.0.1.jar |
在線翻譯 sdk(必選) |
YoudaotranslateDemo |
sdk 使用 demo |
說(shuō)明:無(wú)論使用何種功能,都需要加入 YoudaoBase_v20230803.jar
,so 包和相應(yīng)功能的 sdk,可組合使用。
集成步驟
(1) SDK 包導(dǎo)入
請(qǐng)?jiān)诠こ涛募夸浵聞?chuàng)建一個(gè)名為 libs 的子目錄(有的話則不需要?jiǎng)?chuàng)建),并將 YoudaoBase_v20230803.jar,so 包和 YoudaoTranslateOnline_v2.0.1.jar 拷貝到 libs 目錄下,并將以下代碼添加到 app 的 build.gradle 中:
android {
sourceSets.main.jniLibs.srcDirs = ['libs']
...
}
dependencies {
compile files('libs/YoudaoBase_v20230803.jar')
compile files('libs/online_auth.jar')
compile files('libs/zhiyun_offline_common.jar')
compile files('libs/YoudaoTranslateOnline_v2.0.1.jar')
}
(2) AndroidManifest 配置
<uses-permission android:name="android.permission.INTERNET" />
<!-- 獲取WiFi狀態(tài) -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 獲取網(wǎng)絡(luò)信息狀態(tài),如當(dāng)前的網(wǎng)絡(luò)連接是否有效 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 往SDCard讀寫數(shù)據(jù)權(quán)限 storage group -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
(3) 代碼混淆配置
代碼混淆文件 proguard-project.txt,添加如下內(nèi)容:
-ignorewarnings
-libraryjars libs/ YoudaoBase_v20230803.jar
-libraryjars libs/ YoudaoTranslateOnline_v2.0.1.jar
-keep class com.youdao.sdk.ydtranslate.** { *;}
-keep class com.youdao.sdk.ydonlinetranslate.** { *;}
(4) SDK 初始化
使用圖片翻譯 SDK,請(qǐng)?jiān)诔绦虻?Application 中調(diào)用 SDK 初始化代碼,可以參考 demo 中 DemoApplication。
注:appKey 即應(yīng)用 ID
//appKey即應(yīng)用ID
YouDaoApplication.init(this, appkey);
功能集成
說(shuō)明:請(qǐng)參考 demo 中 OcrTranslateActivity 的使用
(1) 參數(shù)說(shuō)明
from:表示源語(yǔ)言
to:表示目標(biāo)語(yǔ)言
source:設(shè)置為 app 對(duì)應(yīng)的名稱(英文字符串)
timeout:表示超時(shí)時(shí)間
注意:輸入圖片數(shù)據(jù)需要轉(zhuǎn)換為 Base64 編碼。
(2) 構(gòu)造圖片翻譯查詞對(duì)象
代碼如下:
String from = languageSelectFrom.getText().toString();
String to = languageSelectTo.getText().toString();
LanguageOcrTranslate langFrom = LanguageUtils.getLangByName_OCRTranslate(from);
LanguageOcrTranslate langTo = LanguageUtils.getLangByName_OCRTranslate(to);
OcrTranslateParameters ocrP = new OcrTranslateParameters.Builder()
.timeout(6000)//超時(shí)時(shí)間
.from(langFrom)//源語(yǔ)言
.to(langTo)//目標(biāo)語(yǔ)言,目標(biāo)語(yǔ)言不可以為auto
.serverRender(true) //使用server的圖片渲染,直接返回渲染圖片
.build();
(3) 設(shè)置回調(diào)和開始翻譯
通過 OcrTranslate,設(shè)置上一步構(gòu)造的查詞對(duì)象,調(diào)用 lookup 方法傳入圖片 base64 編碼的數(shù)據(jù)和回調(diào)接口開始查詢,方法中最后一個(gè)參數(shù)"requestId",SDK 并未使用,在回調(diào)中會(huì)再返回給開發(fā)者,用于區(qū)分每次調(diào)用,開發(fā)者可傳 null 或者任意字符串。
識(shí)別回調(diào)接口包含兩個(gè)方法:onResult 表示識(shí)別成功,相關(guān)結(jié)果存儲(chǔ)在 result 參數(shù)中,onError 表示失敗,失敗信息放在 TranslateErrorCode 枚舉類中。
注意:整個(gè)識(shí)別是異步的,回調(diào)在子線程進(jìn)行,若涉及到界面操作,請(qǐng)切回主線程。
OcrTranslate.getInstance(ocrP).lookup(base64, "requestid", new OcrTranslateListener() {
@Override
public void onError(TranslateErrorCode error, String requestId) {
}
@Override
public void onResult(OCRTranslateResult result, String input, String requestId) {
}
});
注:OCRTranslateResult.getRenderImage() 為服務(wù)端渲染好的圖片的 base64
支持語(yǔ)言
下表為各語(yǔ)言對(duì)應(yīng)代碼:
英文名 |
中文名 |
代碼 |
Arabic |
阿拉伯語(yǔ) |
ar |
German |
德語(yǔ) |
de |
English |
英語(yǔ) |
en |
Spanish |
西班牙語(yǔ) |
es |
French |
法語(yǔ) |
fr |
Hindi |
印地語(yǔ) |
hi |
Indonesian |
印度尼西亞語(yǔ) |
id |
Italian |
意大利語(yǔ) |
it |
Japanese |
日語(yǔ) |
ja |
Korean |
韓語(yǔ) |
ko |
Dutch |
荷蘭語(yǔ) |
nl |
Portuguese |
葡萄牙語(yǔ) |
pt |
Russian |
俄語(yǔ) |
ru |
Thai |
泰語(yǔ) |
th |
Vietnamese |
越南語(yǔ) |
vi |
|
中文 |
zh-CHS |
|
中文繁體 |
zh-CHT |
Afrikaans |
南非荷蘭語(yǔ) |
af |
Azeerbaijani |
阿塞拜疆語(yǔ) |
az |
Belarusian |
白俄羅斯語(yǔ) |
be |
Bulgarian |
保加利亞語(yǔ) |
bg |
Bangla |
孟加拉語(yǔ) |
bn |
Bosnian (Latin) |
波斯尼亞語(yǔ) |
bs |
Catalan |
加泰隆語(yǔ) |
ca |
Cebuano |
宿務(wù)語(yǔ) |
ceb |
Corsican |
科西嘉語(yǔ) |
co |
Czech |
捷克語(yǔ) |
cs |
Welsh |
威爾士語(yǔ) |
cy |
Danish |
丹麥語(yǔ) |
da |
Greek |
希臘語(yǔ) |
el |
Esperanto |
世界語(yǔ) |
eo |
Estonian |
愛沙尼亞語(yǔ) |
et |
Basque |
巴斯克語(yǔ) |
eu |
Persian |
波斯語(yǔ) |
fa |
Finnish |
芬蘭語(yǔ) |
fi |
Frisian |
弗里西語(yǔ) |
fy |
Irish |
愛爾蘭語(yǔ) |
ga |
Scots |
蘇格蘭蓋爾語(yǔ) |
gd |
Galician |
加利西亞語(yǔ) |
gl |
Gujarati |
古吉拉特語(yǔ) |
gu |
Hausa |
豪薩語(yǔ) |
ha |
Hawaiian |
夏威夷語(yǔ) |
haw |
Hebrew |
希伯來(lái)語(yǔ) |
he |
Croatian |
克羅地亞語(yǔ) |
hr |
Haitian |
海地克里奧爾語(yǔ) |
ht |
Hungarian |
匈牙利語(yǔ) |
hu |
Armenian |
亞美尼亞語(yǔ) |
hy |
Igbo |
伊博語(yǔ) |
ig |
Icelandic |
冰島語(yǔ) |
is |
Javanese |
爪哇語(yǔ) |
jw |
Georgian |
格魯吉亞語(yǔ) |
ka |
Kazakh |
哈薩克語(yǔ) |
kk |
Khmer |
高棉語(yǔ) |
km |
Kannada |
卡納達(dá)語(yǔ) |
kn |
Kurdish |
庫(kù)爾德語(yǔ) |
ku |
Kyrgyz |
柯爾克孜語(yǔ) |
ky |
Latin |
拉丁語(yǔ) |
la |
Luxembourgish |
盧森堡語(yǔ) |
lb |
Lao |
老撾語(yǔ) |
lo |
Lithuanian |
立陶宛語(yǔ) |
lt |
Latvian |
拉脫維亞語(yǔ) |
lv |
Malagasy |
馬爾加什語(yǔ) |
mg |
Maori |
毛利語(yǔ) |
mi |
Macedonian |
馬其頓語(yǔ) |
mk |
Malayalam |
馬拉雅拉姆語(yǔ) |
ml |
Mongolian |
蒙古語(yǔ) |
mn |
Marathi |
馬拉地語(yǔ) |
mr |
Malay |
馬來(lái)語(yǔ) |
ms |
Maltese |
馬耳他語(yǔ) |
mt |
Myanmar (Burmese) |
緬甸語(yǔ) |
my |
Nepali |
尼泊爾語(yǔ) |
ne |
Norwegian |
挪威語(yǔ) |
no |
Nyanja (Chichewa) |
齊切瓦語(yǔ) |
ny |
Punjabi |
旁遮普語(yǔ) |
pa |
Polish |
波蘭語(yǔ) |
pl |
Pashto |
普什圖語(yǔ) |
ps |
Romanian |
羅馬尼亞語(yǔ) |
ro |
Sindhi |
信德語(yǔ) |
sd |
Sinhala (Sinhalese) |
僧伽羅語(yǔ) |
si |
Slovak |
斯洛伐克語(yǔ) |
sk |
Slovenian |
斯洛文尼亞語(yǔ) |
sl |
Samoan |
薩摩亞語(yǔ) |
sm |
Shona |
修納語(yǔ) |
sn |
Somali |
索馬里語(yǔ) |
so |
Albanian |
阿爾巴尼亞語(yǔ) |
sq |
Serbian (Cyrillic) |
塞爾維亞語(yǔ)(西里爾文) |
sr-Cyrl |
Serbian (Latin) |
塞爾維亞語(yǔ)(拉丁文) |
sr-Latn |
Sesotho |
塞索托語(yǔ) |
st |
Sundanese |
巽他語(yǔ) |
su |
Swedish |
瑞典語(yǔ) |
sv |
Kiswahili |
斯瓦希里語(yǔ) |
sw |
Tamil |
泰米爾語(yǔ) |
ta |
Telugu |
泰盧固語(yǔ) |
te |
Tajik |
塔吉克語(yǔ) |
tg |
Filipino |
菲律賓語(yǔ) |
tl |
Turkish |
土耳其語(yǔ) |
tr |
Ukrainian |
烏克蘭語(yǔ) |
uk |
Urdu |
烏爾都語(yǔ) |
ur |
Uzbek |
烏茲別克語(yǔ) |
uz |
Yiddish |
意第緒語(yǔ) |
yi |
Yoruba |
約魯巴語(yǔ) |
yo |
Cantonese (Traditional) |
粵語(yǔ) |
yue |
Zulu |
南非祖魯語(yǔ) |
zu |
自動(dòng)識(shí)別 |
auto |
|
錯(cuò)誤代碼列表
錯(cuò)誤碼 |
含義 |
101 |
缺少必填的參數(shù) |
102 |
不支持的語(yǔ)言類型 |
103 |
翻譯文本過長(zhǎng) |
104 |
不支持的 API 類型 |
105 |
不支持的簽名類型 |
106 |
不支持的響應(yīng)類型 |
107 |
不支持的傳輸加密類型 |
108 |
應(yīng)用 ID 無(wú)效,注冊(cè)賬號(hào),登錄后臺(tái)創(chuàng)建應(yīng)用和實(shí)例并完成綁定,可獲得應(yīng)用 ID 和應(yīng)用密鑰等信息 |
109 |
batchLog 格式不正確 |
110 |
無(wú)相關(guān)服務(wù)的有效實(shí)例 |
111 |
開發(fā)者賬號(hào)無(wú)效 |
113 |
q 不能為空 |
114 |
不支持的圖片傳輸方式 |
201 |
解密失敗,可能為 DES,BASE64,URLDecode 的錯(cuò)誤 |
202 |
簽名檢驗(yàn)失敗 |
203 |
訪問 IP 地址不在可訪問 IP 列表 |
205 |
請(qǐng)求的接口與應(yīng)用的平臺(tái)類型不一致,如有疑問請(qǐng)參考入門指南 |
206 |
因?yàn)闀r(shí)間戳無(wú)效導(dǎo)致簽名校驗(yàn)失敗 |
207 |
重放請(qǐng)求 |
301 |
辭典查詢失敗 |
302 |
翻譯查詢失敗 |
303 |
服務(wù)端的其它異常 |
304 |
會(huì)話閑置太久超時(shí) |
401 |
賬戶已經(jīng)欠費(fèi)停 |
402 |
offlinesdk 不可用 |
411 |
訪問頻率受限,請(qǐng)稍后訪問 |
412 |
長(zhǎng)請(qǐng)求過于頻繁,請(qǐng)稍后訪問 |
1001 |
無(wú)效的 OCR 類型 |
1002 |
不支持的 OCR image 類型 |
1003 |
不支持的 OCR Language 類型 |
1004 |
識(shí)別圖片過大 |
1201 |
圖片 base64 解密失敗 |
1301 |
OCR 段落識(shí)別失敗 |
1411 |
訪問頻率受限 |
1412 |
超過最大識(shí)別字節(jié)數(shù) |
2003 |
不支持的語(yǔ)音聲道 |
2004 |
不支持的語(yǔ)音上傳類型 |
2005 |
不支持的語(yǔ)言類型 |
2006 |
不支持的識(shí)別類型 |
2201 |
識(shí)別音頻文件過大 |
2301 |
識(shí)別音頻時(shí)長(zhǎng)過長(zhǎng) |
2411 |
不支持的音頻文件類型 |
2412 |
不支持的發(fā)音類型 |
3001 |
不支持的語(yǔ)音格式 |
3002 |
不支持的語(yǔ)音采樣率 |
3003 |
不支持的語(yǔ)音聲道 |
3004 |
不支持的語(yǔ)音上傳類型 |
3005 |
不支持的語(yǔ)言類型 |
3006 |
不支持的識(shí)別類型 |
3007 |
識(shí)別音頻文件過大 |
3008 |
識(shí)別音頻時(shí)長(zhǎng)過長(zhǎng) |
3009 |
不支持的音頻文件類型 |
3010 |
不支持的發(fā)音類型 |
3201 |
解密失敗 |
3301 |
語(yǔ)音識(shí)別失敗 |
3302 |
語(yǔ)音翻譯失敗 |
3303 |
服務(wù)的異常 |
3411 |
訪問頻率受限,請(qǐng)稍后訪問 |
3412 |
超過最大請(qǐng)求字符數(shù) |
5001 |
無(wú)效的 OCR 類型 |
5002 |
不支持的 OCR image 類型 |
5003 |
不支持的語(yǔ)言類型 |
5004 |
識(shí)別圖片過大 |
5005 |
不支持的圖片類型 |
5006 |
文件為空 |
5201 |
解密錯(cuò)誤,圖片 base64 解密失敗 |
5301 |
OCR 段落識(shí)別失敗 |
5411 |
訪問頻率受限 |
5412 |
超過最大識(shí)別流量 |
9001 |
不支持的語(yǔ)音格式 |
9002 |
不支持的語(yǔ)音采樣率 |
9003 |
不支持的語(yǔ)音聲道 |
9004 |
不支持的語(yǔ)音上傳類型 |
9005 |
不支持的語(yǔ)音識(shí)別 Language 類型 |
9301 |
ASR 識(shí)別失敗 |
9303 |
服務(wù)器內(nèi)部錯(cuò)誤 |
9411 |
訪問頻率受限(超過最大調(diào)用次數(shù)) |
9412 |
超過最大處理語(yǔ)音長(zhǎng)度 |
10001 |
無(wú)效的 OCR 類型 |
10002 |
不支持的 OCR image 類型 |
10004 |
識(shí)別圖片過大 |
10201 |
圖片 base64 解密失敗 |
10301 |
OCR 段落識(shí)別失敗 |
10411 |
訪問頻率受限 |
10412 |
超過最大識(shí)別流量 |
13001 |
不支持的角度類型 |
13002 |
不支持的文件類型 |
13003 |
表格識(shí)別圖片過大 |
13004 |
文件為空 |
13301 |
表格識(shí)別失敗 |
17001 |
需要圖片 |
17002 |
圖片過大(1M) |
17003 |
識(shí)別類型未找到 |
17004 |
不支持的識(shí)別類型 |
17005 |
服務(wù)調(diào)用失敗 |
-1000 |
未知錯(cuò)誤 |
-2000 |
查詢輸入為空 |
常見問題及注意事項(xiàng)
1.運(yùn)行程序崩潰?
檢查下是否對(duì)應(yīng)的 so
是否放到當(dāng)前工程目錄下。
2.翻譯沒結(jié)果?
檢查下翻譯接口回調(diào)的錯(cuò)誤信息,保證申請(qǐng)的應(yīng)用 ID 是有效且提前綁定了。
3.如何獲得應(yīng)用 ID
注冊(cè)賬號(hào), 登錄后臺(tái)創(chuàng)建應(yīng)用和實(shí)例并完成綁定, 可獲得應(yīng)用 ID 和應(yīng)用密鑰等信息。
4.出現(xiàn)錯(cuò)誤HTTP_REQUEST_ERROR("Http requesterror.",1)
在確保有網(wǎng)情況下,若調(diào)用過程中出現(xiàn)這個(gè)錯(cuò)誤,HTTP_REQUEST_ERROR("Http requesterror.",1)
,請(qǐng)檢查是否是在主線程中調(diào)用的翻譯識(shí)別方法,請(qǐng)確保在主線程調(diào)用。
版本更新記錄
上線日期 |
版本號(hào) |
更新內(nèi)容 |
2017.05.08 |
v1.0.0 |
有道智云翻譯 Android SDK 上線,支持在線離線翻譯 |
2017.06.07 |
v1.1.0 |
1. 拆分翻譯 SDK,SDK 拆分為多個(gè)文件,用戶可根據(jù)需要引用 2. 修復(fù)已知 bug |
2017.06.30 |
v1.2.0 |
修復(fù)已知 bug |
2017.07.24 |
v1.3.0 |
1. 修復(fù) deeplink 相關(guān) bug 2. demo 開發(fā)環(huán)境更改為 Android Studio |
2017.08.16 |
v1.4.0 |
1. 修復(fù)已知 bug2. 提供多版本的 so 文件 |
2017.11.16 |
v1.5.0 |
1. 合并離線查詞和句子翻譯2. 統(tǒng)一路徑設(shè)置和結(jié)果回調(diào) 3. 支持非主線程調(diào)用 4. 離線查詞和漢語(yǔ)詞典,支持詞庫(kù)放在安裝包 5. bug 修復(fù) |
2018.02.09 |
v1.7.0 |
1. 新增每種詞庫(kù)不同路徑初始化 2. 支持在線語(yǔ)音翻譯 |
2018.04.26 |
v1.7.1 |
1. 新增越南語(yǔ)和繁體中文 2. 支持在線語(yǔ)音翻譯 3.修復(fù)查詢結(jié)果 from 和 to 不對(duì)問題 |
2018.05.16 |
v1.7.2 |
支持在線圖片翻譯 |
2019.11.01 |
v2.0.0 |
兼容多個(gè) sdk |
2023.08.07 |
v2.0.1 |
更新語(yǔ)言 |