深度学习-文档检测方案整理

概述

这里梳理一下之前收集的几篇关于文档检测的文章,由于一些特殊的原因,最近可能都没机会去实践这些知识了,只能略读归纳一下。

在识别纸质文档的第一步,一般首先要识别文档区域,也就是定位出文档4个角的坐标,然后拉伸文档区域,还原宽高比,接着后续的OCR流程。本文主要记录一些文档区域检测方面的文章。

网易的方案

网易的有道笔记用到了文档检测技术,主要信息披露自以下两篇博客:

上面两篇文章,第一篇讲工程,第二篇讲算法。从两篇博文中大概能还原出这些信息:1.作者使用了语义分割的算法检测文档边缘;2.利用HED论文里的思想改进了LOSS函数。

在这里插入图片描述

根据作者的配图,我觉得检测边缘和进行拉伸之间,可能还有一个寻找矩形的步骤,这一步可以采用类似OpenCV里的findContours函数,这也是很多OCR进行文档检测的基本思路。

腾讯的文章

基于 TensorFlow 在手机端实现文档检测

这篇文章是腾讯Bugly的,我觉得比较可贵的是把他们产品的演进思路写出来了,也就是把采坑经验给出来了。我这里会摘抄原文里的部分文字略作改动。

他们刚开始也是调试各种传统算法,总结起来就是:

  • 改进 canny 算法的效果,增加额外的步骤,得到效果更好的边缘检测图
  • 针对 canny 步骤得到的边缘图,建立一套数学算法,从边缘图中寻找出一个合理的矩形区域

但是算法越来越复杂,代码实现难度很大。算法的鲁棒性也不够好,很容易遇到边缘检测效果不理想的场景。他们感觉传统的算法手段已经到极限了,那不如试试机器学习/神经网络。

首先想到的,就是仿照人脸对齐(face alignment)的思路,构建一个端到端(end-to-end)的网络,直接回归拟合,也就是让这个神经网络直接输出 4 个顶点的坐标,但是,经过尝试后发现,根本拟合不出来。

后来还尝试过用 YOLO 网络做 Object Detection,用 FCN 网络做像素级的 Semantic Segmentation,但是结果都很不理想,比如:

  • 达不到文档检测功能想要的精确度
  • 网络结构复杂,运算量大,在手机上无法做到实时检测

前面尝试的几种神经网络算法,都不能得到想要的效果,后来换了一种思路,既然传统的技术手段里包含了两个关键的步骤,那能不能用神经网络来分别改善这两个步骤呢,经过分析发现,可以尝试用神经网络来替换 canny 算法,也就是用神经网络来对图像中的矩形区域进行边缘检测,只要这个边缘检测能够去除更多的干扰因素,那第二个步骤里面的算法也就可以变得更简单了。

最终,作者采用HED边缘检测算法来做文档边缘检测。效果见下方第二列,可以看到其比传统算法鲁棒的多。

在这里插入图片描述
总结下来,这个方案和网易的思路应该是基本一致的,只是网易没有把中间坎坷的选型过程记录下来。

票据检测

深度学习实践文档检测

这篇文章的作者也想到类似腾讯的那种方案,但是觉得pipeline太长,想尝试真正端到端的检测方案。

作者也尝试直接对4个关键点的坐标做regression,发现能收敛但精度很低。这个结论和腾讯的结论一致。

最终作者参考人体姿态估计的一般做法,采用高斯热图回归的方法得到4个坐标点。作者认为热图回归方法还不完美,期待有更好的idea。
在这里插入图片描述

参考资料

这里有一个来自美团的OCR方案介绍,这里没有文档检测部分,直接从文字区域检测开始了,但是贴近实战,可以参考下:

美团-深度学习在OCR中的应用

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值