bunkoOCRに愛を込めて ʕʘ‿ʘʔ
📖読み終わるのに10分🕑
プロローグ:bunkoOCRという名の救済
「沼」――それは私たちが愛してやまない領域だ。
ある日、その深淵な沼から突如女神ヘルメス(@lithium03)が現れ、
女神さま「あなたが落としたのは、有料版のAdobe Acrobat Proですか、それとも無料版のAdobe Acrobat Readerですか?」
わたし「いいえ、違います。私が落としたのは、神器bunkoOCRです。」
女神さま「あなたは正直ものですね、実は私はbunkoOCR作った人です。パラメータで沼らせてすみません。今、新バージョンのために改良中なのですが、これはデフォルト一発で通るべきでしょって感じのサンプルがあれば参考にしたいので、教えていただけると幸いです。」
だから、このブログを書かない理由がない。心の底から湧き上がる感謝と、さらに深い沼へ足を踏み入れるためのささやかな提案をここに記す。
第1幕:bunkoOCRとの出会いと私の沼化
bunkoOCRとの最初の出会いは、国立国会図書館デジタルコレクションの黄ばんだPDFを前に、どうしてもテキスト化したいという衝動から始まった。そのプロセスはまさに試行錯誤の連続だったが、その苦労がまた楽しい、至福の時間なのだ。
特に印象に残っているのは、設定パラメーターの調整だ。例えば、リサイズ、鮮鋭化、コントラスト、行の検出限界閾値などを最適化するために、0.05単位で値を変化させ、最適値を探し続ける。その結果、1週間が溶けたこともあるが、それは沼住人にとっては上等な日常である。
「効率を求めない」という哲学が、bunkoOCRを使う中で完全に開花した。むしろ、このプロセスそのものが楽しいのだ。
第2幕:製作者さんへの感謝とリスペクト
製作者の @lithium03さん、まずは心からの感謝を。
あなたがbunkoOCRを作ってくれたおかげで、古書のテキスト化という地味で途方もない作業が「沼」という名のエンターテインメントになりました。
コメントでの「パラメータで沼らせてすみません」という言葉に、私は「それこそが沼住人の喜びです」と声を大にしてお伝えしたい。
もちろん、デフォルトで一発変換ができるなら、それに越したことはない。確かに、自分で裁断してSnapScanした書籍なら、ほぼデフォルトでも完璧。そうなると、もはや沼でもなく娯楽でもなく、単なる退屈な作業へと堕落する、つまらないのだ。まぁ、読書は捗りますがね。
でも、黄ばんで、傾いて、掠れた活字の古書があるから、重箱の隅をつつくような設定沼があり、bunkoOCR使い魔の魂が込められるのだ。
だから今日も私は、国立国会図書館デジタルコレクションの古書PDFという黄ばんだ迷宮に飛び込み、BunkoOCRでその文字を解き放ち、Kindle Oasis第8世代という電子の紙に還元するプロセス――という名の無限地獄を、喜び勇んで進むことができる、本当にありがとうございます。
第3幕:製作者さんへのお願いと提案
コメントの中で「デフォルト一発で通るべきサンプルがあれば教えてほしい」とありましたので、私が沼った代表的なものを掲載しますね。
山手樹一郎 八幡鳩九郎 第1巻(国立国会図書館デジタルコレクション所蔵、なぜか現在は非公開に変更されています)
これをPDFダウンロードして、jpeg変換したものを素材としていますが、ダウンロードの段階で、白黒化しただけのものと、SONYデジタルペーパーDPT-RP1で読むことを想定して、画像調整済み野本2種類を用意した。デジタルペーパーで読みやすい画像がbunkoOCRに良いのかどうか疑問がったので検証した。
まずは、国立国会図書館デジタルコレクションの画像調整機能で、カラー原本を白黒にしただけのPDFをjpegにする段階で600dpiで最高の品質で変換したところ、
1ページの画像ファイルが4.2MBになり、それでも読み取り精度が上がるならいいや、と思ってbunkoOCRにデフォルト設定でかけると、時間がかかったので、期待をしていると、全くダメダメで、こんな感じ↓
こんなのが、延々と続くので、次はSONYデジタルペーパーで読むために、少し漂白したPDFのjpeg変換を207dpiで「最高」品質で書き出して、少し綺麗にしたのが以下、ファイルサイズは788KB
設定のパラメーターはデフォルトで読み取ると、あれ、ちゃんと読めるじゃん
デフォルトでの読み間違い・欠落
月代《さかやぎ》 :き→ぎ
狙おうなどという物な魂胆が :物騒→物
そこでパラメーターを、2pass onにすると、かえって具合が悪くなる
月代《さかやぎ》 :き→ぎ
物騒→物験
魂胆《こんたん》→魂胆《た》
2pass OFF、リサイズを1.0→1.3に増やすと、沼になる
夕|映《ビ》え
月代《さかやぎ》
物騒→物験
魂胆《こんたん》→魂胆《んた》
じゃ、2pass ONに戻して、リサイズを1.0→1.3では?
夕|映《ビ》え
月代《さかやぎ》
物騒→物験
魂胆《こんたん》→魂胆《こんん》
2pass ON, リサイズ1.30, 2pass縮小率0.30では
夕|映《ビ》え
月代《さかやぎ》
物騒→物験
魂胆《こんたん》読めた!
2pass ON, 2pass縮小率0.40, リサイズ1.50, 文字検出閾値0.50
夕映え 読めた!
月代《さかやぎ》これはどうしてもダメ
物騒 読めた!
魂胆《こんたん》読めた!
キリがないので、ルビが読めないくらいはよしとする・・・
なんで207dpiかといえば、SONYデジタルペーパーの画面解像度が207dpiなので、それよりも上げても仕方がないかと思ったのね。
でも、よくよく考えてみると、文庫本の207dpiと、単行本の207dpiと、A4書類の207dpiを、SONYデジタルペーパーで見ると、文庫本でもA4サイズに拡大されてしまうので、文字はけっこうギザギザに見えてしまうのね。
SONYデジタルペーパーで見ると、A4書類の207dpiは拡大されないそのままなので、綺麗に読めるし、単行本の207dpiも少しは拡大されるが、読める解像度と言える。こうなると、このdpiって意味がなくて、読みたい本の実寸を理解して、A4サイズに展開した時に207dpiになるように逆算してあげるのが正確になる、まぁ、やらないけど。それに、そもそも国立国会図書館デジタルコレクションからダウンロードしたファイルは結構大きなページサイズのようなので、207dpiの画像に変換しても大丈夫みたい。
それと、ヘルプファイルに書かれてあった「画像処理の都合上、512ピクセル四方に画像を切って処理します。 そのため、処理する画像に写っている文字の大きさは、おおむね30ピクセル以上で200ピクセル程度の大きさが望ましいです。」を考慮すると、PDFを画像変換する際に、これを逆算してdpiを設定すればいいということかとは思ったが、まだ試していない。
要望というか相談というか確認事項1)
こうやってパラメーターをいじって、試行錯誤を繰り返していると、
OCR結果の画面では、タイムスタンプが並ぶので区別がつかない
しばらくはメモをしていたが、試行錯誤が100回を超えるともはやカオス
そこでResultsフォルダーに格納されいる作業ファイルのnameをテキストエディターで編集して、変更したパラメーターのメモを書き込んでみた
もしかしたら、どこかを見ると、その時のパラメーターがログとして残されているのかもしれないけど、現状では最適条件探索の試行錯誤には、このメモは欠かせない。ログを確認できるのであれば、そこを参照しますし、なければ、このnameファイルのメモ流用を続けたいと思います。
要望というか相談というか確認事項2)
試行錯誤を繰り返して、やっぱりさっきの条件でやり直そうと、メモに従って同じ条件で読み込ませても、結果に再現性がない。これはしばしば起きたことで、特に顕著だったのが、上記の事例でもお見せした「物騒」という文字の読み間違いで、さっきはこの条件で、ちゃんと物騒と呼んだのに、今度は「物験」と読み間違えている・・・あれ? これって正常な動作ですか?
要望というか相談というか確認事項3)
誰かがX(旧Twitter)でYomitokuに関して呟いていたんですが、
この最後の部分の「改行位置を無視して、段落内の文章を連結して返すモードは良い」って、bunkoOCRでは未搭載の機能ですよね?これがあると、出来上がった青空文庫フォーマットのテキストAozoraEpub3でepubにしてS2K(sendToKindle)でKindle お足s第8世代で読んだ時に、文字サイズによって、紙面サイズの都合で勝手に折り返した部分に入っている\n(改行)コードで、Kindle画面でも改行されるので、とっても読みにくい文章になってしまう。これを勝手に連結して、行末での句読点(、。)や行末での鉤括弧(「」)、次の行が鉤括弧(「)で始まる前の行末では、必ず改行コードを入れるという離れ技ができると嬉しいです。現状では、テキストエディターで、工夫しながら手作業で一括処理を試みています、まぁ、もう慣れてきたので、時間はかかりませんが。難しいんですかね?
要望というか相談というか確認事項4)
BunkoOCRの設定画面にある多くのパラメーターについて、公式オンラインヘルプでは十分な解説がない項目が見受けられます(責めているわけではありません)。おそらく、結果に大きく左右するであろう、メインのパラメーターの解説が、あのオンラインヘルプだと思われますし、あのヘルプは舐め回すように何度も読みましたので、かなり役に立っています。そこで、それぞれのパラメーターについて、以下の観点を中心に解説をさらに追加・充実させていただけると、私たち沼ユーザーが試行錯誤を楽しみながらより良い結果を得られると考えます。おそらく、国立国会図書館デジタルコレクションにあるような黄ばんで、傾いて、挿絵が入って、文字が回り込んで、文字の大きさや活字の種類も混在して、を想定していなかったのかもしれませんので、あのオンラインヘルプは、自炊ユーザー(自分で裁断してScanする人たち)には十分過ぎるものです。自炊ユーザーであれば、程度の良い状態の原本から、最高の画質、解像度で画像化することが可能ですから、試行錯誤の幅もあります。
しかし、国立国会図書館デジタルコレクションからのPDFダウンロードで考えなくてはならないのは、PDFの解像度を高めることはできないということ。そして、それだけではなく、つまり画像の品質だけではなく、当時の印刷技術に起因する活字の形や歪み、インクの掠れ、そして経年劣化に伴って活字が薄くなる、これらは単純な画像修正ではどうにもならない部分です。そこまでカバーしてなんとかしろというつもりはなく、そこは沼の住人が楽しく工夫すればいい部分なので、そのためには、bunkoOCRという神器の使い方を、以下の3点で教えてくださると、使いこなせるようになるんじゃないかと思うのです。それは推奨値を教えてもらうことを必ずしも必要としないのです、推奨値は、画像によって異なってくるわけですから。
機能: パラメーターが持つ具体的な役割。
効果: パラメーターを変更した際に予想されるOCR結果や処理内容への影響。
挙動: 値を上げた場合と下げた場合に起こる変化の例。
デフォルト設定の改善にも期待
製作者さんがコメントでおっしゃったように、「これはデフォルトで通るべき」というケースを増やすため、サンプルとして以下を挙げますが、手に入らないということであれば、生のPDFやPDFから変換した画像を別途お送りいたします。
昭和30年代の書籍(国会図書館からダウンロードしたものも、SnapScanしたものも)
黄ばみがひどいが文字が比較的くっきりしている書籍
黄ばみもひどいが、文字もかすれている、ルビも潰れている
挿絵に文章が回り込んでいる小説倶楽部や、読切倶楽部などの雑誌のページ
傾きがあるページ
これらのサンプルを基に、デフォルト設定の改善が進むと、多くのユーザーが恩恵を受けることでしょう。
エピローグ:bunkoOCRと歩む未来
bunkoOCRは、ただのアプリではありません。神器であり、それは沼住人たちにとっての希望であり、学びであり、楽しみそのものです。そして、それを生み出してくださった製作者さんには、改めて感謝を申し上げます。
これからも、設定沼の深淵に飛び込みながら、さらに新しい沼が広がることを期待しています。そして、次回のバージョンアップを楽しみにしています!
「つづく。いや、終わらない。」