我使用佳能扫描仪扫描了一些文件,分辨率指定为 300。
我将其保存为 pdf 文件然后我通过 ImageMagick 检查了 pdf 文件的分辨率
identify -verbose my.pdf
在它返回的输出中,对于每个页面它都说
Resolution: 72x72
这不是我之前为扫描仪指定的 300。为什么不同?注意:如果我将其保存为 jpg 文件,并且使用 Xerox workCenter,也会出现同样的问题。
当我使用 Adobe Premium Pro 对我的 pdf 文件进行 OCR 时,它让我从几个选项(72、300、600)中指定将 pdf 文件降采样到哪个分辨率。如果我不希望 OCR 后的 pdf 文件的分辨率低于原始 pdf 文件,我该如何找出 pdf 文件的分辨率,以及我应该在 Adobe 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,这样它就不必在将其转换为光栅图像之前决定分辨率。