主要答案

主要答案

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

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

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

我知道可以通过打开 Adob​​e Acrobat 并在“预检”工具中操作来检查 PDF 文件中图像的 DPI。但是,有没有办法通过命令行确定特定 PDF 文件的 DPI?

答案1

主要答案

因为我对同样的工作感兴趣(虽然不一定对 PDF 文件进行 OCR,而是将它们转换为视音频然后OCR),我发现这个问题和答案都不够充分(因为我需要猜测图像的 DPI 和像素数,然后使用大小作为输出pdfinfo或其他技巧——更不用说 PDF 中的图像可能具有不同的密度等)。

经过大量研究,我发现你可以使用pdfimages(来自包poppler 实用程序) 如下所示:

$ 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然后,您可以使用或任何您喜欢的工具执行您认为合适的任何手术。

更直接的答案

如果你只是想对 PDF 文件进行 OCR,你可以使用一个维护良好且已打包的程序,即ocrmypdf

答案2

该技术也使用了 ImageMagick:

identify -format "%w x %h %x x %y" DAT_1.tif

输出是图像的大小和 dpi:

2480 x 3507 300 x 300

答案3

我使用以下命令:

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

并返回:

Size: 380x380

相关内容