我需要在数百页的PDF文件中的不同页面上提取相同的矩形区域(在相同位置)。
我正在运行Linux,并且已经找到了使用Tesseract和前端gImageReader手动执行此操作的方法,并且正在寻找一种自动执行此过程的方法。
我需要提取的信息是印地语文本(用梵文写成),因此将数据提取为文本(没有印地语OCR)可能会产生不良结果,但如果有办法将其提取为图像也会好的,我可以在单独的步骤中对Tesseract中收集的数据进行OCR。
所以我正在寻找的是一种从PDF的不同页面复制相同区域的方法,并将它们输出到另一个文件(例如另一个PDF或图像文件)。
我已经看过其他类似的问题,但他们要求专门提取文本,在这种情况下不一定需要。
如果有办法通过将PDF转换为图像文件来实现这一目标,那也很有趣。
PS:我现在正在寻找在终端(使用Gimp)这样做,就像Dmitri Z所提出的那样。
对于那些对GUI感兴趣的人,我找到了Phatch for Linux,它非常适合批处理图像,以及(批量)直接裁剪PDF文件。
如果有人知道从1张图片中提取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: