4

我正在尝试找到一种方法来确定是否需要旋转图像才能使文本水平对齐。如果它确实需要旋转多少度?

我将图像发送到 tesseract 并且为了使 tesseract 有效,图像中的文本需要水平对齐。

我正在寻找一种方法来做到这一点,而不依赖于图像中的“方向”元数据。

我想到了以下方法来做到这一点:

  1. 将图像顺时针旋转 90 度四次,并将所有四张图像发送到 tesseract。这并不理想,因为需要将一张图像处理 4 次。
  2. 使用霍夫线变换来查看线条是垂直的还是水平的。如果它们是垂直的,则旋转图像。这样,图像仍然可能需要旋转 180 度。所以我不确定这会有多有效。

我想知道是否有其他方法可以使用 OpenCV、imageMagik 或任何其他图像处理技术来完成此任务。

4

3 回答 3

2

如果你有 1000 张水平或垂直的图像,你可以将这些图像调整为 224x224,然后微调卷积神经网络,如 AlexNet 或 VGG 来完成这项任务。如果您想知道图像要向右旋转多少次,可以将标签设置为顺时针旋转的次数,例如 0、1、2、3。

http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html

于 2016-04-18T17:55:36.377 回答
1

在所有 4 个方向上尝试 ocr 似乎是一个合理的选择,我怀疑你会找到更可靠的启发式方法。

如果速度是一个问题,您可以先对图像的一小部分进行 OCR。选择一个矩形区域,该区域具有适当数量的边缘像素和文本的白/黑比率,然后将其发送到不同方向的 tesseract。对于一个小区域,您甚至可以尝试小于 90° 的步长,或者将其与 Hough 等其他启发式方法结合使用。

如果您记住了基于先前图像的最可能的方向,并在 tesseract 成功处理了方向后停止,那么在大多数情况下,您甚至可能不必尝试大多数方向。

于 2016-04-18T18:33:02.083 回答
1

您可以在带有 tesseractpsm选项的终端中解决这个问题。

tesseract --psm 0 "infile" "outfile"将创建outfile.osd包含以下信息:

Page number: 0
Orientation in degrees: 90
Rotate: 270
Orientation confidence: 27.93
Script: Latin
Script confidence: 6.55

man tesseract

...       
--psm N
           Set Tesseract to only run a subset of layout analysis and assume a certain form of image. The options for N are:

               0 = Orientation and script detection (OSD) only.
               1 = Automatic page segmentation with OSD.
               2 = Automatic page segmentation, but no OSD, or OCR. (not implemented)
...
于 2019-12-30T21:32:49.897 回答