Jas*_*son 16 command-line pdf display-resolution
我有一些 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?
rbr*_*ito 14
由于我对相同类型的工作感兴趣(虽然不一定要对 PDF 文件进行 OCR,但要将它们转换为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%
Run Code Online (Sandbox Code Playgroud)
请注意上面列表中的x-ppi
和y-ppi
。它还列出了图像在 PDF 中存储的格式,这很酷(有时是 JBIG2,有时是 JPEG2000 等)
注意:deptest.pdf
上面使用的文件可从pdfsizeopt
的存储库中获得。
之后,您可以简单地提取图像pdfimages
本身或使用pdftoppm
(也来自poppler-utils
)以您可能喜欢的多种格式呈现整个页面(例如,tiff,用于扫描tesseract
)。
您可以使用以下内容(假设您已经创建了一个名为imgs
放置图像的目录):
pdfimages -png Faraway-PRA.pdf imgs/prefix
Run Code Online (Sandbox Code Playgroud)
这些文件将在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
(...)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用scantailor
您喜欢的工具或任何您喜欢的工具执行您认为合适的任何手术。
如果您只想对 PDF 文件进行 OCR,您可以使用维护良好且已打包的程序,即ocrmypdf。
我需要这些信息,只是在这里找到了:
http://www.wizards-toolkit.org/discourse-server/viewtopic.php?t=16110
此技术还使用 ImageMagick:
identify -format "%w x %h %x x %y" DAT_1.tif
Run Code Online (Sandbox Code Playgroud)
输出是图像的大小和 dpi:
2480 x 3507 300 x 300
Run Code Online (Sandbox Code Playgroud)
我使用以下命令:
convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null
Run Code Online (Sandbox Code Playgroud)
它返回:
Size: 380x380
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12605 次 |
最近记录: |