ocr开源情况

ocr目标检测模型

百度的paddlehub使用了文本检测模型,主要模型为east,骨干网络为resnet,精度如下:

模型 骨干网络 precision recall Hmean
EAST ResNet50_vd 85.80% 86.71% 86.25%
EAST MobileNetV3 79.42% 80.64% 80.03%
DB ResNet50_vd 86.41% 78.72% 82.38%
DB MobileNetV3 77.29% 73.08% 75.12%
SAST ResNet50_vd 91.39% 83.77% 87.42%
ocr目标识别模型

文本识别使用的是CRNN

模型 骨干网络 Avg Accuracy 模型存储命名
Rosetta Resnet34_vd 80.9% rec_r34_vd_none_none_ctc
Rosetta MobileNetV3 78.05% rec_mv3_none_none_ctc
CRNN Resnet34_vd 82.76% rec_r34_vd_none_bilstm_ctc
CRNN MobileNetV3 79.97% rec_mv3_none_bilstm_ctc
StarNet Resnet34_vd 84.44% rec_r34_vd_tps_bilstm_ctc
StarNet MobileNetV3 81.42% rec_mv3_tps_bilstm_ctc
RARE MobileNetV3 82.5% rec_mv3_tps_bilstm_att
RARE Resnet34_vd 83.6% rec_r34_vd_tps_bilstm_att
SRN Resnet50_vd_fpn 88.52% rec_r50fpn_vd_none_srn
paddle-gpu优化问题

关于paddle-GPU,今天倒腾了一天始终没有安装成功,paddle启用gpu的话总是失败,原因是因为cudnn我之前安装的版本是8.0,不兼容。

但是如果是在程序里就直接失败,除非装paddlecpu版本

,因此我决定重新安装cudnn,但是cudnn一直安装出错,原因是显卡兼容错误,可能和cuda版本不对应有关。

gpu参数错误,无法调用。

paddle-gpu安装失败

paddle的各类库都是分开的,我先选择了cpu进行测试查看各类库,目前邹九的程序没有调用gpu成功,因此非常慢

paddle自动化标注

paddle提供了自动标注加识别的可视化软件,目前表格检测的方式仍然不够好,目标检测模型普遍使用,目前来看检测效果优秀,基本都可以检测正确

使用paddle训练目标检测

使用mobilenet训练检测框

训练比较慢,可以之后收集表格的数据来自动标注微调获得表格的标注标签数据,主要还是paddle的cudnn必须完全对照所以现在没有用gpu用的cpu训练,重新配置需要花时间

其他开源项目

目前主要技术还是使用ctpn+crnn+ctc

ctpn被称为目标检测CTPN(Connectionist Text Proposal Network],文本检测与目标检测有区别,因为文本检测具有序列性质,因为文本是由多个字符构成,而不是一个完整的文本线,一般来说是通过文本的每个字符的上线文关系来做的。

通过将文本的选框宽度固定为16,每个字符的高度的位置进行预测,从而获得文本区域位置

这部分的论文原理极其复杂,我还没有认真的看

开源的项目都需要训练表格计算表格位置,并且对于文字识别也要重新计算,邹九做的项目获得数据写入的方式是通过opencv的draw line和draw_rect,还有自己写的draw_log来把文字画在原图上,这些步骤才导致了速度很慢。

如果不需要划线划画框,那么邹九的项目的代码其实通过官方文档几行就可以做完。因为这个代码大部分的任务是在预处理。获得数据如下:

因为邹九的代码写的过长且凌乱,我需要花至少一周整理理解他的代码逻辑,重新写一下代码。

开源的免费ocr的对于表格的识别结果都很差,比如这样的:

对于简单图的识别效果还可以,阿里云华为api只提供json接口返回文字数据,因此尝试也用处不大。

OCR技术难点

  • 文字弯曲(打印的字体有一些问题)
  • 背景干扰(降噪,属于图像恢复)
  • 字体多变(字体识别需求)
  • 拍摄模糊(高斯处理)

####### 文字检测算法有两种
目前的文字检测算法有两种,一种基于回归,一种基于分隔

  • CTPN
  • SEGLINK
  • Textboxes/Textboxes++
  • East
  • LOMO
  • SAST
  • CRAFT

优点:对规则文本检测效果较好

缺点:无法准确检测不规则形状文本

基于分隔的算法

  • Pixel embedding
  • SPCNet
  • PSENet
  • PAN
  • DB

优点: 对不同形状文本检测效果较好,但是无法检测不规则形状文本

缺点:后处理复杂耗时,重叠文本效果差