NetBSD Advent Calendar 2022 13日目の記事です。今日はNetBSDでドキュメントスキャナを使ってみる話をしようと思います(現在では単に「スキャナ」と言うと、脆弱性調査用のセキュリティスキャナを意味する場合もあるのでややこしいですね…)。
NetBSDでドキュメントスキャナを使う
紙のまま保管しておくほどではないけど、後で確認する必要が発生した時のために残しておきたい書類、というものはままあります。そういった書類をドキュメントスキャナでスキャンし、画像として保存しておく(デジタル化してかさ張らないようにする)と便利です。私もCanoScan LiDE 200という製品を利用しているのですが、いささか古い機種なのか、現在のWindowsやmacOSでは対応してない状態です…。新しい機種に買い替えれば良い、というのはごもっともですが、まだまだ問題なく動作するものを買い替えるのは(お財布的にも)気が引けます。
そのような場合、NetBSDのような自由に使えるOSであれば、ドライバ等がまだまだサポートされていることも多く、今回のケースでも問題なくドキュメントスキャナが利用できました。このような「最新のWindowsやmacOSではサポート外の古い機材が家にあるけど、特に壊れているワケではないので何とか使いたい」というな場合にNetBSDは一つの選択肢となるのではないでしょうか。
NetBSDをドキュメントスキャナサーバにする
私の環境では、これまた古いi386マシン上でNetBSD-i386を稼働させ、そこでドキュメントスキャナを使用しています。スキャン動作自体に時間がかかるため、ある意味では最新の早いマシンを使用するよりかは用途にマッチしているのかもしれません。
そして、このi386マシンにVNCで接続し、GUI環境だけ手元のWindowsマシンに表示し、そこからドキュメントスキャナをXsane(GUIフロントエンド)で操作しています。ある意味ではNetBSDをドキュメントスキャナサーバ(?)として利用している、と言えるかもしれません。
ドキュメントスキャナサーバの構築
ドキュメントスキャナサーバの構築手順を紹介します。NetBSDの対応アーキテクチャに依存しないはずなので、現在ならRaspberry Piを使うという手もありそうです。
NetBSDのUsing Scanners on NetBSDというドキュメントには、 scanner
グループを作成し、 /dev/usb*
と /dev/ugen*
にグループの書き込み権限を付与するという手順になっています。ただ、私の環境ではこの手順ではうまく動作しなかったため、(ホントはちゃんと適切なグループに権限を絞るべきですが) root
ユーザでドキュメントスキャナを操作しています。
そのため、環境構築手順としては単にVNCとXsaneをインストールするだけとなっています。
VNCをインストールする
リモートからGUI操作を行えるようにするため、まずはVNCをインストールします。必要なパッケージをインストールした後、任意のウインドウマネージャを起動させる設定を ~/.vnc/xstartup
に追記すればOKです。
$ sudo -i pkg_add -v \
bash \
libSM \
libICE \
libX11 \
libXext \
xauth \
xterm \
tigervnc \
ja-sazanami-ttf \
scim-uim \
scim-anthy \
leafpad \
fluxbox
$ sudo -i bash
#
# # ~/.vnc以下にデフォルト設定ファイルを生成させるため、
# # いったんVNCサーバを起動してすぐ止める。
# vncserver :0
# vncserver -kill :0
#
# cat <<_EOF >> ~/.vnc/xstartup
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
export XMODIFIERS=@im=uim
export XIM=uim
/usr/local/bin/mozc start
uim-xim &
exec fluxbox
_EOF
Xsaneをインストールする
次にドキュメントスキャナのGUIフロントエンドであるXsaneをインストールします。こちらも必要なパッケージをインストールするだけでOKです。
$ sudo -i pkg_add -v xsane sane-backends sane-frontends
sane-find-scanner
を実行すると、ドキュメントスキャナの接続状態が確認できます。
$ sudo sane-find-scanner
...
found USB scanner (vendor=0x04a9 [Canon], product=0x1905 [CanoScan], chip=GL847) at libusb:000:002
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
...
また、 dmesg
にも以下のようなログが記録されるので、こちらでもドキュメントスキャナが認識されているかどうかを確認できます。
Apr 22 18:15:59 scanner /netbsd: [ 3145.7506571] ugen0 at uhub0 port 2
Apr 22 18:15:59 scanner /netbsd: [ 3145.7506571] ugen0: Canon (0x4a9) CanoScan (0x1905), rev 2.00/6.03, addr 2
Apr 22 18:16:06 scanner /netbsd: [ 3152.9807598] ugen0: detached
Apr 22 18:16:06 scanner /netbsd: [ 3152.9807598] ugen0: at uhub0 port 2 (addr 2) disconnected
Apr 22 18:16:08 scanner /netbsd: [ 3154.7507948] ugen0 at uhub0 port 2
Apr 22 18:16:08 scanner /netbsd: [ 3154.7507948] ugen0: Canon (0x4a9) CanoScan (0x1905), rev 2.00/6.03, addr 2
Apr 22 18:16:11 scanner /netbsd: [ 3157.4808289] ugen0: detached
Apr 22 18:16:11 scanner /netbsd: [ 3157.4808289] ugen0: at uhub0 port 2 (addr 2) disconnected
Apr 22 18:16:12 scanner /netbsd: [ 3159.2508614] ugen0 at uhub0 port 2
Apr 22 18:16:12 scanner /netbsd: [ 3159.2508614] ugen0: Canon (0x4a9) CanoScan (0x1905), rev 2.00/6.03, addr 2
スキャンしたドキュメントのサイズ調整
ここまででドキュメントスキャナを利用する環境が構築できましたが、スキャンしたドキュメント(画像)は グレースケール+600dpi
でも 4168x5509
の画像サイズで、1枚あたりのファイル容量は 11M
ほどあります。画像の状態で文字が読めれば良いくらいのサイズでよいため、スキャンしたあとに画像を縮小します。
# file img.png
img.png: PNG image data, 4168 x 5509, 8-bit grayscale, non-interlaced
# ls -lh img.png
-rw-r----- 1 root wheel 11M Nov 20 12:16 img.png
画像の縮小はImageMagickの convert
コマンドで行います。この例では、画像サイズを 50%
に縮小しています。
# convert -geometry '50%' img.png converted/img.png
画像サイズも 4168x5509
→ 2084x2755
になり、ファイル容量も 11M
→ 2.4M
と約5分の1くらいまで小さくなっています。ここまでできれば、あとは通常のファイル整理の形でスキャンしたドキュメント(画像)を保管しておくだけです。
# file img.png converted/img.png
img.png: PNG image data, 4168 x 5509, 8-bit grayscale, non-interlaced
converted/img.png: PNG image data, 2084 x 2755, 8-bit grayscale, non-interlaced
#
# ls -lh img.png converted/img.png
-rw-r--r-- 1 root wheel 2.4M Nov 20 13:21 converted/img.png
-rw-r----- 1 root wheel 11M Nov 20 12:16 img.png
まとめ
NetBSDでドキュメントスキャナを使用する手順を紹介しました。OSが更新されると古い機材のサポートは対象外になってしまうことがありますが、NetBSDのようなフリーOSを利用することで、まだ動作するのに家に眠っている機材を活用できそうです。