(1) 概念解釋
圖片翻譯:基于文字識別與文本翻譯技術,結合組段和渲染技術,滿足用戶翻譯圖片文字的需求,提升輸入效率
(2) 說明
Hi,您好,歡迎使用有道智云圖片翻譯iOS SDK。
如果您想快速體驗服務,建議您前往官網體驗中心 或者在體驗中心右下側找到小程序二維碼,掃描進行體驗。
本文檔主要針對需要集成圖片翻譯服務iOS SDK的開發(fā)工程師,詳細描述有道智云圖片翻譯能力及集成過程。
如果您有與我們商務合作的需求,可以通過以下方式聯系我們:
商務郵箱: AIcloud_Business@corp.youdao.com
如果您對文檔內容有任何疑問,可以通過以下幾種方式聯系我們:
客服QQ:1906538062
智云翻譯技術交流QQ 1群: 652880659
智云翻譯技術交流QQ 2群: 669384425
智云翻譯技術交流QQ 3群: 807539209
智云翻譯技術交流QQ 4群: 936752411
聯系郵箱: zhiyun@corp.youdao.com
溫馨提示: 本文檔主要針對開發(fā)人員,接入測試前需要在后臺創(chuàng)建iOS應用,并綁定圖片翻譯實例;如果您還沒有,請按照新手指南 操作。 平臺向每個賬戶贈送50元的體驗金,供用戶集成前測試所用,具體資費規(guī)則詳見圖片翻譯服務報價 。
有道圖片翻譯 SDK 是有道智云開放平臺提供的云服務之一,是有道在線圖片翻譯接口的一種實現,支持在線圖片翻譯。
支持設備:運行了iOS 8.0及以上系統(tǒng)的 iOS 設備
開始集成SDK之前開發(fā)者需要登錄有道智云平臺 ,創(chuàng)建應用獲取應用ID(或者通過運營人員獲取應用ID),以便使用翻譯服務。
翻譯SDK由如下幾個SDK組成,用戶可根據需要組合使用:
文件 | 說明 |
---|---|
FanYiSDK.h | 頭文件(必選) |
libbase.a | 圖片翻譯相關sdk基礎庫(必選) |
libocrtrans.a | 在線圖片翻譯 SDK(必選,使用在線圖片翻譯時使用) |
添加頭文件和庫文件:將 translateSDK 添加到工程中,包括 FanYiSDK.h 頭文件和 libFanYiSDK.a 文件??梢灾苯訉?translateSDK 文件夾拖動到工程中,也可以選擇File “Add files to ‘Project Name’…”
設置工程 Other Linker Flags 為 -ObjC
.mm
,參見 demo 中 ViewController.mm,Xcode 10.0之前的版本需要添加libstc++.6.0.9.tbd,Xcode 10.0及以上版本需要設置C++ Standard Library為libc++;若未使用離線功能可跳過此步驟;說明:所有的查詢都需要初始化appKey(應用ID),只執(zhí)行初始化一次即可。 注:appKey即應用ID
//初始化appKey(應用ID)
YDTranslateInstance *yd = [YDTranslateInstance sharedInstance];
yd.appKey = @"your appkey";
說明:請參考 demo 中 OCRTransController 的使用
YDOCRTransRequest *request = [YDOCRTransRequest request];
YDOCRTransParameter *param = [YDOCRTransParameter param];
param.from = @"en"; //設置源語言
param.to = @"zh-CHS"; //設置目標語言
param.serverRenderImage = YES; //設置服務端渲染
request.param = param;
NSString *base64Str = [self image2DataURL:self.imgView.image];
識別返回兩種情況,一種是成功,相關結果存儲在 result
參數中,另外一種是失敗,失敗信息放在 error
,可根據 錯誤代碼列表 查詢。整個識別是異步的。
request lookup:base64Str WithCompletionHandler:^(YDOCRTransRequest *request, NSDictionary *info, NSError *error) {
if (error) {
//失敗
NSLog(@"error:%@", error);
[HUDUtil show:self.view text:@"識別失敗"];
}else {
//成功
YDOCRTransResult *result = [YDOCRTransResult mj_objectWithKeyValues:info];
NSLog(@"%@", result);
[HUDUtil show:self.view text:@"識別成功"];
[self handleOCRTransReuslt:result];
}
}];
對于在線圖片翻譯,服務器查詢結果返回數據如下:
{
"orientation": "Up",
"lanFrom": "en",
"textAngle": "0.0",
"errorCode": "0",
"lanTo": "zh-CHS",
"render_image": "...."
"resRegions": [{
"boundingBox": "134,0,1066,249",
"linesCount": 7,
"lineheight": 28,
"context": " There are two ways to cope with the problem in government. One (dis cussed in the preceding chapter) is to supply the service or product in a marketlike environment. Shift the burden of evaluation off the shoulders of professional evaluators and onto the shoulders of clients and customers, and let the latter vote with their feet. The \"client\" in these cases can be individual citizens or government agencies; what is important is that the client be able to choose from among rival suppliers.",
"linespace": 7,
"tranContent": "有兩種方法可以在政府應對的問題。一個(在前一章討論)是提供的服務或產品marketlike環(huán)境。肩上的負擔,轉變評價專業(yè)評估和客戶的肩膀上,并讓后者用腳投票?!翱蛻簟痹谶@些情況下可以公民個人或政府機構;重要的是客戶端可以選擇從競爭對手的供應商。"
}, {
"boundingBox": "116,253,1100,354",
"linesCount": 10,
"lineheight": 28,
"context": " But some public services cannot be supplied, or arc never going to be sup plied, by a market. We can imagine allowing parents to choose among schools but we cannot imagine letting them choose (at least for most purposes) among police departments or armies. In that case one should adopt the second way of evaluating a public service: carry out a demonstration project or conduct a field experiment. (I will use the two ideas interchangeably, though some schol ars distinguish between them.7) An experiment is a planned alteration in a state of affairs designed to measure the effect of the intervention. It involves asking the question, \"If I change X, what will happen to Y, having first made certain that everything else stays the same?\" It sounds easy, but it is not.",
"linespace": 5,
"tranContent": "但是一些公共服務不能提供,或弧永遠不會一口招搖撞騙,由一個市場。我們可以想象允許父母選擇在學校但是我們無法想象讓他們選擇(至少在大多數情況下)在警察部門或軍隊。在這種情況下應該采用第二種方法評價公共服務:開展示范項目或進行現場試驗。(我將使用兩個概念互換,盡管有些schol ars區(qū)分them.7)一個實驗計劃變更的狀態(tài)設計測量干預的效果。它涉及到問這個問題:“如果我改變X,Y,會發(fā)生什么在第一次確信一切保持不變嗎?”這聽起來容易,但事實并非如此。"
}, {
"boundingBox": "101,609,1141,152",
"linesCount": 4,
"lineheight": 28,
"context": " A good experiment (bad ones are worse than no experiment at all) requires that one do the following: First, identify a course of action to be test ed; call it the treatment. A \"treatment\" can be a police tactic, a school cur riculum, or a welfare program. Second, decide what impact the treatment is",
"linespace": 5,
"tranContent": "一個好的實驗(壞的比任何實驗)要求執(zhí)行以下操作:首先,確定一個測試ed的行動;叫它治療。“治療”可以是一個警察戰(zhàn)術,一個學校cur riculum,或福利計劃。第二,決定什么是影響治療"
}]
}
render_image 是服務端渲染過的翻譯圖片
服務器是按照區(qū)域,行,字的格式返回的,即一張圖片會識別出圖片對應的 Result,其上可能有多個區(qū)域 Region,每個區(qū)域會包含一行或多行 Line,boundingBox 字段返回坐標和大小。 SDK 對上述 json 數據解析封裝為 YDOCRTransResult 對象,如下:
@interface YDOCRTransResult : NSObject
/* 錯誤碼 */
@property (nonatomic, copy) NSString *errorCode;
/* ocr所識別出來認為的圖片中的語言 */
@property (nonatomic, copy) NSString *lanFrom;
/* 目標語言 */
@property (nonatomic, copy) NSString *lanTo;
/* 圖片所對應的方向 */
@property (nonatomic, copy) NSString *orientation;
/* 圖片翻譯的具體內容 */
@property (nonatomic, strong) NSArray *resRegions;
/* 圖片的傾斜角度 */
@property (nonatomic, copy) NSString *textAngle;
/* 原始數據 */
@property (nonatomic, strong) NSDictionary *info;
+ (instancetype)initWithDict:(NSDictionary *)info;
@end
@interface YDOCRTransRegion : NSObject
/* 區(qū)域范圍,四個值:左上角的x值,左上角的y值,區(qū)域的的寬,區(qū)域的高,例如:134,0,1066,249 */
@property (nonatomic, copy) NSString *boundingBox;
/* 該區(qū)域的原文 */
@property (nonatomic, copy) NSString *context;
/* 行高 */
@property (nonatomic, copy) NSString *lineheight;
/* 行數(用于前端排版) */
@property (nonatomic, copy) NSString *linesCount;
/* 翻譯結果 */
@property (nonatomic, copy) NSString *tranContent;
/* 行間距 */
@property (nonatomic, copy) NSString *linespace;
+ (instancetype)initWithDict:(NSDictionary *)info;
@end
語言 | 代碼 |
---|---|
中文 | zh-CHS |
日文 | ja |
英文 | en |
韓文 | ko |
法文 | fr |
俄文 | ru |
葡萄牙文 | pt |
西班牙文 | es |
越南文 | vi |
德文 | de |
阿拉伯文 | ar |
印尼文 | id |
自動識別 | auto |
錯誤碼 | 含義 |
---|---|
101 | 缺少必填的參數 |
102 | 不支持的語言類型 |
103 | 翻譯文本過長 |
104 | 不支持的API類型 |
105 | 不支持的簽名類型 |
106 | 不支持的響應類型 |
107 | 不支持的傳輸加密類型 |
108 | 應用ID無效,注冊賬號,登錄后臺創(chuàng)建應用和實例并完成綁定,可獲得應用ID和應用密鑰等信息 |
109 | batchLog格式不正確 |
110 | 無相關服務的有效實例 |
111 | 開發(fā)者賬號無效 |
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 | 超過最大識別字節(jié)數 |
2003 | 不支持的語音聲道 |
2004 | 不支持的語音上傳類型 |
2005 | 不支持的語言類型 |
2006 | 不支持的識別類型 |
2201 | 識別音頻文件過大 |
2301 | 識別音頻時長過長 |
2411 | 不支持的音頻文件類型 |
2412 | 不支持的發(fā)音類型 |
3001 | 不支持的語音格式 |
3002 | 不支持的語音采樣率 |
3003 | 不支持的語音聲道 |
3004 | 不支持的語音上傳類型 |
3005 | 不支持的語言類型 |
3006 | 不支持的識別類型 |
3007 | 識別音頻文件過大 |
3008 | 識別音頻時長過長 |
3009 | 不支持的音頻文件類型 |
3010 | 不支持的發(fā)音類型 |
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.運行程序崩潰?
檢查下是否對應的 SDK靜態(tài)庫包
是否放到當前工程目錄下。
2.翻譯沒結果? 檢查下翻譯接口回調的錯誤信息,保證申請的應用ID是有效且提前綁定了。
3.添加翻譯 SDK 之后審核沒有通過? 翻譯 SDK 使用了 AdSupport 框架獲取設備 IDFA 信息用以統(tǒng)計計費,提交審核時對應用是否有廣告選項請選擇“是”。
上線日期 | 版本號 | 更新內容 |
---|---|---|
2017.05.08 | v1.0.0 | 有道智云翻譯 iOS 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 |
2017.08.16 | v1.4.0 | 1. 修復已知 bug |
2018.02.09 | v1.7.0 | 支持在線語音翻譯 |
2018.05.16 | v1.7.2 | 支持在線圖片翻譯 |