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


    在App store中检索 “名片扫描


    今天要说的就是如何徒手打造一款商用的名片识别产品:名片扫描通 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号字以下的联通区,对这些联通区进行按行聚组计算,得到分行的结果,计算这些行的平均倾斜角度。然后再次聚组分行,就能得到很准确的结果,无需多次迭代。









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


  • 相关阅读:
    python中matplotlib所绘制的图包含了很多的对象
    pd.concat()命令
    Java设计模式——外观模式
    Java设计模式——桥接模式
    Java基础面试
    java web解决表单重复提交
    Servlet 工作原理解析
    Mysql日期函数
    解决多个下拉框动态级联初始化问题
    window.parent与window.opener、window.showModalDialog的区别 opener和showModalDialog刷新父页面的方法
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3122815.html
Copyright © 2020-2023  润新知