前言:
关于OCR,也没有什么可说的、纵观国内,做的好的扫描SDK基本都是收费的,比如名片扫描王只对企业开发,个人开发者想做也是难啊,吐槽下国内公司环境只认可企业,对个人开发者可谓非常苛刻,不说了,因为项目中用到扫描图片识别文字的功能,查询最后选择百度接口,可惜也是收费的,无奈啊,先就这样吧,另外附百度接口地址:百度OCR文字识别企业版 ;
目标:
项目是iOS 版本,开发语言是Objective-C,不过看到官方给出的代码示例,这里也就不吐槽了,笔者总结官方的 2 和 3这两种模式:
2. 上传图片原文件;
3. 图片URl类型;
附图:
代码示例:
1. 上传图片
- (void)baiduOCR_ImageType_2 {
NSString *apikey = @"7467580227e0XXXXXX"; //apikey 替换你自己的
NSString *urlStr = @"http://apis.baidu.com/idl_baidu/baiduocrpay/idlocrpaid";
NSDictionary *parameters = @{@"fromdevice": @"iOS", @"clientip": @"10.10.10.0",
@"detecttype":@"LocateRecognize",@"imagetype":@"2"};
NSData *imageData = UIImagePNGRepresentation(_postImage);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"POST" URLString:urlStr parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"image" fileName:@"www.codertopic.com.png" mimeType:@"image/png"];
} error: nil];
[request setValue:apikey forHTTPHeaderField:@"apikey"];
AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure %@", error.description);
[SVProgressHUD dismissWithError:error.description];
}];
[operation start];
}
2. 图片URl
</pre><p><pre name="code" class="objc">-(void)baiduOCR_ImageType_3{
NSString *apikey = @"7467580227e0ea1f3de17a437543038d"; //apikey 替换你自己的
NSString *urlStr = @"http://apis.baidu.com/idl_baidu/baiduocrpay/idlocrpaid";
NSDictionary *parameters = @{@"fromdevice": @"iOS", @"clientip": @"10.10.10.0",
@"detecttype":@"LocateRecognize",@"imagetype":@"3",
@"image":@"http://www.codertopic.com/wp-content/uploads/2016/01/ad-codertopic.png"};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"POST" URLString:urlStr parameters:parameters constructingBodyWithBlock:nil error:nil];
[request setValue:apikey forHTTPHeaderField:@"apikey"];
AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure %@", error.description);
}];
[operation start];
}
另若有朋友需要swift版本的话,可留言告知,有时间给大家补上。
关注码农话题:http://www.codertopic.com/
附效果图: