徒手打造一款PK 名片全能王 的名片识别应用

在App store中检索 “名片扫描

徒手打造一款PK 名片全能王 的名片识别应用_第1张图片

今天要说的就是如何徒手打造一款商用的名片识别产品:名片扫描通 scanzen

脉可寻就不比了,那是一款有人工干预的产品,确实能做到100%准确,不过用户的名片隐私问题很让人担心。

  • 汉王的产品,做OCR产品的龙头。不过在移动互联网时低好象out了,产品难用,免费版本一周只能扫两张名片,太抠门了吧。
  • 名片扫描通,刚上线,完全免费,但扫描速度慢,当然如果你的手机是iphone5,也就显不出来慢了,一闪就扫完了。
  • 名片全能王,敢当王的肯定不白给,扫描没得说,但是价格不便宜78。钱多的话,就这个了。


跑题了,今天要写的是徒手打造一款商用的名片识别产品。徒手就是码农不停用手敲出来了的,先简要谈一下原理

您看到此文,一定是对OCR有一定了解了,因为OCR是很小的领域,做相关研究的公司机构很少。

简单的讲,名片识别应用BCR应当处理如下几个问题

  1. 名片切割
  2. 名片旋转校正
  3. 名片分行
  4. 字符识别
  5. OCR常见错误校正
  6. 字符分司校正
  7. Regular Expression提取名片信息


这些问题领域,前人已经研究的很深了,但要变成可商用的产品还是要付出点努力的。

先说名片分割:

最基本的方法有:连通区法和hough变换法,只要控制好参数,这两种方法就能切出大部分的名片

下图是一个通过联通区可以提取的名片:



但很少有名片能这么便捷地让你找到大的连通区,于是hough变换就必有可少了,找到四个焦点就ok了。

原理很简单,但切名片着实费了很大功夫,要达到100%能找到名片的效果,还需要更多的辅助手段。


名片旋转校正:

名片剪切后肯定会有有倾斜的,如果您google skew detect,会发现大量的论文来解决这个问题,足以说名,角度矫正的重要性。

OCR引擎对字符角度都极度信赖,如果你的字符旋转1度,那么,字符识别准确可能会降低10%,如果偏差2度,那OCR引擎无法工作。

将角度调整到0.1度范围内,实然就发现,识别的这么准!

那如何才能将行校正的这么准呢,方法有很多种,这里我介绍我使用的一种方法(没google到相同的处理方法)基于聚组成行skew detect方法。

名片剪切后,找出名片中所有的10号字以下的联通区,对这些联通区进行按行聚组计算,得到分行的结果,计算这些行的平均倾斜角度。然后再次聚组分行,就能得到很准确的结果,无需多次迭代。

徒手打造一款PK 名片全能王 的名片识别应用_第2张图片


OCR引擎可以使用开源的tesseract引擎,只是tesseract对大字符集的处理速度有很大问题,需要深入进行屏蔽一些处理才好用。


你可能感兴趣的:(ios,应用,ocr,Scanzen)