有什么办法可以找到一个特定的像素区域,该区域被 PHP 和 Imagick 的黑色边框包围?

Is there any way to find a specific pixel area that is surrounded by a black border with PHP and Imagick?

我一直在尝试使用 Imagick 将我的 PHP 应用程序中的 PDF 文件转换为 PNG,这样我就可以获得 Tesseract OCR 的 PHP 库来仅扫描文档中的手写文本。文档中的手写文本区域被黑色边框包围,并且由于扫描了某些 PDF,它们可能会略微倾斜。

有什么方法可以使用 Imagick 从 PDF 中仅创建带边框的框的图像?我试过查看 Imagick 文档并尝试使用 despeckleImage() 然后 trimImage(),但由于图像中的一些模糊像素,我只能 trim 一点点。

带有手写文本的框是我想要获取其图像的框,以便我可以扫描其中的文本。 This imgur link 有我一直在使用的两个扫描。第一个完全没有绒毛,但第二个是带有绒毛的扫描。我什至不确定如何解决这个问题,因为库中有这么多函数,所以如果你们有任何想法,我们将不胜感激。

您可以使用连接的组件在 ImageMagick 命令行中执行此操作。我不知道 PHP Imagick 是否可以做到这一点。但你可以检查。否则,只需使用 PHP exec() 到 运行 我的命令。

以下是 Unix 语法。

输入:

bbox=`convert Ef82Whf_d.webp -threshold 75% -type bilevel \
-define connected-components:exclude-header=true \
-define connected-components:area-threshold=500 \
-define connected-components:keep-top=1 \
-define connected-components:verbose=true \
-define connected-components:mean-color=true \
-connected-components 8 null: | \
grep "gray(255)" | tail -n +2 | awk '{print }'`
convert Ef82Whf_d.webp -crop $bbox +repage -shave 5x5 textbox_crop.png