OCR学习笔记

1 什么是OCR?

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

2 OCR的软件:

  1. ABBYY的Finereader
  2. tesseract

    Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。

    执行识别图像的命令格式为: 
    tesseract <imagename>   <outputbase> [-l lang] [configfile [[+|-]varfile]...] 
    其中tesseract是命令;<imagename>是待识别的图片,例如图片 eurotext.tif;<outputbasename>是输出文本文件的名称,默认生成的是你所给定的输出文件名称,加上.txt扩展名;[-l lang]可选的,指定识别图像中的语言。


  3. 百度OCR技术:
  4. 清华紫光OCR
    尚书七号
    Leadtools Ocr
    汉王
    赛酷OCR
    Expervision,Inc OCR
    丹青
  5. 微软的Azure

    微软的Azure也已经出来很多年了,重点是提供API!官网上有具体的调制配置参数。中国区是由世纪互联运营的。大家可以上官网(不是中国区的)上传图片体验一下微软的ocr识别。然后是语种,微软暂时只支持22种语言(如下)。看官网应该是免费提供API的。

    &amp;lt;img src=&quot;https://pic3.zhimg.com/50/v2-b887a892b9b86e9082d2f87306ffdc59_hd.jpg&quot; data-rawwidth=&quot;576&quot; data-rawheight=&quot;934&quot; class=&quot;origin_image zh-lightbox-thumb&quot; width=&quot;576&quot; data-original=&quot;https://pic3.zhimg.com/v2-b887a892b9b86e9082d2f87306ffdc59_r.jpg&quot;&amp;gt;
3  OCR的软件:算法

文字检测算法近几年发展迅速,可以分为水平文字检测(四个自由度,类似物体检测)和倾斜文字检测(文字框是不规则四边形,八个自由度),

水平文字检测个人认为比较好的算法是2016 ECCV乔宇老师团队的CTPN,

倾斜文字检测个人比较喜欢的方法是2017 CVPR的EAST和Seglink,感兴趣可以看论文继续了解。

文字识别近两年没有太大进展,有两种方法,一种是CNN+RNN+CTC,白翔老师团队的CRNN写的比较清楚,还有一种是CNN+RNN基于Attention的方法。

最近比较火的方向是文字检测和识别放到一个网络里joint train,沈春华老师团队2017 ICCV的Towards End-to-end Text Spotting with Convolutional Recurrent Neural Networks这篇文章已经在水平文字上把检测识别end to end做的比较work.


4 OCR基本知识:


General OCR一般包含两步: 1. detection-->找到包含文字的区域(proposal); 2. classification-->识别区域中的文字。

detection models, 近两年比较热门的object detection model:

faster-rcnn(arxiv.org/pdf/1506.0149) 和 yolo(pjreddie.com/media/file), 两个模型都是基于CNN给出proposed regions 同时对object region进行分类。 其中yolo比faster-rcnn的速度更快,但是在accuracy上有些损失。

classification models:

比较著名的是Ian goodfellow在13年提出的multi-digit number classification([1312.6082] Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks), 同样也是基于deep CNN. 该方法的不足在于要事先选定可预测的sequence的最大长度,较适用于门牌号码或者车牌号码(少量字符, 且每个字符之间可以看作是独立); 

另一类比较常用的方法是RNN/LSTM/GRU + CTC, 方法最早由Alex Graves在06年提出应用于语音识别。这个方法的好处在于可以产生任意长度的文字,并且模型的性质决定了它有能力学到文字于文字之间的联系(temporal relations/dependencies)。不足之处在于sequential natural决定了它的计算效率没有CNN高,并且还有潜在的gradients exploding/vanishing的问题。

以上说的这两类模型都不需要对文字预先分割(end-to-end)。

另一类不需要对文字预先分割的方法就是attention-mechanism,attention可以分为hard attention和soft attention. 其中hard attention能够直接给出hard location,通常是bounding box的位置 ( arxiv.org/pdf/1412.7755), 想法直观,缺点是不能直接暴力bp。soft attention通常是rnn/lstm/gru encoder-decoder model ( arxiv.org/abs/1603.0310), 可以暴力bp。还有一种比较特别的gradient-based attention( ics.uci.edu/~yyang8/res) 也挺有意思。


  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惹不起的程咬金

来都来了,不赏点银子么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值