在linux中使用命令行获取灰度图"text"边界框的坐标

Getting the coordinates of the "text" bounding box of a grayscaled picture by using command line in linux

正如标题所说。

严格来说,我定义为灰度图像的 "text" 边界框是一组 4 个坐标 (x,y,x+width,y+height),必须在其中定义一个矩形区域具有最大非白色像素数量且同时具有最少可能数量的白色像素的图像(不改变 non-white 像素的最大数量)。我在引号中有文字,因为图像实际上并不包含文字,因为图像只包含带颜色的像素。

在我的 Ubuntu 中安装了 ImageMagick 并在终端中输入命令:$convert input.png -trim ouput.png,我得到:

在网络浏览器的新选项卡中打开这两张图片,您将了解它们之间的区别,您还将了解我定义为 "text" 边界框的内容。 output.png 实际上有我正在寻找的宽度和高度 for.I 不知道如何获得 x 和 y 坐标。

这里 (1) 为 pdf 页面提供的答案不符合我的标准,因为 gs 给我的 "text" 边界框有很大的白边(实际上据我所知 gs定义为 pdf 的 "text" 边界框与我对图片的 "text" 边界框的定义不同。

图片没有 'text bounding box',因为显然没有文字。

PDF 文件中的图像本身可能包含白色像素,如果它们是从书籍中扫描出来的,那么它们几乎肯定会包含白色像素。这些像素计入图像的边界框,因为它们是 白色 不透明并且会遮挡在它们下方绘制的任何内容。

把一个'text bounding box'定义成'an area in that picture that has no white margins and only text'也是相当无稽之谈。如果它在图像中,则没有文本,只有定义像素的图像样本。那是一张 图片 的文字,实际上不是文字。为了区分包含文本的图像区域和包含非文本的区域,您将需要 OCR 软件,没有其他软件可以做到这一点,因为只有 OCR 软件能够检测文本和非文本之间的差异。

我不理解你描述中的所有单词,我认为图表会有所帮助,但如果你只是想知道 -trim 会像你的示例代码所暗示的那样做什么:

identify -format "%@" image.png
200x100+10+20

因此,对于您的图像,您得到

identify -format "%@" paper.png
406x620+38+68

这意味着您的框在左上角右侧 38 像素和左上角下方 68 像素处,宽 406 像素,高 620 像素。

如果我用红色绘制那个矩形,我会得到:

convert paper.png -stroke red -fill none -draw "rectangle 38,68 444,688" result.png

获得相同结果但使用 convert 代替 identify 的另一种方法是:

convert -format %@ paper.png info:
406x620+38+68