对带有背景的图像进行倾斜(Python)

问题描述

我正在处理一个项目,在该项目中,我正在对标签上的文本进行OCR。我的工作是对图像进行倾斜,使其可用tesseract读取。

我一直在使用this approach,对图片进行灰度和阈值处理,获取黑色像素坐标,在其周围绘制minAreaRect,然后根据此矩形的倾斜角度校正倾斜。这适用于,但不适用于具有背景的图像,如所显示的图像。在那里,它计算的倾斜角度为0.0,并且不旋转图像。(预期结果:17°)

我怀疑这是因为背景中有黑色像素。正因为如此,minAreaRect绕着整个图片旋转,因此导致倾斜角度为0。

我尝试删除背景,但找不到工作得足够好的方法,因此只留下带有文本的标签

我尝试的另一种方法是通过k均值聚类对像素进行聚类。但是,即使手动选择好的k,包含文本的群集仍包含部分背景。

更不用说我还需要另一个方法来遍历所有群集,并使用某种启发式方法来确定哪个群集是文本群集,哪个群集是背景群集,这将耗费大量的运行时间。

对有背景的图像进行倾斜的最佳方法是什么?


解决方案

您可以尝试基于深度学习的natural scene text detection方法。使用这些方法,您可以获得每个文本的旋转边界框。在此基础上得到覆盖所有方框的旋转边界矩形。然后使用该矩形的4个角更正图像。

RRPN_plusplus

基于示例图像RRPN_plusplus在极端角度下似乎做得相当好。

东部

PyimageSearch提供了EAST场景文本检测器教程。虽然不确定东方在极端角度下会做得很好。

https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/

图像来源,https://github.com/argman/EAST。

这些应该可以帮助您找到最近更好的报告和方法,

  • https://github.com/topics/scene-text-detection
  • https://paperswithcode.com/task/scene-text-detection
  • https://paperswithcode.com/task/curved-text-detection

相关文章