玩式草子─ソフトウェアとたわむれる日々

第43回 SANEを用いた書籍の電子化

この記事を読むのに必要な時間:およそ 4 分

日本では,ここ数年,恒例のように「電子書籍元年」の呼び声がかかっています。特に昨年は,アマゾン社がずいぶん安価な値段でKindleという電子ブックリーダを出し,それに対抗するかのように楽天もKoboを大量に配布して,何度目かの「電子書籍元年」の掛け声が賑っていました。

本好き人間の一人として,電子書籍に興味はあるものの,現状の電子書籍は便利さよりも不便さの方が目立つ気がします。特に,その不便さが,物理的な制限ではなく,ライセンス的な制約に由来しているのを見るにつけ,電子書籍の購入がためらわれます。

その結果,手元には紙を束ねた「本」が山積みされることになっていますが,人生の折り返し点をだいぶ過ぎた年齢になってくると,さすがに「そろそろ不要な本は整理しようか……」という気にもなってきます。

不要な本は古本屋等で処分するのが一番簡単そうなものの,手元の趣味の偏った本たちは二束三文に買い叩かれるのがオチでしょう。それならば,むしろ手元でスキャンして電子化してしまう方がよさそうだ,という気になって,自家製の電子書籍化,いわゆる「自炊」を試してみることにしました。

インターネット上には「自炊」に関するさまざまなノウハウが紹介されているものの,それらはたいていWindows環境と商用ソフトウェアを前提にしています。一方,Linux/UNIXの世界でもスキャナ用のツールは古くから開発されており,それらを使えばOSSだけでもそれなりの環境は構築できそうです。今回は,手元で試したそれらの方法を紹介してみることにしましょう。

スキャナとsane-backend

プリンタ同様,スキャナの仕様もメーカや機種ごとに異なり,商用OS用には各メーカがそれぞれ専用のドライバを組み込んだソフトウェアを添付しています。それらのソフトウェアはスキャナの独自機能などにも対応していて便利そうなものの,異なるメーカのスキャナを自由に切り替えて使うわけにはいかないようです。

一方,OSSの世界ではSANE(Scanner Access Now Easy)というソフトウェアが開発されています。SANEは,特定メーカのスキャナにのみ対応するのではなく,スキャナに対する汎用的なAPIを定めて,メーカの異なるスキャナも同じ手順で利用できることを目指したソフトウェアです。

SANEの中心はsane-backendという名称でまとめられたライブラリ群で,これらが実際のスキャナを操作すると共に,スキャナに対する汎用的なAPIを提供します。sane-backendが対応しているスキャナの一覧は,SANEプロジェクトのホームページで公開されています。

このページによると,最新の安定版であるsane-backend-1.0.23では,さまざまなメーカ製の1941種のスキャナのうち,1000種ほどが使用可能(Complete/Good)で,300種ほどが未テスト,500種弱が非サポートとなっています。リストにはエプソンやキヤノンのスキャナやプリンタ複合機も多数紹介されているので,Linuxからも利用できるスキャナが欲しい場合,このページの情報を元に機種を選べばいいでしょう。今回取りあげる富士通のScanSnap S1500というスキャナ専用機は,sane-backendのfujitsuドライバが対応しています。

一方,sane-backendが対応していない機種でもメーカが独自のドライバを公開している場合があります。たとえば,手元にはHP製のプリンタ複合機(OfficeJet Pro 8500A)がありますが,HPの場合,HP-LIP(HP Linux Image and Printing)というプロジェクトがLinux用のドライバを積極的に公開しており,HP製のほぼ全てのプリンタやスキャナはLinuxから利用できるようになっているので,sane-backendでは最近のHPのスキャナ用のドライバは開発していません。

手元のスキャナにsane-backendが対応しているかどうかは,scanimage -Lというコマンドで確認することができます。

$ scanimage -L
device `fujitsu:ScanSnap S1500:626844' is a FUJITSU ScanSnap S1500 scanner
device `hpaio:/net/Officejet_Pro_8500_A910?ip=192.168.1.100' is a Hewlett-Packard Officejet_Pro_8500_A910 all-in-one

本来,scanimageというコマンドは,sane-backendパッケージに付属のCUIなSANEクライアントですが,-Lオプションを指定すると利用可能なスキャナのリストを表示してくれます。

スキャナがscanimageコマンドで認識されない場合,デバイスファイルのパーミッションの設定sane-backendの設定ファイルを調整することで利用可能になることがあります。その際には,まずsane-find-scannerコマンドで,スキャナ自体がUSBやSCSIデバイスとして認識されているかを確認します。

$ sane-find-scanner 

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  ...
found USB scanner (vendor=0x04c5, product=0x11a2) at libusb:001:004
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.
  ...
  # You may want to run this program as root to find all devices. Once you
  # found the scanner devices, be sure to adjust access permissions as
  # necessary.

この例では,USB接続したスキャナが見つかっています。SCSI接続やUSB接続のスキャナの場合,sane-find-scannerでSCSIやUSBデバイスとして認識されていないと,sane-backendから利用することはできません。

sane-find-scannerはパラレルポートに接続されたスキャナやネットワーク接続のスキャナは認識できません。

SCSI接続タイプの古いスキャナの場合はsgモジュールドライバ経由で利用することになるので,"modprobe sg"すれば目的のスキャナが認識されるかも知れません。また,デバイスファイルのパーミッションの設定によっては,rootにならないとスキャナが検出されないこともあります。そのような場合は該当するデバイスファイルのパーミッションを確認してみてください。

sane-backendが利用する設定ファイルは/etc/sane.d/ディレクトリに収められています。このディレクトリには,sane-backendが対応している各メーカごとの設定ファイルが網羅されており,sane-backendは/etc/sane.d/dll.confファイルに従って,各メーカごとの設定ファイルを調べて該当するファイルを利用するようになっています。

デフォルトでは,dll.confファイルには利用可能な設定ファイル全てが登録されており,それらを全てチェックするため,スキャナの検出には多少時間がかかります。

$ cat -n /etc/sane.d/dll.conf.org 
    1   # enable the next line if you want to allow access through the network:
    2   net
    3   abaton
    4   agfafocus
    5   apple
    ...
   85   umax1220u
   86   v4l
   87   xerox_mfp

必要な設定ファイルがわかっている場合,dll.confにそのファイルのみを指定することで,スキャナの検出時間を短縮することができます。また,不要な設定ファイルのチェックを省くことで,スキャナを正しく認識することもあるようです。

HPのプリンタ複合機のようにhplip経由で利用するスキャナの場合,事前にhp-setupコマンドでhplipの設定をしておかないとsane-backendから利用できません。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入