1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NetBSDAdvent Calendar 2022

Day 13

NetBSDで少し型落ちのドキュメントスキャナを利用してみる

Posted at

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

画像の縮小はImageMagickconvert コマンドで行います。この例では、画像サイズを 50% に縮小しています。

# convert -geometry '50%' img.png converted/img.png

画像サイズも 4168x55092084x2755 になり、ファイル容量も 11M2.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を利用することで、まだ動作するのに家に眠っている機材を活用できそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?