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