見出し画像

国立国会図書館デジタルコレクション✖️ BunkoOCR✖️KindleOasis第8世代

📖読み終わるのに8分🕑


無駄の極致、沼の真髄を求める無限地獄

無駄? けっこうじゃないか、上等だ、沼に生きる喜びそのものだ
効率なんて考えるな

タイムパフォーマンス? そんなもの、どこの誰が気にするというのか!
ここにあるのは、結果を追い求める速さや効率や合理性とは無縁の世界。いやむしろ、それらを忌み嫌い、時間というリソースを惜しみなく投じ、無駄の極致を目指す「沼」の哲学だ。

私たちは、結果のために生きているわけではない。むしろ、「その途中でどれだけ苦しみ、どれだけ回り道をし、どれだけ寄り道を楽しむか」
――それこそが、真の目的ではないか。失敗を恐れるな。試行錯誤を笑うな。無駄こそが、学びの原点だ。誤った方向に進むことすら、沼では美徳である。

だから今日も私は、国立国会図書館デジタルコレクションの古書PDFという黄ばんだ迷宮に飛び込み、BunkoOCRでその文字を解き放ち、Kindle Oasis第8世代という電子の紙に還元するプロセス――という名の無限地獄を、喜び勇んで進むのである。

BunkoOCRの設定パラメーターを調整しまくった

結論から先に言うと、BunkoOCRの初期設定でも大抵はうまくいく。

それでも読みきれない時には、凄まじい数のパラメーターを一つ一つ最適値を求めるために、変数をほんの少しずつ変化させて、その違いを検証して、一つのパラメーターの最適値を見つけたら、それで固定して、次のパラメーターの最適値を探していく。例えば、リサイズという画像そのものをピクセル数が増やして読み落としていた文字を読めるようにする機能も、私は、0.05単位で変化させたので、最適値を探すのに40回以上繰り返す羽目になったが、その最適値も、古書の痛み具合と活字の掠れ具合によっては、最適値が変わってくるのだ。そうやって細かな調整が必要なパラメーター全てをいじっていると、1日はあっという間に終わり、1週間がスルッと溶けてしまう、いや、もはや時間という感覚そのものが消失するのだ、意識から。
要は、正しくテキスト化してくれればいいので、多くの本はある程度の最適化で読みこなせる、妥協するか、完璧の沼へ突き進むか、それだけの話だ、もちろん沼へ飛び込むのだ。
山手樹一郎の「八幡鳩九郎」シリーズ全3巻(なぜか国立国会図書館デジタルコレクションから3巻だけを残して1巻と2巻が閲覧できなくなってしまった)などは、黄ばみが少なく良好な書籍だと思えたが、
①活字がひどくカスれて
②微妙に斜めに傾いたページが多く
bunkoOCRパラメーターの設定は、ページ単位で変更しないと、漢字やルビを読み間違えたり、改行を間違えたり、丸っと数行読み飛ばしたり、文章の前後関係が変わっていたりと、カオスなのだ。原文と一文字ずつ読み比べないといけないほどになり、そうやっているうちに1冊読み終えてしまったのだ。結局、この本はKindle読書を諦めた最初の本で、これをPDFのまま読むためにSONYデジタルペーパーまで買う羽目になった諸悪の根源でもある。
その結果として、PDFのまま読むために「SONYデジタルペーパー」という別の沼を掘ることになった。

結論:bunkoOCRのパラメータ設定よりも先に、画像の前処理をするほうが読み取り精度は格段に上がる

古書PDFの前処理という無駄の美学

まず初めに断言しよう。「前処理」は無駄で非効率でタイムパフォーマンスがとことん低い。だが、その無駄を楽しむことが沼の住人にとっての真の目的である。画像処理ツールとして私が愛用しているのは「XnConvert」という救世主(無料だし)。これを使えば、古書PDFを「美しく」「正確に」そして「無駄に丁寧に」甦らせるのだ。

黄ばみを漂白(ブリーチング)する快感

黄ばんだ古書のスキャン画像。それは歴史そのものだ。明治の大正の昭和初期の息吹さえ感じさせてくれる、できればそのまま読みたいくらいだ。しかし、OCRソフトにとっては、ただの「邪魔者」でしかない。ここで国立国会図書館デジタルコレクションの「画像調整」機能でも、充分に漂白ができるので、多くの場合はそれでスッキリ真っ白な下地にくっきりと真っ黒な活字が浮かび上がる。しかし、戦前から1950年代までの本になってくると、その単純な画像調整だけでは漂白が終わらないほど黄ばみ、いや、茶ばみとでもいったほうがいいくらいになってしまっているので、XnConvertの設定で古書に命を吹き込む。

XnConvertには様々な機能があって、どのフィルターやツールを使うのがベストか正解を知らないが、少なくとも私が重宝しているのは、「トーンカーブ」という濃淡を非線形で好きなように自由に調整できる優れもの。国立国会図書館デジタルコレクションの「画像調整」機能でも漂白しきれなかった黄ばみ・茶ばみといった歴史の息吹を白いキャンバスに塗り替えることができる。そのほかにも様々なツールがあるので、お好きなものを選んで試行錯誤したほうがいい。大工道具の鉋(カンナ)の使い方を延々と文章で説明を読んでも使えるようにならないのと同じで、こうしたデジタルツールの正しい最適な使い方を文章で学ぶよりは、自分でいじって試行錯誤するのが、最も早く身につける手段だと思う。

漂白だけでも、一気に「読めない古書」が「読める素材」へと変貌を遂げる。だが、それだけでは終わらない。次が一番厄介だった代物だ。

自動デスキュー:傾きとたわむれる

スキャンされたページの傾き――これがいかに人間の忍耐力を試すものかは、やってみればすぐにわかる。XnConvert自動デスキュー機能を使えば簡単に修正できるので、まずは自動デスキューを試してほしい。大抵の場合は、これでかなり傾きは修正でき、bunkoOCRの認識率は格段に向上する、最初からそうすればよかったと思って、ダウンロードしたすべての山手樹一郎のページ画像は、この傾き補正をかけ直したほどだ。
だが、それでは沼じゃない、味気ないのだ。XnConvert回転機能を使って手動で1ページずつ傾きを調整し、最適な角度を探すのが真の楽しみだ。傾き補正は±1~2度以内で調整し、画面いっぱいに映る縦書き文字が垂直に鎮座した瞬間の喜びは計り知れない。

見開きを引き裂く勇気

見開きの画像――そのままでは、一度に2ページ分を表示するので、それでは文字が小さくてOCRに適さない。それが二段組であれば尚更だ。
いや、画像の状態が完璧であれば、例えば、最近の紙の本を裁断してScanSnapしたような本であれば、二段組でも結構普通に読み進めてしまうのだが、古書ではそうもいかない。ここで必要なのは、ページを上下左右に切り裂く作業だ。ここで便利なのが、Mac用の無料アプリPhotoScapeXだ。画像を縦横自由に2分割でも4分割でも好きな単位で分割して出力してくれる。国立国会図書館デジタルコレクションでは、この分割作業を事前に設定できるが、自分でスキャンした紙の本など、最初から見開き・二段組のPDFや画像しかない場合には、これで単一ページへと切り裂いてあげることで、bunkoOCRの設定で悩んで時間が溶けたことなど嘘のように、スイスイと認識してくれる。

BunkoOCR設定:重箱の隅をつついて魂を込める

次に訪れるのは、BunkoOCRという名の沼(実際には、一番最初にこの設定沼に落ちたのだが)ここでの設定は、まさに重箱の隅をつつく行為の連続だ。これも、文章を読めば一発でわかっちゃう黄金律の設定方法があるわけではなく、自分で沼って試行錯誤してほしい。そもそもbunkoOCRは、設定パラメーターの全てを詳細に解説したマニュアルが存在しない(ヘルプマニュアルがあるだけ、自分で綺麗な本を裁断してスキャンするなら十分に役に立つ

  • 文字を浮き立たせる

    • リサイズ:文字が小さい場合は1.2~1.5倍に拡大。拡大しすぎると処理速度が上がるので少なめが嬉しい。小さすぎると当然、読み取りミスが増える。

    • ガウスぼかし半径:ノイズを抑えるため0.5~1.0。ぼかしすぎれば文字が消え、足りなければノイズに文字が埋もれる。あまり使わないで済ませたい

    • 鮮鋭化強度/半径:0.8程度が目安。鮮鋭化しすぎると文字が硬くなり、逆に認識が甘くなるジレンマ

    • コントラスト:+0.5~+1.0。文字がページに浮き上がるような効果を生むが、これは国立国会図書館からダウンロードする前に済ませておいたほうが無難。あるいはScanSnapの読み取り設定で試行錯誤したほうがいい。下地が真っ白であるよりも、文字がくっきりはっきりとしたほうがbunkoOCRには読みやすいようだ。

  • 精度を極限まで高める

    • 2pass OCRオンにすることで精度が飛躍的に向上する。ただし処理時間は倍増するので、時間を忘れる覚悟を決める。その間は読書に充てるのだ。私は、これで随分助かっているが、誤認識や未認識で困っていなければ使わないので、通常はOFFでも良いかと。

    • タイルの重なり:0.3~0.5で設定。これにより隣接する文字列の読み取りミスを軽減してくれる、昭和初期の古書だとお世話になることも出てくる
      PDF dpi:300~400 dpiが推奨値。Kindle用なら300で十分だが、沼の住人は400を試さずにはいられない。あまり使ってないが。

  • 処理閾値:精緻な微調整

    • 文字検出閾値:0.4~0.6が基本。黄ばんだ背景を考慮しつつ、文字を確実に拾える値を探す。低コントラストの画像では値を上げる必要があるが、こうコントラストに前処理してるので不要かも。

    • ルビ閾値:0.4~0.5。ふりがなの認識を最適化するが、古書だとPDFの品質が悪く、解像度も低く、そもそも原本の印刷が潰れていて、かなり苦戦する。やはり前処理の方が効果的だ。

    • 空白検出閾値:20~30でページの余白を削り、文字列だけを強調。

  • 文の検索:テキストを解き放つ

    • 無視する文字の方向 横書き

    • 行の検出閾値 いじったことがない

    • 文の方向 縦書き

    • 行の切断検出閾値1〜3(ここは、見開きのままや二段組のままOCRかける時には微調整が必須で試行錯誤するしかないが、このあたりはヘルプマニュアルに簡単な解説があるので一度読むといい)

    • 連結する行間隔 二段組の認識と分離に有効だが、これで苦労するくらいなら、二段組ページなんて上下に2分割した方が早い

    • 小さい文字のブロックを無視する ON

    • 小さい文字のブロックの閾値(ここをいじるよりも、最初から画像をトリミングして、ページ番号など、読み込ませたくないものは、トリミングしておくほうが試行錯誤しなくて済む)

そしてKindleへ:結果よりもプロセスを愛せ

処理を終えたテキストは、青空文庫形式に変換され、AozoraEpub3でepubファイルとなる。そのepubをSendToKindleでKindle Oasis第8世代に送り、最終的にベッドの上で読む。これで「完成」――といいたいところだが、実際には違う。完成なんて概念はこの沼には存在しない。(紙の本を裁断した場合には、ほぼ誤字脱字はなく、そのまま改行位置だけを確認して、直ぐにKindle本へと製本できる、つまりこうした事後編集は、国立国会図書館デジタルコレクションだけに発生するといってもいい。

  •  誤字・脱字があれば校正する。

    • 特に古書のルビは間違えやすい

    • 鉤括弧「」を読み抜かすことがある、なくても読めるが、イラッとするよね

  • 行単位で、認識ミスがあれば再設定するより、画像そのものを綺麗にするほうが早い

  • さらに良い設定が見つかれば、すべて最初からやり直す

この無限ループこそが沼の本質であり、真の楽しみだ。
効率?
タイムパフォーマンス?
そんなものは、沼の中では無意味だ。

もう読書なんかしている暇はない。

結果ばかりを求めることは愚かだ。むしろ、「いかに遠回りをするか」「いかに無駄を楽しむか」――それこそが、沼住人の哲学である。試行錯誤を楽しみ、間違いを愛し、無駄の中で生まれる閃きや発見に歓喜狂喜乱舞する。もはや楽しみは読書よりも、読書にまで至るプロセスになっている。

だからこそ私は、今日も国立国会図書館デジタルコレクションのPDFと格闘し、BunkoOCRの設定に心血を注ぎ、Kindle Oasis第8世代での読書を夢見る。
プロセスこそが、私にとっての至高の読書体験なのだ。

次回は、さらに深い沼――BunkoOCRの知られざる設定の裏技に迫る……かもしれない。

つづく。いや、終わらない。

いいなと思ったら応援しよう!

Atsu1166
この記事を読んで、支援したいなと思っていただいたみなさま、このブログは自分のヒラメキの備忘録みたいなものですから、金銭的な支援よりは、いいねやスキ♥️ボタンを押したり、SNSでシェアいただいたり、フォローしてもらえた方がはるかに嬉しいのです。 是非リアクションをお願いしますね♪

この記事が参加している募集