Fedoraと中古スキャナーで大学の教科書をデジタル化した話

はじめまして、大阪工業大学の前田悠斗です。
2回生になり、1回生の時の教科書が本棚を専有していたので捨てようかと思ったのですが、高い教科書を捨てるのは勿体無いと思いました。解決策は無いかと調べたところ、「自炊」という本をスキャンしてデジタル化する文化を知ったので、今回はその自炊の方法についてまとめたいと思います。

なぜFedora?

タイトルにもある通り、今回はFedora上でスキャン処理を行っていくのですが、なぜWindowsではないのかというと、用意できた中古スキャナー(ScanSnap iX500)のドライバやソフトがもう公開されていないからです(泣)。しかし、Fedora(GNU/Linux)には様々なスキャナーのAPIを提供する「SANE」というパッケージがあるので、これを使えば中古スキャナーも使えるようになるわけです。Ubuntuでも同様のことが出来るので、Ubuntuユーザーの人も調べてやってみてください。また、SANEが対応しているスキャナーであれば別のスキャナーも使えるので、[SANE - Supported Devices]を参照してみてください。

SANEとscanadfについて

SANEとは、UNIXとGNU/Linux向けに公開されている、スキャナーへのアクセスを提供するAPIです。注意したいのが、SANEはあくまでAPIであって、スキャン操作などは別のプログラム(frontend)が必要です。そこで、今回はCLI上で操作できるscanadfというコマンドを利用したいと思います。scanadfを選んだ理由は、ScanSnapのクロップ機能(画像を適切な大きさにトリミングする機能)と名前にある通りADF(自動原稿送り装置)が使えるためです。frontendは他にも色々なプログラムが公開されているので、自分に合うものを探してみるのも良いかもですね。

セットアップ

ではセットアップを始めていきましょう。まずはパッケージをインストールします。saneはSANEのパッケージで、ImageMagickは後述するpnm形式からpdf形式への変換の際に必要です。

sudo dnf install sane-backends sane-frontends ImageMagick

次に、スキャナーをPCに接続して、デバイスの名前を取得します。

scanadf -L

実行すると以下のようにスキャナーの名前が取得できると思うので、メモしておきます。

yuto@fedora:~/Documents$ scanadf -L
device `fujitsu:ScanSnap iX500:1510035' is a FUJITSU ScanSnap iX500 scanner

やってみよう

教科書をスキャンする場合、まずは裁断して背表紙を取り外すことから始まります。裁断機は結構高いので、レンタルすることをおすすめします。

裁断ができたら、早速スキャンしてみましょう。教科書をスキャナーにセットします。

スキャンするコマンドは以下の通りです。なお、利用可能なプロパティはスキャナーによって異なるので、scanimage -A -d "デバイス名"を実行して、プロパティを確認してください。今回はFujitsu ScanSnap iX500のプロパティを指定しています。

scanadf \
    --device-name='fujitsu:ScanSnap iX500:1510035' \
    --source='ADF Duplex' \
    --mode='Color' \
    --resolution='300' \
    --swcrop=yes \
    --output-file="./%04d.pnm"
  • device-name: スキャナーの名前を指定します。
  • source: 表面(Front)または裏面(Back)だけか、両面(Duplex)ともスキャンするかを指定します。
  • mode: 白黒(Gray)かカラー(Color)のどちらにするかを指定します。
  • resolution: 解像度を指定します。
  • swcrop: 原稿のサイズに合わせて自動で画像サイズを変更するかを指定します。
  • output-file: 出力するファイル名を指定します。フォーマット指定子で連番を付けられます。

複数ページを1冊のPDFにまとめる

スキャンは出来ましたが、ページがバラバラではデジタル教科書として読むにはあまりにも不便すぎます。そこで、ここからはImageMagickのmagickコマンドを使ってpnmファイル群をpdfにまとめていきます。

magick *.pnm textbook.pdf
  • *.pnm : 変換前のファイルを指定します。
  • textbook.pdf : 出力ファイル名を指定します。拡張子を.pdfにすることで、ImageMagickが自動的にPDF形式で書き出してくれます。

これで、スキャンした教科書のページを1冊分のPDFとしてまとめることができました。ImageMagickはとても便利ですね。

おわりに

自炊で本棚のスペースを大幅に空けることに成功しました。やったね! スキャンしたデータはiPadに入れて大学の講義で使っています。
なお、スキャンしたデータをインターネット上にアップロードすると著作権法違反になるので、そこだけは気をつけてくださいね。

参考サイト