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をコマンドライン経由で決定する方法はありますか?
私は同じ種類の仕事に興味があるので(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-ppi
とy-ppi
に注目してください。また、画像がPDFに保存されている形式もリストします。これは便利です(JBIG2、場合によってはJPEG2000など)。
注:上記で使用したファイルdeptest.pdf
は利用可能です pdfsizeopt
のリポジトリから 。
その後、pdfimages
自体で画像を抽出するか、pdftoppm
(poppler-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 を使用できます。
この情報が必要だったので、ここで見つけました。
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
次のコマンドを使用します。
convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null
そしてそれは返します:
Size: 380x380