いわゆる紙本自炊(手持ちの紙の本をスキャンしてPDFにして電子データとして保持管理)は、従来画像PDFで保存閲覧でした。
このため、タブレットやPCでの閲覧が主で、ツールとしても登大遊さんのDN_SuperBook_PDF_Converterのように、画像を見やすく処理してタブレット等でより見やすくし、使いやすいPDFビューアで閲覧するという運用にとどまっていました。
小説などテキスト主体の電子書籍は、kindleやkoboでも実感できるように、リフロー型の電子書籍なら文字の大きさを自由に大きくしたり小さくしたりして自分が読みやすいようにできる点が、弱視・老視などに効果が高く、また、電子ペーパーなどのより目に優しいデバイスを活用して眼の健康により良い運用ができるようになりますし、大きく重いタブレットを持ち歩かなくても、手持ちのスマホの小さい画面でも快適に読書できます。
jisui2epub は、紙本を自炊して、ScanSnapなどのドキュメントスキャナでPDFにするときに、ドキュメントスキャナの自動OCR機能を利用して、従来PDF検索に利用できることがあるとされてきたOCRテキストを活用し、画像PDFからリフロー型ePubを自動生成するツールを目指して開発をしています。
当初、ScanSnapの自動OCRの精度の低さのため生成されたePubで読書するのは本文が崩れてしまって大変苦痛な状態でした。
ある程度自動修正できそうなところは修正する機能を入れたりしましたが、一番有効なのはスキャンするときスーパーファインモードでスキャンすることでした。
スーパーファインでスキャンしても、ScanSnapのOCRエンジンでは、誤認識がそれなりにあります。
そこで、自炊PDFの画像を、いまどきのAI-OCRの技術を使って高精度に再OCRすることにしました。
色々試して、現在4つのOCRエンジンを利用して再OCRが可能になりました。再OCRしてePub自動生成することで、誤認識は残るものの、それなりに快適に電子書籍として読書ができるようになりました。
再OCRの4つの選択肢は以下の通りです。jisui2epubリポジトリでの現在の自分の実装の結果でしかないとも言えましょう。Vision APIの文末落ちを+DocAIで補強したのが現在自分がある程度快適に読書できると思った経路になります。
#### 得意・不得意
**vision_reocr.py(Google Cloud Vision)**
- ✅ ルビの再現率が最も高い。時代小説の稀用漢字にも強い
- ✅ 二段OCR(極小ルビの回収)・本文ギャップ救済といった作り込みが最も進んでいる
- ❌ 列頭の1〜3文字を丸ごと返さないことがある(→`--gap-rescue` で DocAI が補う)
- ❌ 1文字だけの極小ルビを検出漏れしやすい(→二段OCRで回収)
- ❌ 挿絵ページでジャンク文字を拾うことがある
**docai_reocr.py(Google Cloud Document AI)**
- ✅ **本文の質が最も高い。** 内容レベルの脱落・化けが少ない
- ✅ Vision が検出漏れする極小ルビを自前で拾える
- ✅ Vision と誤り箇所がほとんど重ならない(校正支援に使える性質)
- ❌ **無料枠が無い。** Vision の約2倍遅い
**yomitoku_reocr.py(YomiToku)**
- ✅ 完全オフライン・無料・登録不要。導入が `pip install` 2行で済む
- ✅ ルビが語単位でまとまって返るので誤結合が起きにくい
- ✅ 挿絵ページでジャンクを返さない。信頼度の低い行を `_lowconf.tsv` に記録
- ❌ **非商用限定(CC BY-NC-SA 4.0)**
- ❌ 時代小説で稀用漢字を似た常用漢字に置換する(`鑓`→`鍵` 等)
- ❌ 縦書きの `」` を `一` と誤認する(対策済みだがこのツール側で吸収している)
- ❌ 濁点の脱落が本文に残る(ルビは自動訂正されるが本文には対策が無い)
**ndlocr_reocr.py(NDLOCR-Lite)**
- ✅ 完全オフライン・無料・登録不要で、**さらに商用利用も可(CC BY 4.0)**
- ✅ 本文は Vision と0.7pt差の実用水準
- ✅ 挿絵ページでジャンクを返さない
- ❌ **ルビが弱い(65〜80%)。** 本家がルビの文字を読まない設計のため、 切り出しから自作しており発展途上
- ❌ 時代小説の稀用漢字に弱い(YomiToku と同傾向)
- ❌ 導入が3種の中では一番手間(`git clone` が要る・全角パス不可)
#### 併用という選択肢
`vision_reocr.py --gap-rescue auto`(既定)は、Vision が返さない列頭の断片を検出したページだけ Document AI で読み直して補う。両方の認証を設定しておくと自動で働く(DocAI 課金は欠落ページのみ=きれいな本なら0〜3頁)。
現状色々試しながら開発を進めている所ですが、自分的にはまるでダメな非実用から、個人読書用途に限っては使っても面白いかなというところまで変化してきたので、ここで紹介しておきます。
画像PDFをいくら見やすくしても、リフローテキストの方がずっといいと思われる場合には、面白い選択肢だと思います。まんがや画集や図版を多用した書籍には正直意味のない話ですが、テキスト派にはちょっと面白いよと宣伝しておきます。
コメント