扫描的 PDF 文件的分辨率是多少?

扫描的 PDF 文件的分辨率是多少?
  1. 我使用佳能扫描仪扫描了一些文件,分辨率指定为 300。

    我将其保存为 pdf 文件然后我通过 ImageMagick 检查了 pdf 文件的分辨率

    identify -verbose my.pdf
    

    在它返回的输出中,对于每个页面它都说

    Resolution: 72x72
    

    这不是我之前为扫描仪指定的 300。为什么不同?注意:如果我将其保存为 jpg 文件,并且使用 Xerox workCenter,也会出现同样的问题。

  2. 当我使用 Adob​​e Premium Pro 对我的 pdf 文件进行 OCR 时,它让我从几个选项(72、300、600)中指定将 pdf 文件降采样到哪个分辨率。如果我不希望 OCR 后的 pdf 文件的分辨率低于原始 pdf 文件,我该如何找出 pdf 文件的分辨率,以及我应该在 Adob​​e Premium Pro 中为 OCR 选择哪个分辨率选项?

谢谢。

答案1

PDF 是矢量图形文档。它可以以任何分辨率呈现。

PDF 文档中嵌入的光栅图像(基本扫描文档的典型特征)通常具有分辨率(打印在纸上时文档每英寸有多少像素)。此类 PDF 文档可能包含多个此类图像(如果是多页文档,则包含多个图像),分辨率和方向可能不同。

这不是 ImageMagickidentify -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 pt(1 点为 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

但在这里它们并不匹配。

您还可以提取图像并将pdfimages其传递给 OCR,这样它就不必在将其转换为光栅图像之前决定分辨率。

相关内容