コンピュータ

ヴィノグラードフの整数論入門を裁断・スキャン

このところ,久しぶりに裁断・スキャンをしている。昨年の11月以来だろうか。
もっと良いやり方もあるのだろうが,いろいろな経験と実験の結果,白黒画像の書籍(数学の本は大体これだ)については,ほぼ固まってきた。
今日は,ヴィノグラードフ「整数論入門」(共立全書)の裁断・スキャンのメモ。

共立全書はハードカバー(ハードバウンド)なのに普通のハードカバーと違って,背表紙に直接接着剤でくっついているので,いささか面倒。完全に解体するのなら,カッターでガシガシ切れば良いのだが,カバーの外観を残しつつ解体しようとすると,デリケートな作業を強いられる。

ヴィノグラードル「整数論入門」(共立全書)の裁断1

ヴィノグラードル「整数論入門」(共立全書)の裁断2

ヴィノグラードル「整数論入門」(共立全書)の裁断3

ヴィノグラードル「整数論入門」(共立全書)の裁断4

ヴィノグラードル「整数論入門」(共立全書)の裁断5

裁断が済めば,あとは簡単。少し時間はかかるけれど,600dpiのJPEG画像で読み込むことにしている。ホントは圧縮なしのBMPとか可逆圧縮のPNGが良いのだが,ScanSnapではそれが出来ないので,やむを得ずJPEGで。それを自作のプログラム(OpenCVとImageMagickを利用したC++プログラム)でモノクロに変換する。パラメーターは本の状態で変えるのだが,赤チャンネルのみ抽出してグレースケールにしたあと,High=245, Low=20, Gamma=0.8くらいで変換しThreshold=200あるいはOotsuの手法(自動)にて2値モノクロにし,画像深度1bitでCCITT Fax Group4の圧縮にてTIFF画像として保存。場合によっては,最初に2倍にオーバーサンプリングして1200dpiにする。今回はそれは止めて,600dpiのままでモノクロにした。

600dpiのモノクロTIFF画像をPDFにまとめて,別途スキャン&加工しておいた表紙をつけて,とりあえずは出来上がり。今回はさらにAcrobatのOptimize Scanned PDFを行って,傾き補正をしつつOCRをし,圧縮をCCITT Group4からJBIG2(Lossless)に変更して軽量化した。

WiMAXルーターをW01に機種変した

ちょっと時間があったので,WiMAXのモバイル・ルーターを機種変更した。W01という2月新発売の機種。いままで使っていたのは,DATA08Wというもので,WiMAXと3Gの兼用。これをWiMAX2+とLTEの兼用にしようというもの。DATA08Wはもう3年くらい使っていて,バッテリーの持ちも悪くなっているし,このところWiMAX2+の帯域確保のために既存のWiMAX (WiMAX1と言ったりもするが) の帯域が削られているようで,スピード的にも物足らなくなっているので,そろそろ潮時かなと思った。

W01 WiMAX2+/au 4G LTE(800MHz)

W01はWiMAX1は入らなくて,WiMAX2+のみ。そこがちょっと心配ではあるが,まあ,自分の生活圏なら大丈夫だろうということと,いざとなればLTEがあるし。もっとも,LTEの方は7G制限とかいう鬱陶しいものがあるのではあるが。

良くはわからないのだが,auのiPhoneを使っているとセット物的なオプションがあるらしく,iPhoneの月々の料金が少しではあるが安くなるらしい。それから,WiMAX自体の料金も,DATA08Wの時よりも少しばかり安くなっていた。ということで,機種変だけでなく,月々の料金も安くなって,まずはメデタシであった。というか,正直言って,この手の料金体系ってまったく理解できないのだが。

Mavericksにしたら印刷できるようになった

OSをアップデートすると,何々できなくなった〜というのが良くあるのだが,嬉しいことに逆のことが起こった。以前から何度もトライして結局ダメだったのが,MacBook Airから無線LAN接続によりEPSON PX-605Fで印刷すること。自分じゃどうしようもないと,サポートに電話までしたのだが,ダメだった。あげくの果ては,インストール用のプログラムが,途中でハングアップするという始末。

ということだったのだが,LionからMavericksにアップしたので,もしかしたら,という淡い期待でやってみた。最初はインストール用のプログラム。やはり途中でハングアップする。ダメだこりゃ。

ダメ元で最後のお願い。EPSONのサイトから直接ダウンロードしておいた,インストール用ディスクイメージを開き,EPSON Printer.pkg を直接開き,これでインストールを試みた。Lionの時もやったことあって,ドライバーはインストールされたようなのだが,結局印刷はダメだったのだ。ところが,今回は,あっさりと認識されて印刷に成功!おお,素晴らしい!って,これが当たり前なのだが。

ということで,原因がさっぱり分からないという不満は残るものの,EPSON PX-605F ちゃんと使えるようになりました。

Mavericksにしたら

Mavericksにしたから,というより,Xcode, Homebrew などの開発環境が変わってしまったから,という方が正確なのだが,ともかく,自作のプログラムが動作しなくなった。ちなみに,Homebrewで入れたOpenCVなどを利用してC++で書いた自家用の画像処理プログラム。自炊した書籍を600dpiのカラーJPEGから1200dpiのモノクロTIFFに変換するのに用いている。

まず,そのままターミナルから起動させようとすると,
dyld: Library not loaded: /usr/local/lib/libopencv_core.2.4.dylib というエラー。
よくよく考えると,単にライブラーを探せないという話なので,慌てずにシンボリックリンクを貼り直せが良かったのかもしれない。しかし,開発環境一式をアップデートすることしか頭になかった。結局,何時かはアップデートすることになるので,悪いわけではなかったのだが。

homebrewでbrew doctorとすると,あれこれ古くなっているらしい。そこで,開発環境をアップデートすることにした。MacApp StoreからXcodeの最新版をDLしてインストール。Homebrewもアップデート。そして,OpenCVをhomebrewで入れ直すことに。すると,numpyがないのでインストール出来ないと。そこで,numpyを入れて,brew reinstall opencv として再インストール。

さて,自家用プログラムをビルドしてみる。pkg-configがないよ,とエラー。入れる。Imagemagickがないよ。ん?そんなバカな。あと,boost関係も何か変。

ということで,pkg-config, imagimagick, boost を再インストール。
これで,とりあえずビルドは成功なのだが,実行させるとランタイムエラーが発生。
dyld: Library not loaded: /usr/local/lib/libjpeg.8.dylib

思いつく解決策は2つ。その1。コンパイル時にライブラリーの場所を指定しておく。多分デフォルトと違うのだろう。その2。シンボリックリンクを貼る。どっちにするか,悩ましい。
/usr/local/Cellar/ を探すとあったので,とりあえずリンクを張る。

ln -s /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/

さあ,これで大丈夫かなと思ったら,別のランタイムエラー。libc++abi.dylib: Magick: no encode delegate for this image format `TIFF'

brew reinstall libtiff として,libtiffを再インストールし,brew reinstall imagemagick –with-lib-tiff として,imagemagickもオプション付きで再インストール。これで TIFF もサポートされるはず。

これで何とか動作するようになった。ああ疲れた。

さよならLion

MacBook Air 11インチ(mid 2011)購入以来ずっと使い続けていた OS X 10.7 Lion なのだが,この度卒業することになった。Mountain Lionにもせず,ましてやMavericksとか,と思っていたのだが,Box Syncがまさかのサポート終了(Lionで使えるのは10月31日まで)ということなので。同様のクラウドサービスであるDropBoxは普通に使えるようなので,不満ではあるのだが,Box Syncで無料の50Gを使っている身としては是非もなかった。

ということで,昨日,意を決してMacApp StoreからMavericksをダウンロードしてインストールした。インストールはかなりの時間が掛かった。40分くらいだろうか。インストール終了すると,ブートしてログイン画面になるのだが,ログイン後にiCloudのためにiTunes Store(?)のApple IDのPWD入力を求められた。後にしてもよかったのだが,ままよ,とPWDを入れるのだが,間違っているとハネられる。数回試みた後,あきらめて,次へというボタンを押すのだが,砂時計じゃなくて,なんだっけ,クルクル周るアイコンのままで一向に進まない。ううむ,さっそくフリーズなのか,と不安になる。しばらく待ったあと,諦めて電源ボタンを長押しして強制終了させる。

祈りながら再起動。良かった。普通にログイン出来た。Mac OS X 10.9 Mavericks お初です。ネコ科の名前はMoutain Lionで打ち止めらしく,Mavericksというのはカリフォルニア州の地名とのこと。

とくに不具合もなく,HDDの容量も20GBほど増えたので,良い事ずくめなのかもしれない。メニューバーが半透明で壁紙が透けて緑色になっているのが気に入らないので,とりあえず,ここだけ直した。システム環境設定からデスクトップとスクリーンセイバーに入って半透明をOFFにすればよい。

個人的にはLionのカレンダーのデザイン,スキューアモーフィズムというのかな,実際の手帳とかを模したデザイン,あれが嫌いだったので,iPhoneと同様のフラットデザインに変更になっていたのが嬉しかった。

実家でWiMAX速くなっている

まあ,たまたまかもしれないが。

このくらいのスピードだと,実家で導入しているADSLよりも,はっきりと速いと言える。ただ,実家にWiMAXを導入するには,モバイルルーターでは無線LANの出力が不足している。据置型のWiMAXルーターがあれば,真面目に導入を考えても良い時期かもしれない。

複数のtiff画像をまとめてPDFにする

裁断・スキャンして加工したTIFF画像たちをまとめてPDFにする方法。Acrobatでも出来るが,かなり時間がかかる。また,Windowsの画像梱包(pic2pdf)でも出来るはずなのだが,上手く行かない場合があり,理由も分からない。Macで一番手っ取り早いのはPreviewで読み込んでPDFで保存するというものだが,これだとファイルサイズが増加してしまう。せっかく1bitのモノクロ2値にしてGroup4 FAXの圧縮でファイルサイズを小さく加工したのが台無しになってしまう。

ということで,適当なツールを探していたのだが,UNIX(LINUX)ツールのtiffcpとtiff2pdfを使えばよいことを知ったので,メモ。

たとえば,あるフォルダーにある image001.tiff, image002.tiff, という複数のTIFFファイルをまとめたいとする。まずは,tiffcpを使って,

tiffcp image*.tiff bundle.tiff

とすれば,マルチページTIFFファイル bundle.tiffが出来る。次に,

tiff2pdf -o output.pdf bundle.tiff

とすれば,それが output.pdf というPDFファイルに変換される。

ターミナルからやってみたのだが,あっという間に変換が終わってしまい,処理が速いのに驚く。ターミナルからコマンドラインで出来るというのも,スクリプトで一括処理させるのに都合がよい。

gsdjvuをビルドしてdjvudigitalを使う

[備忘録]Ubuntu上でgsdjvuを自前ビルド&インストールしたのでメモ。

使いたいのは djvudigital というプログラム。djvudigital hoge.pdf とすれば,hoge.djvu が出来上がるというもの。そのためには,DjvuLibre というものを入れる必要がある。

DjvuLibre自体はSynapticパッケージマネージャーから簡単にインストール出来るのだが,これだけではダメ。djvudigitalを使おうとすると,これこれが必要なので,別途インストールしてね,的なメッセージが出てしまう。どうやらライセンス(GPLとかCPLとか)の関係で,GSDjvuというものが同梱できないらしい。その辺の事情はGSDjvuのページに書いてある。そこでGSDjvuのページをざっと読んで,自前でのビルドを試みた。

まずはGSDjvuをダンロードする。現時点での最新版は gsdjvu-1.6.tar.gz で,これを解凍した gsdjvu-1.6 というフォルダーを適当な場所に移動させる。今回は,/home/foo/gsdjvu-1.6 とした。ちなみに foo の箇所は自分のアカウント名に置き換え。そして,その中に BUILD という名前のフォルダーを作る。/home/foo/gsdjvu-1.6/BUILD となる。他の名前でも良いと思うが,BUILDがビルド用スクリプトでのデフォルト名になっているので,あとで名前を入力する手間が省ける。

次に,READMEに従って ghostscriptとフォント関係をダウンロード。ghostscript-8.64.tar.bz2 と ghostscript-fonts-std-8.11.tar.gz を指定のサイトからダウンロードして,/home/foo/gsdjvu-1.6/BUILD/ に置く。これ以外にオプションで,解凍ツールとかJPEG, PNG関係のライブラリーがダウンロードリストに載っているが,システムにある場合は,そちらが最新版だろうから,それを使った方が良いだろうというような事が書いてある。実際,これらはすでにシステムに入れてあるので,今回はパスした。

では,ビルド開始。シェルから /home/foo/gsdjvu-1.6/build-gsdjvu なるスクリプトを起動させる。途中でいくつか質問されるが,YESとかYを選択すれば良い。警告(Warning)がたくさん出るので一瞬あせるのだが,無事にビルド出来たようだ。

最後に,インストール。Makefile とか無いので,手動にて移動ならびにシンボリック・リンクを張る。READMEにはrootでインストールする方法が書いてあるが,UbuntuとかMacってルートが居ないんじゃなかったんだっけ? ということで,sudo を付けて次のように。

# sudo cp -r /home/foo/gsdjvu-1.6/BUILD/INST/gsdjvu /usr/local/lib
# cd /usr/local/bin
# sudo ln -s ../lib/gsdjvu/gsdjvu gsdjvu

これで終了。試しに,大鏡の文庫本を変換したら,15MBあったのが,5MBくらいになった。

今回は,Ubuntu上でビルドしたが,Macでもやってみたいと思う。djvulibreはhomebrewで入れてあるので。

久々の快勝

少し前から,初手 1. d4 を始めているのだが,白なのにいつの間にか主導権を黒に取られてしまい,悔しい思いをしてきた。久々に iPhone の Shredder Chess (強さは1600くらいに設定) に快勝し,おまけに最後はコンビネーション付きだったので,これは記録せねば,ということで iPhone から棋譜を転送。

LaTeX エラー:Runaway argument? File ended while scanning use of \@writefile.

昨日の朝,LaTeX Beamer でプロジェクター用の資料を作っていたときのこと。奇っ怪なエラーに遭遇した。

Runaway argument?
{\headcommand {\beamer@framepages {62} 
! File ended while scanning use of \@writefile.
 
                \par 
l.130 \begin{document}

未定義マクロのためエラーが出て,修正して再コンパイルしたところ,上記のエラーメッセージ。文法的にはエラーはもうないはずなのに。それに,\@writefile とは一体?

発表を数時間後にひかえていたので,焦りまくった。数分後,ふと気がついて補助ファイルをすべて削除したら,エラーはなくなった。つまり,hoge.tex をコンパイルすると,hoge.aux とかが生成されるのだが,これが変になっているために,再コンパイルのときにエラーが出るという仕組みであった。

しかし,エラーのたびにターミナルあるいは,ファインダーから削除するのは面倒である。エディターのTeXShopに,補助ファイルを削除する,というメニューがあれば良いのになあ・・・と思ってあちこち見たら,あった。メニューの編集のところに「作業ファイルを削除する」という項目があったのだ。