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