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

从PDF的多个页面中提取相同的(矩形)区域,pdf,tesseract,hindi,devanagari,Pdf,Tesseract,Hindi,Devanagari,我需要在一个有几百页的PDF文件中,在不同的页面上提取相同的矩形区域(在相同的位置) 我正在运行Linux,并且已经找到了一种使用Tesseract和前端gImageReader手动执行此操作的方法,并且正在寻找一种自动化此过程的方法 我需要提取的信息是印地语文本(用Devanagari编写),因此将数据提取为文本(不使用印地语OCR)可能会产生不好的结果,但如果有一种方法可以将其提取为图像,我可以在单独的步骤中在Tesseract中对收集的数据进行OCR 因此,我要寻找的是一种方法,从PDF的

我需要在一个有几百页的PDF文件中,在不同的页面上提取相同的矩形区域(在相同的位置)

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

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

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

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

如果有一种方法可以通过将PDF转换为图像文件来实现这一点,那也会很有趣

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

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


如果有人知道从一幅图像中提取两个不同的矩形区域的方法,那会很有帮助

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

$ convert foo.pdf foo.png
以及使用API。你可以使用C++ API,但不幸的是我在Mault++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)));
可以在同一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:


你是在寻找免责工具,还是还会做一些编程?我对任何事情都持开放态度(只要不太复杂),我目前正在终端中寻找一个正在使用的Gimp(我想类似于Dmitri Z.在下面提到的内容)。有没有办法从一幅图像中提取两个不同的矩形区域?
@badabom
您可以对一个区域执行相同的步骤,对第二个区域执行相同的步骤。如果您可以同时提取两个不同的区域,您需要如何处理它们?也就是说,它们是否需要合并到一个图像中?如果是,怎么做?什么间距?请更具体一点<代码>@badabom。如果在输入之前在Imagemagick命令中指定-density,则只需进行少量计算和尝试,就可以计算出要提取区域的裁剪坐标。然后在同一命令输出回PDF。但是,请注意,Imagemagick不是向量到向量处理器。Imagemagick将在读取PDF时对其进行光栅化,然后输出到嵌入在PDF矢量外壳中的光栅图像。因此,输出大小将显著增大,除非输入也是PDF矢量外壳中的光栅图像
convert-density X image.pdf-crop WxH+X+Y+repage output.pdf
@fmw42我现在分两步批量裁剪这两个区域,只是想知道是否有一种方法可以在一步中完成。我有一些页面,左上角有一个单词,右上角有一个单词,我想从PDF/图像中提取这些单词,并将它们放入列表中。
convert image \
\( -clone 0 -crop W1xH1+X1+Y1 +repage +write out1 \) \
\( -clone 0 -crop W2xH2+X2+Y2 +repage +write out2 \) \
null: