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

第71回 レシピデータベースを自炊する[その1]

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

いつの間にか夏至もすぎ,そろそろ今年も半分が過ぎるころになりました。毎年のことながら,この季節になると少しでも部屋を片づけて風通しをよくしたくなります。筆者の場合,まず整理しなければならないのは本棚に溢れている書籍です。

本連載でも何度か書籍の電子化の話題をとりあげたように,SANEプロジェクトが対応しているスキャナを選べば,Linux環境だけで十分自炊が可能で,手元でも蔵書の電子化を少しずつ進めています。もっとも,しっかり綴じられたハードカバー本や数百ページにおよぶ大著はスキャンするのも大変なので,いきおい雑誌や語学テキストの類に手が伸びます。

そのような作業をしている中で「おもしろい使い方ができそうだ」と思ったのが「きょうの料理」のテキストです。今回はそのアイデアを簡単なコードで実装してみた例を紹介しましょう。

「きょうの料理」のテキスト

いうまでもなく「きょうの料理」は,NHKで50年以上に渡って放送されている料理番組です。季節に応じた旬の食材を使い,著名な講師が実際に調理しながらさまざまなレシピを紹介する番組スタイルは高い人気を誇っています。

もっとも筆者自身はテレビを見なくなって久しく,⁠きょうの料理」も実際の番組は見ていません。しかしながら,紹介される旬のレシピは実家の料理屋の参考になるかと思って,番組テキストはここ10年ほど買い貯めていました。

「きょうの料理」のテキスト群

「きょうの料理」のテキスト群

「きょうの料理」のテキストは1冊ずつを見ると薄いものの,毎月発行されるので1年で12冊,数年分も貯まるとずいぶんな嵩(かさ)になります。そこで少し古くなったものから電子化してみることにしました。

1冊150ページ前後のテキストは,手元のScanSnapなら20分もあればスキャンできます。当初は,他の自炊書籍同様,読み取った画像ファイルはzip形式でアーカイブし,"knr-2009_01.zip"のような形で整理していました。しかしスキャンを進めていくうち,⁠きょうの料理」のテキストは「本」というよりは「料理のレシピ集」なので,先頭から順に読み進める必要はないし,むしろ料理名や食材から該当するページを直接引けた方が便利じゃなかろうか,と思い始めました。

もちろん「きょうの料理」には,年単位の連載記事や季節に応じた食材やメニューの紹介,人気講師の特集記事など,単純な「レシピ集」とは異なる,ページの大きなまとまりや読み物的な要素もあります。しかし,各号の末尾には紹介した料理を主要食材ごとに整理した「さくいん」が付きますし,毎年3月号には1年間の「総さくいん」が用意され,食材や講師名から料理を探すことも可能です。 この「さくいん」的な機能を電子書籍に持たせることができれば利用範囲は大いに広がりそうです。

ページをOCRで読み取ってテキストファイル化できれば全文検索も簡単なのになぁ…,と考えてみたものの,⁠きょうの料理」のテキストの場合,1ページ中に料理や手順の写真,食材を示す横書き文章,手順を示す縦書き文章が混在していて,OCRに読み取らせるのも難しそうです。

何かいい方法はないかなぁ…,としばらく考えた結果,⁠レシピ集」に必要なのは料理名食材」⁠あとはその料理の紹介者である講師名ぐらいなものだから,これくらいのデータなら手動で入力しても何とかなるんじゃなかろうか,という気になりました。各ページごとにこれらキーワードを入力したデータファイルさえ用意できれば,指定したキーワードから該当ページを表示するようなシステムを作るのは簡単でしょう。入力は人力なものの「料理名」⁠食材」⁠講師名」ぐらいならそう時間もかかるまい,こんな甘い目論みから「きょうの料理」のデータベース化作業を始めてしまいました(苦笑)⁠

ページごとのキーワード付け

ページ単位でアクセスするにはzipファイルで1冊の形を保つより,各ページを直接読めた方が便利です。そこで,zipファイルにまとめていた画像ファイルを再度展開し,"2009/01/page_001.jpg"のような構成にまとめ直しました。その上で各号ごとに全ページのキーワードをまとめたデータファイルを作ることにしました。

各ページは"page_0100.jpg"のようなファイル名になっているので,まず保存されたディレクトリにある全ページをまとめた雛形ファイルを作ります。

$ cd 2009/01
$ ls page* | sed "s/jpg/jpg: /" > 2009-01.dat
$ cat 2009-01.dat
page_0001.jpg: 
page_0002.jpg: 
page_0003.jpg:
...

次に,comix等のビューワーでそれぞれのページを眺めながら,このファイルに「料理名」⁠食材」⁠講師名」を入力していきます。しばらく入力してみたところ,それぞれの項目を大きくまとめる見出しがあっても便利かな,と思い,⁠美しい味ことば」「冬のお手軽洋風おかず」といった特集名も追加することにしました。

page_0001.jpg: 放送カレンダー
page_0002.jpg: 目次1
page_0003.jpg: 目次2
page_0004.jpg: CM タカラ本みりん
page_0005.jpg: 美しい味ことば 一月 雪花和 しめさば おから
page_0006.jpg: 冬のお手軽洋風おかず
page_0007.jpg: 冬のお手軽洋風おかず
page_0008.jpg: 冬のお手軽洋風おかず 塩田ノア バスク風おかずきんぴら 豚肩ロース ピーマン ごぼう にんにく
page_0009.jpg: 冬のお手軽洋風おかず 塩田ノア バスク風おかずきんぴら 写真
...

最近の横長ディスプレイだと,Emacsと画像ビューワを横に並べて一覧しながら作業できるので便利です。

キーワードの手動入力中

キーワードの手動入力中

当初は,このデータファイルをgrepして該当するページを返すようなスクリプトを書けばいいかと思っていたものの,データファイルが増えるとそれぞれのファイルをgrepして回るのも面倒です。また,検索結果もページ名を返すだけでなく実際にそのページを見れた方が便利だろうと考えて,データベースを利用した簡単なWebアプリとして組んでみることにしました。

著者プロフィール

こじまみつひろ

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

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

コメント

コメントの記入