PDF是矢量图形文档。可以以任何分辨率渲染。
嵌入PDF文档中的光栅图像(如基本扫描文档中的典型图像)通常具有分辨率(在纸上打印时,一英寸的像素数)。一个这样的PDF文档可能包含其中的几张图像(如果是多页文档,则可能具有这些图像),它们的分辨率和方向可能不同。
这不是ImageMagick的identify -v
报告。72dpi是它用来将PDF转换为光栅图像以报告其像素信息的分辨率。
您会注意到它实际上在运行:gs ... -r72x72 ...
为此。
pdfimages
可以报告PDF文档中的所有光栅图像:
$ pdfimages -list scan.pdf
page num type width height color comp bpc enc interp object ID
---------------------------------------------------------------------
1 0 image 1219 1707 rgb 3 8 jpeg no 8 0
$ qpdf --show-pages --with-images scan.pdf
page 1: 3 0 R
images:
/Im0: 8 0 R, 1219 x 1707
content:
4 0 R
这给了您以像素为单位的大小,但没有打印图像的框的大小(英寸mm
或inch
),因此您将无法获得分辨率。
但是,从对象ID(8 0
上面)中,您可以找到容器的尺寸:
$ mutool show scan.pdf grep | grep 'Im0 8 0'
scan.pdf:3: <</Contents 4 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 2 0 R/Resources<</XObject<</Im0 8 0 R>>/ProcSet 6 0 R>>/Thumb 11 0 R/Type/Page>>
因此,在这里,我们知道图像是在595x842磅(点是1/72英寸)上渲染的。
因此我们可以得出x和y分辨率:
$ echo "$((1219 * 72 / 595))dpi" "$((1707 * 72 / 842))dpi"
147dpi 145dpi
请注意,当以JPG格式嵌入时,图像可能具有指定分辨率的EXIF标头。
您可以提取图像以找出答案:
$ exiftool -XResolution -YResolution <(qpdf --show-object=8 --raw-stream-data scan.pdf)
X Resolution : 72
Y Resolution : 72
在这里,他们不匹配。
您也可以提取图像,然后使用with pdfimages
并将其传递给OCR,这样在将其自身转换为光栅图像之前,不必决定分辨率。