1. iOS 自己实现 名片识别 一 功能分析,模块划分
2. iOS 自己实现 名片识别 二 相机模块制作
3. iOS 自己实现 名片识别 三 图片处理
4. iOS 自己实现 名片识别 四 图片转文字以及归类
本页主题: 图片转文字以及归类
先看效果展示
原图:
处理后:
OCR识别效果:
1 | 量 U |
归类后的效果:
1 | 组织 : 量 U |
效果还行,但达不到商用的目标
实现过程
1. 接入OCR模块
这一过程比较复杂,网上也都能查到
2. 图片转文字
1 | - (void)tesseractRecognizeImage:(UIImage *)image compleate:(void (^)(NSString *text))compleate |
3. 文字归类
这一块也比较复杂,我制作了中文的归类
去除没用的字符
NSArray *array = @[@”:”,@”-“,@”"“,@”~”,@”/“,@”」”,@”;”,@”ˉ”,@”`”,@”‘“,@”¢”,@”±”,@”‘“,@”_”];
将字符串按行转换为数组
进行关键字筛选 : 电话,邮箱,qq,web, 地址
把每一行都进行筛选, 筛选成功后删除该行
检查姓名与职位 (需要用到两张表, 我这里使用了两个txt文件代替表)
检测job ,如果job有多余,多余的部分可能为姓名,如果多余的部分不是姓名 则为job的一部分
如果第一行还没有被使用,那么假设第一个标记是组织名称。
如果地址还没有,检查地址
//检查地址的关键字,有两个或者两个以上关键字则标记为地址
@[@”省”,@”市”,@”区”,@”路”,@”大厦”,@”号”,@”城”,@”室”,@”街”];根据正则重新过滤一遍 web,phone,email,qq
列一下正则1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/** 邮箱 */
- (NSString *)emailRegex
{
return @"\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
}
/** 手机 */
- (NSString *)phoneNumRegex
{
return @"0?(13|14|15|17|18|19)[0-9]{9}"; //国内手机号
}
/** 电话 */
- (NSString *)telRegex
{
return @"[0-9-()()]{7,18}";
}
/** web */
- (NSString *)webRegex
{
return @"^((https|http|ftp|rtsp|mms)?:\\/\\/)[^\\s]+";
}
/** qq */
- (NSString *)qqRegex
{
return @"[1-9]([0-9]{5,11})";
}剩余的则标记为other
THE END !
由于ocr模块比较大,需要代码的小伙伴可以留下联系方式,或者直接与我联系:QQ 258141764
发现需要代码的人还是挺多的,为了方便传到了百度网盘
链接:https://pan.baidu.com/s/17LsXgbe3XuOiv9V4sVTVVQ 密码:dzk2
需要的请自行下载!
代码所在位置:
