ぴよログ

↓に移転したのでこっちは更新されません、多分。

自炊してできたPDFファイルの文字が薄くて読みづらい状態を解消するには

移転しました →

自炊した本のPDFが薄くて読みづらいことが多々あります。スキャナの設定によったりもするみたいなんですが、業者に頼んだものとかだとどうしようもないとう。そんなときはちょっと面倒ですが画像処理をかけてあげることで見やすいものにすることができます。

全体の流れはこんな感じ。

  1. PDFの各ページを画像に変換する
  2. 各画像の裏写りや紙やけを解消
  3. 各画像の二値化とファイルサイズ削減
  4. すべての画像を結合し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で最適化してみるスキャナで自炊した画像をキンドル向けに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がすごく重いのでまともには使えません。幸いMacPreview.appで結合が可能なのでそちらを使うほうがいいでしょう。

やり方は、out*.jpgを全て選択して、「このアプリケーションで開く」→「プレビュー.app」で全て開いたあと、再び全て選択して「プリント」からPDFを作成するだけです。こちらはすぐにできあがります。