通用文字識(shí)別 SDK簡(jiǎn)介
概述
(1) 概念解釋
通用文字識(shí)別:將自然場(chǎng)景下圖片上的文字內(nèi)容,通過(guò)定位和檢測(cè),智能識(shí)別為可編輯的文本信息
(2) 說(shuō)明
Hi,您好,歡迎使用有道智云OCR iOS SDK。
如果您想快速體驗(yàn)服務(wù),建議您前往 體驗(yàn)中心 或者搜索小程序(有道智云體驗(yàn)中心)進(jìn)行試用。
本文檔主要針對(duì)需要集成OCR識(shí)別服務(wù)iOS SDK的開(kāi)發(fā)工程師,詳細(xì)描述有道智云OCR識(shí)別能力及集成過(guò)程。
如果您有與我們商務(wù)合作的需求,可以通過(guò)以下方式聯(lián)系我們:
商務(wù)郵箱: AIcloud_Business@corp.youdao.com
如果您對(duì)文檔內(nèi)容有任何疑問(wèn),可以通過(guò)以下幾種方式聯(lián)系我們:
客服QQ:1906538062
智云OCR技術(shù)交流QQ 1群: 654064748
智云OCR技術(shù)交流QQ 2群: 471638046
聯(lián)系郵箱: zhiyun@corp.youdao.com
溫馨提示:
本文檔主要針對(duì)開(kāi)發(fā)人員,接入測(cè)試前需要在后臺(tái)創(chuàng)建iOS應(yīng)用,并綁定OCR識(shí)別實(shí)例;如果您還沒(méi)有,請(qǐng)按照 新手指南 操作。
平臺(tái)向每個(gè)賬戶(hù)贈(zèng)送50元的體驗(yàn)金,供用戶(hù)集成前測(cè)試所用,具體資費(fèi)規(guī)則詳見(jiàn) 通用文字識(shí)別服務(wù)報(bào)價(jià)。
功能介紹
有道通用文字識(shí)別 SDK 是有道智云開(kāi)放平臺(tái)提供的云服務(wù)之一,是有道在線(xiàn) OCR 接口的一種實(shí)現(xiàn),支持在線(xiàn)文本識(shí)別。
兼容性
支持設(shè)備:運(yùn)行了iOS 8.0及以上系統(tǒng)的 iOS 設(shè)備
通用文字識(shí)別 SDK集成指南
集成前提
開(kāi)始集成SDK之前開(kāi)發(fā)者需要登錄 有道智云平臺(tái) ,創(chuàng)建應(yīng)用獲取應(yīng)用ID(或者通過(guò)運(yùn)營(yíng)人員獲取應(yīng)用ID),以便使用OCR服務(wù)。
集成步驟
SDK包導(dǎo)入
OCR SDK 由如下幾個(gè) SDK 組成,OCRSDK.h、libbase.a、libocronline.a
(1). 添加頭文件和庫(kù)文件:將 OCR SDK 添加到工程中,包括 OCRSDK.h頭文件、libbase.a和libocronline.a文件??梢灾苯訉ranslateSDK文件夾拖動(dòng)到工程中,也可以選擇File “Add files to ‘Project Name’…”
(2). 設(shè)置工程O(píng)ther Linker Flags為-ObjC
(3). 在工程build Phases – Link Binary With Libraries中添加libbase.a, AdSupport.framework, CoreTelephony.framework, SystemConfiguration, libz.tbd和libsqlite3.tbd。
SDK初始化
說(shuō)明:所有的查詢(xún)都需要初始化key,只執(zhí)行初始化一次即可。
//初始化key
YDTranslateInstance *yd = [YDTranslateInstance sharedInstance];
yd.appKey = @"your appkey";
功能集成
說(shuō)明:請(qǐng)參考 demo 中 OCROnlineController 的使用
構(gòu)造查詢(xún)器
YDOCRRequest *request = [YDOCRRequest request];
YDOCRParameter *param = [YDOCRParameter param];
param.langType = @"en"; //設(shè)置識(shí)別語(yǔ)言為英文,langType支持"zh-en"和"en",其中"zh-en"為中英識(shí)別,"en"參數(shù)表示只識(shí)別英文。若為 純英文識(shí)別,"zh-en"的識(shí)別效果不如"en",請(qǐng)妥善選擇
param.source = @"youdaoocr"; //設(shè)置源
param.detectType = @"10012"; //設(shè)置識(shí)別類(lèi)型,按行識(shí)別:10012
request.param = param;
將圖片轉(zhuǎn)化為base64編碼
NSString *base64Str = [self image2DataURL:self.imgView.image];
執(zhí)行識(shí)別過(guò)程
識(shí)別返回兩種情況,一種是成功,相關(guān)結(jié)果存儲(chǔ)在 result 參數(shù)中,另外一種是失敗,失敗信息放在 error,是一個(gè)枚舉類(lèi),整個(gè)識(shí)別是異步的。
[request lookup:base64Str WithCompletionHandler:^(YDOCRRequest *request, YDOCRResult *result, NSError *error) {
    if (error) {
        //失敗
        NSLog(@"error:%@", error);
    }else {
        //成功
        [self handleOCRReuslt:result];
    }
}];
識(shí)別結(jié)果說(shuō)明
對(duì)于在線(xiàn)OCR,服務(wù)器查詢(xún)結(jié)果返回?cái)?shù)據(jù)如下:
{
       "errorCode": "0",
       "Result": {
               "orientation": "Up",
               "regions": [{
                       "boundingBox": "81,325,552,64",
                       "lines": [{
                               "boundingBox": "81,325,552,64",
                               "text":"NetEase YouDao"
                               "words": [{
                                       "boundingBox": "81,329,259,59",
                                       "word": "NetEase"
                               }, {
                                       "boundingBox": "364,325,270,62",
                                       "word": "YouDao"
                               }]
                       }]
               }],
               "textAngle": 1.07417,
               "language": "en"
       }
}
服務(wù)器是按照區(qū)域,行,字的格式返回的,即一張圖片會(huì)識(shí)別出圖片對(duì)應(yīng)的 Result,其上可能有多個(gè)區(qū)域 Region,每個(gè)區(qū)域會(huì)包含一行或多行 Line,每行又包括一個(gè)或多個(gè)字 Word,每個(gè)區(qū)域、行或者字符,都會(huì)通過(guò) boundingBox 字段返回坐標(biāo)和大小。 SDK 對(duì)上述 json 數(shù)據(jù)解析封裝為 YDOCRResult 對(duì)象,如下:
@interface YDOCRResult : NSObject
@property (nonatomic, copy) NSString *orientation;
@property (nonatomic, copy) NSString *textAngle;
@property (nonatomic, copy) NSString *language;
@property (nonatomic, strong) NSArray *regions; //YDOCRRegion數(shù)組
+ (instancetype)initWithDict:(NSDictionary *)info;
@end
@interface YDOCRRegion : NSObject
@property (nonatomic, copy) NSString *boundingBox;
@property (nonatomic, strong) NSArray *lines;//YDOCRLine數(shù)組
+ (instancetype)initWithDict:(NSDictionary *)info;
@end
@interface YDOCRLine : NSObject
@property (nonatomic, copy) NSString *boundingBox;
@property (nonatomic, copy) NSString *text;
@property (nonatomic, strong) NSArray *words;//YDOCRWord數(shù)組
+ (instancetype)initWithDict:(NSDictionary *)info;
@end
@interface YDOCRWord : NSObject
@property (nonatomic, copy) NSString *boundingBox;
@property (nonatomic, copy) NSString *word;
+ (instancetype)initWithDict:(NSDictionary *)info;
@end
支持語(yǔ)言
| 語(yǔ)言 | 代碼 | 
| sq | 阿爾巴尼亞語(yǔ) | 
| az | 阿塞拜疆語(yǔ) | 
| eu | 巴斯克語(yǔ) | 
| be | 白俄羅斯語(yǔ) | 
| bs | 波斯尼亞文(拉丁文) | 
| bg | 保加利亞文 | 
| ca | 加泰羅尼亞文(加泰隆語(yǔ)) | 
| ceb | 宿務(wù)語(yǔ) | 
| ny | 齊切瓦語(yǔ) | 
| zh-CHS | 中文 | 
| zh-CHT | 中文(繁體) | 
| co | 科西嘉語(yǔ) | 
| hr | 克羅地亞文 | 
| cs | 捷克文 | 
| da | 丹麥文 | 
| nl | 荷蘭文 | 
| en | 英文 | 
| eo | 世界語(yǔ) | 
| et | 愛(ài)沙尼亞文 | 
| fi | 芬蘭文 | 
| fr | 法文 | 
| gd | 蘇格蘭蓋爾語(yǔ) | 
| gl | 加利西亞語(yǔ) | 
| de | 德文 | 
| ht | 海地文 | 
| ha | 豪薩語(yǔ) | 
| haw | 夏威夷語(yǔ) | 
| hi | 印地文 | 
| hu | 匈牙利文 | 
| is | 冰島語(yǔ) | 
| ig | 伊博語(yǔ) | 
| id | 印度尼西亞文 | 
| ga | 愛(ài)爾蘭語(yǔ) | 
| it | 意大利文 | 
| ja | 日文 | 
| jw | 印尼爪哇語(yǔ) | 
| ko | 韓文 | 
| ku | 庫(kù)爾德語(yǔ) | 
| la | 拉丁語(yǔ) | 
| lv | 拉脫維亞文 | 
| lt | 立陶宛文 | 
| lb | 盧森堡語(yǔ) | 
| mk | 馬其頓語(yǔ) | 
| mg | 馬爾加什語(yǔ) | 
| ms | 馬來(lái)文 | 
| mt | 馬耳他文 | 
| mi | 毛利語(yǔ) | 
| mr | 馬拉地語(yǔ) | 
| mn | 蒙古語(yǔ) | 
| ne | 尼泊爾語(yǔ) | 
| no | 挪威文 | 
| pl | 波蘭文 | 
| pt | 葡萄牙文 | 
| ro | 羅馬尼亞文 | 
| ru | 俄文 | 
| sm | 薩摩亞語(yǔ) | 
| sr-Latn | 塞爾維亞文(拉丁文) | 
| sn | 修納語(yǔ) | 
| sk | 斯洛伐克文 | 
| sl | 斯洛文尼亞文 | 
| so | 索馬里語(yǔ) | 
| st | 塞索托語(yǔ) | 
| es | 西班牙文 | 
| su | 印尼巽他語(yǔ) | 
| sw | 斯瓦希里文 | 
| sv | 瑞典文 | 
| tl | 菲律賓語(yǔ) | 
| tg | 塔吉克語(yǔ) | 
| tr | 土耳其文 | 
| uk | 烏克蘭文 | 
| uz | 烏茲別克語(yǔ) | 
| vi | 越南文 | 
| cy | 威爾士文 | 
| fy | 弗里斯蘭語(yǔ) | 
| yo | 約魯巴語(yǔ) | 
| zu | 南非祖魯語(yǔ) | 
| hmn | 苗族語(yǔ) | 
| xh | 班圖 | 
| af | 南非荷蘭 | 
| auto | 自動(dòng)識(shí)別 | 
auto支持所有語(yǔ)種的自動(dòng)識(shí)別
錯(cuò)誤代碼列表
| 錯(cuò)誤碼 | 含義 | 
| 101 | 缺少必填的參數(shù) | 
| 102 | 不支持的語(yǔ)言類(lèi)型 | 
| 103 | 翻譯文本過(guò)長(zhǎng) | 
| 104 | 不支持的API類(lèi)型 | 
| 105 | 不支持的簽名類(lèi)型 | 
| 106 | 不支持的響應(yīng)類(lèi)型 | 
| 107 | 不支持的傳輸加密類(lèi)型 | 
| 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 | 開(kāi)發(fā)者賬號(hào)無(wú)效 | 
| 113 | q不能為空 | 
| 114 | 不支持的圖片傳輸方式 | 
| 201 | 解密失敗,可能為DES,BASE64,URLDecode的錯(cuò)誤 | 
| 202 | 簽名檢驗(yàn)失敗 | 
| 203 | 訪問(wèn)IP地址不在可訪問(wèn)IP列表 | 
| 205 | 請(qǐng)求的接口與應(yīng)用的平臺(tái)類(lèi)型不一致,如有疑問(wèn)請(qǐng)參考入門(mén)指南 | 
| 206 | 因?yàn)闀r(shí)間戳無(wú)效導(dǎo)致簽名校驗(yàn)失敗 | 
| 207 | 重放請(qǐng)求 | 
| 301 | 辭典查詢(xún)失敗 | 
| 302 | 翻譯查詢(xún)失敗 | 
| 303 | 服務(wù)端的其它異常 | 
| 304 | 會(huì)話(huà)閑置太久超時(shí) | 
| 401 | 賬戶(hù)已經(jīng)欠費(fèi)停 | 
| 402 | offlinesdk不可用 | 
| 411 | 訪問(wèn)頻率受限,請(qǐng)稍后訪問(wèn) | 
| 412 | 長(zhǎng)請(qǐng)求過(guò)于頻繁,請(qǐng)稍后訪問(wèn) | 
| 1001 | 無(wú)效的OCR類(lèi)型 | 
| 1002 | 不支持的OCR image類(lèi)型 | 
| 1003 | 不支持的OCR Language類(lèi)型 | 
| 1004 | 識(shí)別圖片過(guò)大 | 
| 1201 | 圖片base64解密失敗 | 
| 1301 | OCR段落識(shí)別失敗 | 
| 1411 | 訪問(wèn)頻率受限 | 
| 1412 | 超過(guò)最大識(shí)別字節(jié)數(shù) | 
| 2003 | 不支持的語(yǔ)音聲道 | 
| 2004 | 不支持的語(yǔ)音上傳類(lèi)型 | 
| 2005 | 不支持的語(yǔ)言類(lèi)型 | 
| 2006 | 不支持的識(shí)別類(lèi)型 | 
| 2201 | 識(shí)別音頻文件過(guò)大 | 
| 2301 | 識(shí)別音頻時(shí)長(zhǎng)過(guò)長(zhǎng) | 
| 2411 | 不支持的音頻文件類(lèi)型 | 
| 2412 | 不支持的發(fā)音類(lèi)型 | 
| 3001 | 不支持的語(yǔ)音格式 | 
| 3002 | 不支持的語(yǔ)音采樣率 | 
| 3003 | 不支持的語(yǔ)音聲道 | 
| 3004 | 不支持的語(yǔ)音上傳類(lèi)型 | 
| 3005 | 不支持的語(yǔ)言類(lèi)型 | 
| 3006 | 不支持的識(shí)別類(lèi)型 | 
| 3007 | 識(shí)別音頻文件過(guò)大 | 
| 3008 | 識(shí)別音頻時(shí)長(zhǎng)過(guò)長(zhǎng) | 
| 3009 | 不支持的音頻文件類(lèi)型 | 
| 3010 | 不支持的發(fā)音類(lèi)型 | 
| 3201 | 解密失敗 | 
| 3301 | 語(yǔ)音識(shí)別失敗 | 
| 3302 | 語(yǔ)音翻譯失敗 | 
| 3303 | 服務(wù)的異常 | 
| 3411 | 訪問(wèn)頻率受限,請(qǐng)稍后訪問(wèn) | 
| 3412 | 超過(guò)最大請(qǐng)求字符數(shù) | 
| 4001 | 不支持的語(yǔ)音識(shí)別格式 | 
| 4002 | 不支持的語(yǔ)音識(shí)別采樣率 | 
| 4003 | 不支持的語(yǔ)音識(shí)別聲道 | 
| 4004 | 不支持的語(yǔ)音上傳類(lèi)型 | 
| 4005 | 不支持的語(yǔ)言類(lèi)型 | 
| 4006 | 識(shí)別音頻文件過(guò)大 | 
| 4007 | 識(shí)別音頻時(shí)長(zhǎng)過(guò)長(zhǎng) | 
| 4201 | 解密失敗 | 
| 4301 | 語(yǔ)音識(shí)別失敗 | 
| 4303 | 服務(wù)的異常 | 
| 4411 | 訪問(wèn)頻率受限,請(qǐng)稍后訪問(wèn) | 
| 4412 | 超過(guò)最大請(qǐng)求時(shí)長(zhǎng) | 
| 5001 | 無(wú)效的OCR類(lèi)型 | 
| 5002 | 不支持的OCR image類(lèi)型 | 
| 5003 | 不支持的語(yǔ)言類(lèi)型 | 
| 5004 | 識(shí)別圖片過(guò)大 | 
| 5005 | 不支持的圖片類(lèi)型 | 
| 5006 | 文件為空 | 
| 5201 | 解密錯(cuò)誤,圖片base64解密失敗 | 
| 5301 | OCR段落識(shí)別失敗 | 
| 5411 | 訪問(wèn)頻率受限 | 
| 5412 | 超過(guò)最大識(shí)別流量 | 
| 9001 | 不支持的語(yǔ)音格式 | 
| 9002 | 不支持的語(yǔ)音采樣率 | 
| 9003 | 不支持的語(yǔ)音聲道 | 
| 9004 | 不支持的語(yǔ)音上傳類(lèi)型 | 
| 9005 | 不支持的語(yǔ)音識(shí)別 Language類(lèi)型 | 
| 9301 | ASR識(shí)別失敗 | 
| 9303 | 服務(wù)器內(nèi)部錯(cuò)誤 | 
| 9411 | 訪問(wèn)頻率受限(超過(guò)最大調(diào)用次數(shù)) | 
| 9412 | 超過(guò)最大處理語(yǔ)音長(zhǎng)度 | 
| 10001 | 無(wú)效的OCR類(lèi)型 | 
| 10002 | 不支持的OCR image類(lèi)型 | 
| 10004 | 識(shí)別圖片過(guò)大 | 
| 10201 | 圖片base64解密失敗 | 
| 10301 | OCR段落識(shí)別失敗 | 
| 10411 | 訪問(wèn)頻率受限 | 
| 10412 | 超過(guò)最大識(shí)別流量 | 
| 11001 | 不支持的語(yǔ)音識(shí)別格式 | 
| 11002 | 不支持的語(yǔ)音識(shí)別采樣率 | 
| 11003 | 不支持的語(yǔ)音識(shí)別聲道 | 
| 11004 | 不支持的語(yǔ)音上傳類(lèi)型 | 
| 11005 | 不支持的語(yǔ)言類(lèi)型 | 
| 11006 | 識(shí)別音頻文件過(guò)大 | 
| 11007 | 識(shí)別音頻時(shí)長(zhǎng)過(guò)長(zhǎng),最大支持30s | 
| 11201 | 解密失敗 | 
| 11301 | 語(yǔ)音識(shí)別失敗 | 
| 11303 | 服務(wù)的異常 | 
| 11411 | 訪問(wèn)頻率受限,請(qǐng)稍后訪問(wèn) | 
| 11412 | 超過(guò)最大請(qǐng)求時(shí)長(zhǎng) | 
| 12001 | 圖片尺寸過(guò)大 | 
| 12002 | 圖片base64解密失敗 | 
| 12003 | 引擎服務(wù)器返回錯(cuò)誤 | 
| 12004 | 圖片為空 | 
| 12005 | 不支持的識(shí)別圖片類(lèi)型 | 
| 12006 | 圖片無(wú)匹配結(jié)果 | 
| 13001 | 不支持的角度類(lèi)型 | 
| 13002 | 不支持的文件類(lèi)型 | 
| 13003 | 表格識(shí)別圖片過(guò)大 | 
| 13004 | 文件為空 | 
| 13301 | 表格識(shí)別失敗 | 
| 15001 | 需要圖片 | 
| 15002 | 圖片過(guò)大(1M) | 
| 15003 | 服務(wù)調(diào)用失敗 | 
| 17001 | 需要圖片 | 
| 17002 | 圖片過(guò)大(1M) | 
| 17003 | 識(shí)別類(lèi)型未找到 | 
| 17004 | 不支持的識(shí)別類(lèi)型 | 
| 17005 | 服務(wù)調(diào)用失敗 | 
| -1000 | 未知錯(cuò)誤 | 
| -2000 | 查詢(xún)輸入為空 | 
常見(jiàn)問(wèn)題及注意事項(xiàng)
1.運(yùn)行程序崩潰?
  檢查下是否對(duì)應(yīng)的 SDK靜態(tài)庫(kù)包 是否放到當(dāng)前工程目錄下。
2.OCR識(shí)別沒(méi)結(jié)果?
  檢查下OCR識(shí)別接口回調(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)用密鑰等信息。
版本更新記錄
| 上線(xiàn)日期 | 版本號(hào) | 更新內(nèi)容 | 
| 2017.07.11 | v1.2.0 | 有道智云 OCR iOS SDK上線(xiàn),支持中英文在線(xiàn)文字識(shí)別 | 
| 2017.07.24 | v1.3.0 | 修復(fù)已知 bug | 
| 2017.08.16 | v1.4.0 | 修復(fù)已知 bug | 
| 2018.11.07 | v1.5.0 | 增加按行識(shí)別10012 |