KevinGong2013 / ChineseIDCardOCR

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

中文字符分割算法 #2

Closed KevinGong2013 closed 8 years ago

KevinGong2013 commented 8 years ago

找了许多资料没有看到比较实用的中文字符分割算法,大家谁有好的建议?

any35 commented 8 years ago

每个身份证的字体大小间距都是固定的, 所以中文切分简单用直方图就可以了, 水平直方图可以切出行. 垂直直方图可以切出每个字. 对于左右结构的字可以用合并法进行修正: 具体做法是先尽可能的切分, 然后把每个结果进行判断, 如果前后都不是数字, 则试着前后合并, 只要前后两个字占的位置宽度小于一个正常字的宽度那就合并, 否则不合并. 是不是很简单呢? 至于是否为数字, 用分类器训练一下就很可以了. 不过这样只是解决了分割问题, 没解决识别的问题, 话说 FNN系列根本就不适合用来识别中文.

KevinGong2013 commented 8 years ago

嗯, 的确看到作者又说尝试过象形文字文字的识别,正确率70%左右,而且他只训练了100 个左右。

先尝试一下,如果不是很可靠的话就优化优化搞成识别号码的好了😄

KevinGong2013 commented 8 years ago

@any35 如果你能实现一下这个文字分割算法再好不过啦 。。。

any35 commented 8 years ago

汉字有很多形近字, 可以用haar试下, *NN对形近字识率比较低, 而且字越多效果越不理想. 汉字识别还是交给tesseract来处理吧, 不过这个语言库很大(汉字这么多咱也没办法), 还是放Server端来处理比较好. APP端需要做下图像预处理, 如果要做识别只能做一些像性别,民族,出生日期这种少量分类的信息. 我看了你的代码, 图像没做预处理, 记得识别前先把图片预处理好再做特征提取.先把图片预处理好再做特征提取. 先把图片预处理好再做特征提取, 重要的事情说三遍.

各种光照(逆光,闪光,色差等), 位置,姿态, 距离, 摄像头镜头等都有很大的影响. 所以任何一个图像算法的项目对样本都有大量的需求, 这些样本主要是用来参数调优和训练用的. 样本来源有:

  1. 自己采集. 写个demo收集. 网络上收集等.
  2. 花钱买
  3. 先用第三方的服务, 这样不但有原始数据,还能收集到识别结果. 建议这种方式先上线, 收集完再再自己做.

样本收集也是项目最耗时最多的地方了, 其次是参数调优,训练.

算法opencv上都有, 组合一下就可以了:)

520xiaopohai commented 8 years ago

第三方的服务 有哪些现有的SDK 推荐呢。

KevinGong2013 commented 8 years ago

有SDK的基本都要收费,而且还不便宜。如果你不是很着急的话,建议关注这个项目。