自动旋转扫描的文本图像(通过命令行进行 OCR?)

自动旋转扫描的文本图像(通过命令行进行 OCR?)

我可以自动旋转主要包含文本的图像吗?也许通过 OCR?算法或其他方法需要扫描图像并决定是否要将其旋转 90°、180° 或 270°

我想将此功能包含到现有的 PowerShell 脚本中,因此命令行功能是必需的。

我愿意接受 ImageMagick 解决方案

例子

在此处输入图片描述
点击放大

我已经阅读了以下 SO 问题。但是它们会旋转照片。
而我只是尝试旋转没有 EXIF 元数据的纯文本扫描。

答案1

我现在这样做立方体使用开关“-psm 0”将检测图像的方向。

示例输出:

Tesseract Open Source OCR Engine v3.04.00 with Leptonica
Orientation: 3
Orientation in degrees: 90
Orientation confidence: 3.94
Script: 1
Script confidence: 13.81

然后我跑图像魔术师将图像旋转到正确的方向。它适用于大多数图像,手写文档和照片除外。

有点笨拙,但是比运行四次 OCR 快得多。

答案2

我也在寻找一种自动旋转文档的方法。阅读@teikjoon的回答,并使用以下脚本编写了以下脚本立方体图像魔术师

# orient_images '/b'
function orient_images() {
  for file in $1;
  do magick mogrify -rotate -$(tesseract $file - --psm 0 | sed -n 's/Rotate: \(.*\)/\1/p') $file;
  done;
}

这可行,但现在面临另一个问题,即 Tesseract 对文本方向的置信度得分较低,因此我正在研究类似的工具Fred 的文本清理器脚本。

答案3

你可以通过以下方式实现ocrmypdf

ocrmypdf --rotate-pages myfile.pdf myfile.pdf

答案4

这不是最优雅的方法,但你可以尝试在所有四个方向上进行 OCR,其​​中乱码最少的那个就是正确的。我快速搜索了一下,找到了一些讨论使用这种技术的参考资料,例如

文档校正的第二阶段是上下文自动旋转。使用在多个方向上读取的整页 OCR,软件可以确定在哪个方向上读取的质量最好。这是旋转文档的最准确方法。只有文本很少或文本处于各种角度的文档才有风险。在这些情况下,软件会选择最易读的文本的方向。

相关内容