BaiduOCR實現(xiàn)身份證,銀行卡雄可,機動車牌凿傅,圖像審核等識別

提起AI,想必大家感覺就是神秘莫測数苫,結(jié)合現(xiàn)實聪舒。今天看了一下BaiduOCR的技術支持,大概實現(xiàn)了身份證虐急,銀行卡箱残,機動車牌,圖片審核止吁,這幾個案例的識別被辑。不得不說百度對圖像的處理還是很強大的。根據(jù)開源出來的接口實現(xiàn)對以上功能的開發(fā)還是不錯的敬惦。

廢話不多說盼理,既然那么神秘,我們也可以試著自己做一個識別Demo俄删,案例會在最下方提供
1.點擊鏈接BaiduAI

進入控制臺登陸自己的百度云賬號


2.登陸成功會進入自己的控制臺宏怔,默認開通的服務如下

我們以文字識別為例,點擊文字識別畴椰,


可以看到可用服務列表臊诊,并不是絕對免費的。但是程序員拿來裝X應該沒問題

3.創(chuàng)建應用

圖中信息很明確斜脂,根據(jù)自己需要勾選相應的功能抓艳,當然部分功能是收費的,具體收費標準點這里

因為程序語言為Object-C 運用于ios上秽褒,所以這里我直接勾選如上圖壶硅,(這里需要注意一點威兜,包名綁定這里销斟,必須要綁定自己創(chuàng)建的工程Bundle Identifier。要不等你一切做好之后發(fā)現(xiàn)會提示不匹配工程)確認無誤后點擊立即創(chuàng)建


創(chuàng)建成功椒舵,點擊應用詳情蚂踊,進入自己創(chuàng)建的應用查看詳情


拿到了自己的APPID,APIKey笔宿,SecretKey犁钟,記得保存一份棱诱,等下項目中要想實現(xiàn)以上功能必須通過這幾個東西生成BaiduOCR的Token用,才可以涝动。下邊的API列表很詳細的告訴我們當前這個項目接入的Api同時收費情況一目了然迈勋。很清晰。

4.接入服務

到了這一步醋粟,相信你已經(jīng)成為一名合格的百度OCR的開發(fā)者了靡菇。下邊開始把OCR服務接入我們工程
1.獲取百度OCR Access Token
根據(jù)官方文檔獲取Access Token并保存到本地(注意token有效期為30天,過期需要重新獲取接口保存token)

static NSString * const BaiduAppID           = @"9991413";
static NSString * const BaiduApiKey          = @"E2jIt1TZqt1EVYGVdH3L1Tb3";
static NSString * const BaiduSecretKey       = @"kIf9V9BktenQCFG8EpmlWChvlTz6GKbl";
static NSString * const BaiduAccess_tokenUrl = @"https://aip.baidubce.com/oauth/2.0/token";
#pragma mark - 獲取百度AIAccess Token米愿。有效期為30天
- (void)getBaiduAIAccessToken{
    /*
     請求URL數(shù)據(jù)格式
     
     向授權(quán)服務地址https://aip.baidubce.com/oauth/2.0/token發(fā)送請求(推薦使用POST)厦凤,并在URL中帶上以下參數(shù):
     
     grant_type: 必須參數(shù),固定為client_credentials育苟;
     client_id: 必須參數(shù)较鼓,應用的API Key;
     client_secret: 必須參數(shù)违柏,應用的Secret Key博烂;
     
     https://aip.baidubce.com/oauth/2.0/token?
     grant_type=client_credentials&
     client_id=Va5yQRHlA4Fq4eR3LT0vuXV4&
     client_secret= 0rDSjzQ20XUj5itV7WRtznPQSzr5pVw2&
     
     
     */
    //    [[AipOcrService shardService] authWithAK:@"sLdWP9rGQ7iu63Pi4hvUP3qw" andSK:@"WF2fWKb8lQ2bfGB5MAAsixIGXCUzWipX"];
    
    
    
    NSMutableDictionary * dictionary = [[NSMutableDictionary alloc]init];
    [dictionary setObject:@"client_credentials" forKey:@"grant_type"];
    [dictionary setObject:BaiduApiKey forKey:@"client_id"];
    [dictionary setObject:BaiduSecretKey forKey:@"client_secret"];
    
    
    [NetWorkTool postNetWorkWithURL:BaiduAccess_tokenUrl paramaters:dictionary success:^(id object) {
        NSLog(@"%@",object);
        NSString * access_token = [object objectForKey:@"access_token"];
        NSString * expiresHaveTime = [NSString stringWithFormat:@"%@",[object objectForKey:@"expires_in"]];
        [[NSUserDefaults standardUserDefaults] setObject:access_token forKey:AccessTokenKey];
        [[NSUserDefaults standardUserDefaults] setObject:expiresHaveTime forKey:TokenValidity];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSInteger validityTime = [expiresHaveTime integerValue];
        if (validityTime <=0 || !validityTime) {
            UIAlertController * alertC = [UIAlertController alertControllerWithTitle:@"Warring" message:@"您使用的百度AI識別功能Access_Token已失效,請重新獲取" preferredStyle:UIAlertControllerStyleActionSheet];
            UIAlertAction * confirmAction = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                [self.window.rootViewController dismissViewControllerAnimated:YES completion:^{
                    
                    
                }];
                
            }];
            
            [alertC addAction:confirmAction];
            [self.window.rootViewController presentViewController:alertC animated:YES completion:nil];
            
            
        }
        
    } failure:^(id failure) {
        
        NSLog(@"%@",failure);
    }];
}

這里請求數(shù)據(jù)用到了自己對AFNetworking的簡單封裝漱竖,有興趣可以到文章最后Demo地址進行查看

獲取Access Token 成功的話脖母,我們可以根據(jù)AI開放平臺中的文字識別API技術文檔來搞事情了。

以身份證識別為例

從官方給出的API文檔可以看出闲孤,通過POST方法向BaiduAI服務器發(fā)起請求谆级,重點是鏈接中必須攜帶剛才獲取的Access Token,由此可以看出我們在百度AI平臺創(chuàng)建應用的重要性了讼积。肥照。。

頭部需攜帶一下參數(shù)
Content-Type    application/x-www-form-urlencoded
重要的是Body中帶的參數(shù)勤众,

可以看出 image是必須攜帶的舆绎,并且要求還很多

圖像數(shù)據(jù),base64編碼们颜,要求base64編碼后大小不超過4M吕朵,最短邊至少15px,最長邊最大4096px,支持jpg/png/bmp格式

要求一大串窥突,不過沒辦法努溃。想要獲取到數(shù)據(jù),還是要老老實實跟著文檔走阻问。這個提出一個坑梧税。卡了三天沒找到原因(其實我也沒那么笨啊)

base64編碼,對于這個東西第队,真沒細心理解過哮塞。百度給出以下定義
    /*
     NSDataBase64Encoding64CharacterLineLength其作用是將生成的Base64字符串按照64個字符長度進行等分換行
     NSDataBase64Encoding76CharacterLineLength其作用是將生成的Base64字符串按照76個字符長度進行等分換行
     NSDataBase64EncodingEndLineWithCarriageReturn其作用是將生成的Base64字符串以回車結(jié)束
     NSDataBase64EncodingEndLineWithLineFeed其作用是將生成的Base64字符串以換行結(jié)束。
     */
親測只有使用了NSDataBase64EncodingEndLineWithCarriageReturn這個枚舉的時候凳谦,圖片識別才不會報圖片格式錯誤忆畅。具體原因不詳。有知道的麻煩不辭辛苦告知下
請求代碼示例
身份證識別
curl -i -k 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=24.f2c915b857ee62189abb7f92df0e8453.2592000.1499493935.282335-9395294' --data 'id_card_side=front&image=【圖片Base64編碼尸执,需UrlEncode】' -H 'Content-Type:application/x-www-form-urlencoded'

到這里邻眷,其實基本功能已經(jīng)實現(xiàn)。我們正常的通過拍照剔交,或者相冊中獲取過來的圖片肆饶,就可以識別出來了。

如果還想看更多的比如銀行卡岖常,車牌號驯镊,圖文識別等的實現(xiàn),請移步到我的GitHub地址
本文為個人原創(chuàng)竭鞍,未經(jīng)本人允許板惑,禁止轉(zhuǎn)載。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末偎快,一起剝皮案震驚了整個濱河市冯乘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晒夹,老刑警劉巖裆馒,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丐怯,居然都是意外死亡喷好,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門读跷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梗搅,“玉大人,你說我怎么就攤上這事效览∥耷校” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵丐枉,是天一觀的道長哆键。 經(jīng)常有香客問我,道長矛洞,這世上最難降的妖魔是什么洼哎? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮沼本,結(jié)果婚禮上噩峦,老公的妹妹穿的比我還像新娘。我一直安慰自己抽兆,他們只是感情好识补,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辫红,像睡著了一般凭涂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贴妻,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天切油,我揣著相機與錄音,去河邊找鬼名惩。 笑死澎胡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的娩鹉。 我是一名探鬼主播攻谁,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弯予!你這毒婦竟也來了戚宦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锈嫩,失蹤者是張志新(化名)和其女友劉穎受楼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呼寸,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡那槽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了等舔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骚灸。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖慌植,靈堂內(nèi)的尸體忽然破棺而出甚牲,到底是詐尸還是另有隱情,我是刑警寧澤蝶柿,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布丈钙,位于F島的核電站,受9級特大地震影響交汤,放射性物質(zhì)發(fā)生泄漏雏赦。R本人自食惡果不足惜劫笙,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望星岗。 院中可真熱鬧填大,春花似錦、人聲如沸俏橘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寥掐。三九已至靴寂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間召耘,已是汗流浹背百炬。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留污它,地道東北人收壕。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像轨蛤,于是被迫代替她去往敵國和親蜜宪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評論 25 707
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫祥山、插件圃验、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • 這事還得從昨天說起,昨天下午缝呕,S先生要我?guī)退麥蕚湟粋€可移動帶出的投影儀澳窑,今天下午要帶出去項目展示使用,于是我想起公...
    布拉德不是皮特閱讀 250評論 2 1
  • 整個夏天 天空在燃燒 我瘋狂堆積繁葉 土地在燃燒 我肆意伸展粗枝 我也在燃燒 投一地濃重黑影 勢均力敵呵 我驕傲于...
    暗夜輕煙閱讀 736評論 1 48
  • 世上的道路千萬條供常,為什么非走這條摊聋? 1 一只狼捧著蘿卜在啃。 同伴看到了很詫異栈暇,問他: 你怎么吃起了蘿卜麻裁? 狼回答...
    異見說閱讀 352評論 0 0