PDFファイル内の画像のDPIをプログラムで決定する方法は?


13

convert(を介してOCRを実行するためにtesseract)を使用してTIFFファイルに分割したいPDFファイルがいくつかあります。これはこれまでのところうまく機能しています-プロセス全体を自動化するために、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を決定する方法はありますか?

回答:


9

主な答え

私は仕事の同じ種類に興味を持っているので(OCRに、必ずしもではないがPDFファイルを、それにそれらを変換するためのDjVu、その後、私はのDPIを推測するために必要なので、(OCR彼らは)、私が欠けているこの質問と回答を見つけましたピクセル数の画像を使用しpdfinfo、PDF内の画像の密度などが異なることは言うまでもありませんが、出力またはその他のトリックとしてサイズを使用します。

さらに多くの研究を重ねた結果、次のようにpdfimagespoppler-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%

お知らせx-ppiおよびy-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を使用できます。


x-ppi(DPIのx解像度)およびy-ppi(DPIのy解像度)はpdfimages、たとえばUbuntu 14.04に付属している古いバージョンでは表示されないことに注意してください。ただし、Ubuntu 18.04で利用可能なものには、これらの値が含まれています。 pdfimages -v私のUbuntu 18.04のマシンショーに私はバージョン0.62.0、持っていないこれらの機能を持っています。
ガブリエルステープルズ

@GabrielStaples、それを指摘してくれてありがとう。Ubuntu 14.04はすでに廃止されたと思っていましたが、wiki.ubuntu.com / Releases
rbrito

4

この情報が必要だったので、ここで見つけました。

http://www.wizards-toolkit.org/discourse-server/viewtopic.php?t=16110

この手法ではImageMagickも使用します。

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

出力は、画像のサイズとdpiです。

2480 x 3507 300 x 300

ディレクトリ内のすべてのpdfを処理するために* .pdfを実行する場合に備えて、フォーマットの最後に新しい行を追加します。「%wx%h%xx%y \ n」
半蔵H

2

次のコマンドを使用します。

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

そしてそれは返します:

Size: 380x380

ありがとう-これはpdf画像のサイズを取得します(あなたの場合、それは正方形なので380x380)。DPIは異なります。このコマンドを実行したばかりのファイルでSize: 595x842は、DPI(Acrobatでのチェック)は130前後ですが、
ジェイソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.