OCR(Optical Character Recognition,光学字符识别)问题

**应用场景:**在这个过程中由于场景的不确定性,比如:图片背景极其丰富、亮度不均衡、光照不均衡、残缺遮挡、文字扭曲、字体多样等等问题,会带来极大的挑战。

  1. 自然场景中文本具有多样性:文本检测受到文字颜色、大小、字体、形状、方向、语言、以及文本长度的影响;
  2. 复杂的背景和干扰;文本检测受到图像失真,模糊,低分辨率,阴影,亮度等因素的影响;
  3. 文本密集甚至重叠会影响文字的检测;
  4. 文字存在局部一致性,文本行的一小部分,也可视为是独立的文本;

技术路线:在这里插入图片描述

其中OCR识别的关键路径在于文字检测和文本识别部分
基于icdar2015数据集下进行的训练。
先使用xx进行文本检测,接着使用CRNN(卷积递归神经网络)即DCNN和RNN的组合,用于对文字进行识别
以下是CRNN的网络结构图:
在这里插入图片描述

文本检测常见算法

文本检测的任务是定位出输入图像中的文字区域。
通过对目标检测算法进行改进,如CTPN。但是文本检测与目标检测在目标信息以及任务本身上仍存在一些区别,如文本一般长宽比较大,往往呈“条状”,文本行之间可能比较密集,弯曲文本等,因此又衍生了很多专用于文本检测的算法,如EAST、DBNet等等。
目前流行的文本检测算法:

  1. 基于回归的文本检测算法:借鉴物体检测算法,通过设定anchor回归检测框,或者直接做像素回归,适用于规则形状的文本检测。如CTPN对水平文本的效果好,对倾斜、弯曲文本的效果差。因为他是基于回归的,所以框框都是规则的类型
    CTPN是基于目标检测的算法做了一些改进,使得框框的宽相同,高不同
  2. 基于分割的文本检测算法:适用于不规则形状的文本检测,如Pixellink、DB,虽然效果会好一点,但是可能会导致像素聚类,缺点就是后处理会比较复杂。
    文本检测算法概览
    基于CTPN的算法优化anchor

文本识别常见算法

文本识别的任务是识别出图像中的文字内容,一般输入来自于文本检测得到的文本框截取出的图像文字区域。
一般可以根据待识别文本形状分为规则文本识别不规则文本识别两类。

  1. 规则文本识别算法:根据解码方式的不同可以大致分为基于CTCSequence2Sequence两种,将网络学习到的序列特征 转化为 最终的识别结果 的处理方式不同。
    CNN模块提取
    RNN模块提取序列特征
    CTC进行解码,CTC的主要作用是引入了一个没有意义的空字符。因为时序特征是固定的,但是我们到底要识别出多少个字是不固定的。从固定的时序特征到固定的文本结果就是通过CTC来解决的。**缺点:**每一个时序特征是单独解码的,没有利用到上下文的信息。
    基于CTC的识别算法 VS 基于Attention的识别算法
  2. 不规则文本识别算法:STAR-Net等方法通过加入TPS等矫正模块,将不规则文本矫正为规则的矩形后再进行识别;

在检测之后:OCR结果+后处理是一种常用的结构化方案,如快递单、发票信息的内容抽取,但流程往往比较复杂,并且后处理需要精细设计,泛化性也比较差。
PP-OCR系统pipeline示意图
可以看到,除了输入输出以外,整个核心框架包含了三个模块,分别是:文本检测模块、检测框矫正模块、文本识别模块。

  • 文本检测模块:核心是一个基于XX检测算法训练的文本检测模型,检测出图像中的文字区域;
  • 检测框矫正模块:将检测到的文本框输入检测框矫正模块,在这一阶段,将四点表示的文本框矫正为矩形框,方便后续进行文本识别;另一方面会进行文本方向判断和校正,例如如果判断文本行是倒立的情况,则会进行转正,该功能通过训练一个文本方向分类器实现;
  • 文本识别模块:最后文本识别模块对矫正后的检测框进行文本识别,得到每个文本框内的文字内容,该过程使用了文本识别CRNN算法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP可以通过使用OCR库或API来实现光学字符识别OCR),来识别图片中的文字。以下是一种使用Tesseract OCR库的示例代码: ```php <?php // 使用Tesseract OCR库需要安装并配置Tesseract OCR引擎 // 可以通过以下命令安装:sudo apt-get install tesseract-ocr // 引入Tesseract OCR库 require_once 'vendor/autoload.php'; use thiagoalessio\TesseractOCR\TesseractOCR; // 图片路径 $imagePath = 'path/to/your/image.jpg'; // 创建一个TesseractOCR对象 $tesseract = new TesseractOCR($imagePath); // 可选:设置语言,默认为英语 $tesseract->setLanguage('eng'); // 可选:设置其他OCR参数,例如图片处理、识别模式等 $tesseract->setWhitelist(range('a', 'z')); // 只识别小写字母 // 运行OCR识别 $text = $tesseract->run(); // 输出识别结果 echo $text; ?> ``` 在上面的示例中,我们使用了第三方的Tesseract OCR库来进行OCR识别。首先,我们需要安装并配置Tesseract OCR引擎。然后,通过引入TesseractOCR类,创建一个TesseractOCR对象,并设置要识别的图片路径。可以使用`setLanguage`方法设置识别语言,默认为英语。还可以使用`setWhitelist`方法设置其他OCR参数,例如只识别小写字母。最后,通过调用`run`方法运行OCR识别,并将识别结果输出。 当然,还有其他的OCR库和API可供选择,如Google Cloud Vision API、Microsoft Azure Cognitive Services等,具体使用方法可以查阅它们的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值