从PDF的多个页面中提取相同(矩形)区域

时间:2017-12-30 22:46:12

标签: pdf tesseract hindi devanagari

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

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

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

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

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

如果有办法通过将PDF转换为图像文件来实现这一目标,那也很有趣。

PS:我现在正在寻找在终端(使用Gimp)这样做,就像Dmitri Z所提出的那样。

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

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

2 个答案:

答案 0 :(得分:1)

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

$ convert foo.pdf foo.png

以及使用API​​ python example。您可以使用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)));

答案 1 :(得分: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: