-1

我需要在数百页的 PDF 文件的不同页面上提取相同的矩形区域(在相同的位置)。

我正在运行 Linux,并找到了一种使用 Tesseract 和前端 gImageReader 手动执行此操作的方法,并且正在寻找一种方法来自动化此过程。

我需要提取的信息是印地语文本(用梵文编写),因此将数据提取为文本(没有印地语 OCR)可能会产生不好的结果,但如果有办法将其提取为图像也可以,然后我可以在一个单独的步骤中对 Tesseract 中收集的数据进行 OCR。

所以我正在寻找的是一种从 PDF 的不同页面复制相同区域并将它们输出到另一个文件(例如另一个 PDF 或图像文件)的方法。

我已经看到发布了其他类似的问题,但他们专门要求提取文本,在这种情况下不一定需要。

如果有办法通过将 PDF 转换为图像文件来做到这一点,那也会很有趣。

PS:我现在正在考虑在终端中执行此操作(使用 Gimp),按照 Dmitri Z 的建议。

对于那些对 GUI 感兴趣的人,我发现了 Phatch for Linux,它非常适合批量处理图像,以及直接(批量)裁剪 PDF 文件。

如果有人知道从 1 张图像中提取 2 个不同矩形区域的方法,那将很有帮助。

4

2 回答 2

1

您可以在同一个 Imagemagick 命令中裁剪两个(或更多)区域,如下所示:

convert image +write mpr:img +delete \
\( mpr:img -crop W1xH1+X1+Y1 +repage +write out1 \) \
\( mpr:img -crop W2xH2+X2+Y2 +repage +write out2 \) \
null:

或者

convert image \
\( -clone 0 -crop W1xH1+X1+Y1 +repage +write out1 \) \
\( -clone 0 -crop W2xH2+X2+Y2 +repage +write out2 \) \
null:
于 2017-12-31T02:39:05.053 回答
1

该解决方案包括 2 个步骤: 1) 将 PDF 转换为图像 最常用的工具是 imagemagick。您可以将其用作命令行工具

$ convert foo.pdf foo.png

以及使用 API python 示例。您可以使用 c++ API,但不幸的是我在 Magic++ c++ API 方面没有太多经验。

您可能需要安装 GhostScript 才能阅读 PDF。

2) 从图像中提取感兴趣区域 (ROI) 您也可以在此处使用 imagemagick

-extract widthxheight{{+-}offset}

将是一个使用选项,例如:

convert -extract 640x480+1280+960 bigImage.rgb extractedImage.rgb

其他选择是使用 OpenCV。在 C++ 中,这将非常简单:

Mat image = imread("yourimage.png");
int x = 10, y = 20, w = 100, h = 100;
imwrite("roiImage", image(Rect(x, y, w, h)));
于 2017-12-30T23:21:54.417 回答