如何以编程方式确定PDF文件中图像的DPI?


13

我有一些PDF文件,我想使用拆分成TIFF文件convert(以便通过进行OCR tesseract)。到目前为止,这种方法非常有效-除了要使整个过程自动化之外,我需要设置convert输出的DPI 。现在,我正在使用如下命令:

convert -density 300 myFile.pdf -depth 8 -background white output-%04d.tiff

...以300 DPI输出PDF文件。但是,某些PDF文件的DPI 较低(例如150 DPI),这意味着我不想通过300 DPI输出它们convert-这会创建太大的TIFF文件,而没有任何其他信息。

我知道,有一些方法可以通过打开Adobe Acrobat并在“预检”工具中检查来检查PDF文件中图像的DPI。但是,是否可以通过命令行确定特定PDF文件的DPI?

Answers:


9

主要答案

由于我感兴趣的同样的工作(虽然不一定OCR的PDF文件,但将它们转换成的DjVu OCR他们),我发现这个问题,并响应缺乏(因为我需要猜的DPI具有像素数量的图像,然后使用该尺寸作为输出pdfinfo或其他技巧-更不用说PDF内的图像可能具有不同的密度等)。

经过大量研究,我发现您可以使用pdfimages(从poppler-utils包中)类似以下内容:

$ pdfimages -list deptest.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     100   100  gray    1   1  image  no         9  0    53    53  169B  14%
   2     1 image     100   100  gray    1   1  ccitt  no   [inline]      53    53  698B  56%

请注意上面的清单中的x-ppiy-ppi。它还列出了图像存储在PDF中的格式,这很酷(有时是JBIG2,有时是JPEG2000等)。

注意:deptest.pdf上面使用的文件可pdfsizeopt的存储库中获得

真正的行动

之后,您可以简单地提取图像pdfimages本身或使用pdftoppm(也来自poppler-utils)以您可能喜欢的多种格式渲染整个页面(例如tiff,用于使用扫描tesseract)。

您可以使用类似以下的内容(假设您已经创建了一个名称imgs,将其放置图像的目录):

pdfimages -png Faraway-PRA.pdf imgs/prefix

这些文件将在目录内创建imgs,名称以开头prefix,如下所示:

$ ls 
prefix-000.png  prefix-047.png  prefix-094.png  prefix-141.png
prefix-001.png  prefix-048.png  prefix-095.png  prefix-142.png
prefix-002.png  prefix-049.png  prefix-096.png  prefix-143.png
prefix-003.png  prefix-050.png  prefix-097.png  prefix-144.png
(...)

然后,您可以使用诸如此类的工具进行任何您认为合适的手术scantailor

更直接的答案

如果只想OCR PDF文件,则可以使用维护良好且已打包的程序ocrmypdf


请注意,例如,Ubuntu 14.04随附的旧版本未显示(x-ppiDPI中的x分辨率)和y-ppi(DPI中的y分辨率)pdfimages。但是,Ubuntu 18.04上提供的功能确实包含这些值。 pdfimages -v在我的Ubuntu 18.04计算机上显示我具有0.62.0版,它确实具有这些功能。
加布里埃尔·斯台普斯

@GabrielStaples,感谢您指出这一点。我认为Ubuntu 14.04已经停产,但是据wiki.ubuntu.com/Releases
rbrito 1919年


2

我使用以下命令:

convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null

它返回:

Size: 380x380

谢谢-这将获取pdf图像的大小(在您的情况下为380x380,因为它是正方形)。DPI不同。在我刚刚运行了该命令的文件上,Size: 595x842尽管DPI(在Acrobat中签入)大约是130 ,但我得到了
Jason
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.