自炊した本のPDFが薄くて読みづらいことが多々あります。スキャナの設定によったりもするみたいなんですが、業者に頼んだものとかだとどうしようもないとう。そんなときはちょっと面倒ですが画像処理をかけてあげることで見やすいものにできます。
全体の流れはこんな感じ。
- PDFの各ページを画像に変換する
- 各画像の裏写りや紙やけを解消
- 各画像の二値化とファイルサイズ削減
- すべての画像を結合しPDF化
下準備
Xpdf
に付属するpdfimages
というツールと、ImageMagick
のmogrify(convert)を使用します。どちらもHomebrewでインストールできるので入れておきます。
$ brew install imagemagick
$ brew install xpdf
PDFの各ページを画像に変換する
対象のPDFファイルと出力ファイル名を指定して実行します。
$ pdfimages -j target.pdf out☄
この場合対象のPDFと同じディレクトリにout-000001.jpg
などが連番で出力されます。
各画像の裏写りや紙やけを解消
さきほど出力したjpgファイルを対象としてImageMagickで処理をけていきます。こちらをそのまま参考にしました
スキャナで自炊した画像をキンドル向けにImageMagickで最適化してみる
すべての画像を対象にmogrify
で一括変換をかけます。
$ mogrify -channel Red -separate -modulate 110 out-*.jpg
各画像の二値化とファイルサイズ削減
こちらも同様の記事を参考にしました。二値化することで文字の部分が読みやすくなります。
$ mogrify -threshold 50000 -quality 30 out*.jpg☄
-quality
オプションによりサイズ軽減のためにつけています。元より読みやすくなるから粗くなってもOKというわけです。気に入らなければ-quality
オプションをなくせばいいかも。
すべての画像を結合しPDF化
最後は処理済みの画像をPDFにまとめるだけです。
$ convert out*.jpg out.pdf
パラメータの調整が必要かもしれませんがこれで薄くて読みづらいということはなくなると思います。文字自体は元よりも少し潰れているような感じもうけますが、背景とのコントラストが強くなっている分読みやすいはず。
といいたいところですが、ここでのconvert
がすごく重いのでまともには使えません。幸いMacのPreview.appで結合が可能なのでそちらを使うほうがいいでしょう。
やり方は、out*.jpg
を全て選択して、「このアプリケーションで開く」→「プレビュー.app」で全て開いたあと、再び全て選択して「プリント」からPDFを作成するだけです。こちらはすぐにできあがります。