web-dev-qa-db-ja.com

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

convertを使用してTIFFファイルに分割するPDFファイルがいくつかあります(tesseractを介してOCRするため)。これはこれまでのところうまく機能しています-プロセス全体を自動化するために、convert出力のDPIを設定する必要があることを除いて。今、私はこのようなコマンドを使用しています:

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

... PDFファイルを300 DPIで出力します。ただし、一部のPDFファイルにはlower DPI(例:150 DPI)があり、これはconvertを介して300 DPIで出力したくないことを意味します。追加情報のない大きなTIFFファイル。

Adobe Acrobatを開き、「プリフライト」ツールをいじって、PDFファイル内の画像のDPIを確認する方法があることを知っています。ただし、特定のPDFファイルのDPIをコマンドライン経由で決定する方法はありますか?

11
Jason

主な答え

私は同じ種類の仕事に興味があるので(PDFファイルをOCRする必要はありませんが、 DjV およびthenに変換します) 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%

上記のリストのx-ppiy-ppiに注目してください。また、画像がPDFに保存されている形式もリストします。これは便利です(JBIG2、場合によってはJPEG2000など)。

注:上記で使用したファイルdeptest.pdfは利用可能です pdfsizeoptのリポジトリから

実際のアクション

その後、pdfimages自体で画像を抽出するか、pdftoppmpoppler-utilsからも)を使用して、ページ全体を好きなフォーマット(たとえば、tesseractでスキャンするためのtiff)でレンダリングできます。

次のようなものを使用できます(イメージを配置する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 を使用できます。

5
rbrito

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

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

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

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

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

2480 x 3507 300 x 300
4
excyberlabber

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

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

そしてそれは返します:

Size: 380x380
2
Mahdi