KevinGong2013 / ChineseIDCardOCR

[Deprecated] 🇨🇳中国二代身份证光学识别
https://github.com/evilgix/evil
Apache License 2.0
1.03k stars 186 forks source link

请问如何在oc的项目中使用这个框架 #4

Closed YogaChen closed 8 years ago

YogaChen commented 8 years ago

请问如何在oc的项目中使用这个框架,能使用CocoaPods导入吗,还是手动导入好一点?

KevinGong2013 commented 8 years ago

目前这个框架没有做对OC的适配,所以不能使用。

另外,这个项目目前还在非常早期的时候,不推荐在商业项目中使用。

wlinshicong commented 8 years ago

有没有oc能用的身份证识别的demo可以推荐一个吗

KevinGong2013 commented 8 years ago

如果是商用的话推荐阿里的云服务,学习的话现在没有比较好的OC资源,基本都是C++。 OCR 识别tesseract 和 深度学习 tensorflow

wlinshicong commented 8 years ago

你这个为什么不考虑做oc版本的,还有你的跟tesseract的有什么区别,你是不是用了他的识别库,我是新手,目前只知道,识别的流程就是通过摄像头的视频流获取图片,对图片进行预处理,提取特征匹配识别字符(这里应该就是用到了字库吧),输出字符,难点应该是预处理(包括去躁,二值化),识别库是不是包含了对处理后的图片进行字符切割,提取特征,匹配字符(也就是只负责将图片识别为字符,而不做其他的),大神求解答。如果要提高识别率,需要从哪方面着手,感觉除了按照这一套流程走下来就好了,但是识别库跟图像处理都不会,只能用开源的第三方

KevinGong2013 commented 8 years ago

我不是什么大神啦, 也是最近在学习,而且打算替换现在使用的FFNN。

我先简单介绍一下现在这个库是怎么运作的:

  1. 获取图片, 对图片进行一些列的处理 (这个你在代码里可以看到)
  2. 根据 Connected-component labeling理论切割字符,将图片里的数字分割为小的块
  3. 使用FFNN(前馈神经网络)识别每一个小块的图片

关于提高识别率

  1. 图片预处理的质量决定了分割的小块是否足够精准,越精准识别率越高
  2. 对FFNN网络的训练参数调整,使用多样化的训练样本

由于FFNN网络对识别象形文字(中文 日文类似的)不是很适合,所以我打算最近把这个库的识别网络替换为CNN。 至于OC版本,是因为目前这个库还没有达到商用的标准,还在很早期,一旦可以识别效率上去了我会立马做OC版本和Java版本的适配

wlinshicong commented 8 years ago

为什么不直接用tesseract识别库,它有什么缺点吗,也支持中文吧

KevinGong2013 commented 8 years ago

另外像这种识别不是直接返回小图片里面的数字是几,而是返回这个图片是某个数字的概率。 比如 分割出来一个小图片是8,那么最后返回的就是 [0,0,0.02,0.08,0.0,0.0,0.0,0.0,0.0,0.8,0.1]

KevinGong2013 commented 8 years ago

@wlinshicong 我做这个库的初衷就是想用纯swift通过FFNN来做OCR识别。重点部分是对神经网络的训练和识别过程。 直接调用tesseract我觉得没必要特意写一个库出来。

wlinshicong commented 8 years ago

我是准备在项目里嵌入身份证扫描,获取身份证的信息,商业的太贵了,竟然要价5w,只能自己找开源的,githud上倒是有一个身份证扫描的,竟然用了静态库,没开源,用起来也还行吧,就是识别有的时候会有几个错别字,识别的速度也有点慢,我也是从那个仓库的问答跳到这边来的,你知道他那个用的是不是tesseract的

KevinGong2013 commented 8 years ago

@wlinshicong 加个star关注吧。

项目里直接用阿里的云服务吧,也不贵。 如果觉得开发UI太麻烦,可以参考库里面的ScannerViewController的实现。

wlinshicong commented 8 years ago

加了啊,能加个qq吗

KevinGong2013 commented 8 years ago

sure, 562551324.