オンライン書籍に目覚めたら全ての資産をPDF化して管理／検索したくなった

# オンライン書籍の光明

私は生まれてこの方、あまり本を読んできませんでした。

全く読んでこなかったわけではないのですが、紙はかさばり狭い家を圧迫するし、引っ越しとなれば人間の腰が標的になり、読まない本になれば人間の罪悪感を苛む根源となります。3,500円で買った本がメルカリで送料込900円でも売れない時は色々なものを呪いたくなります。
ドリコムアワードの特別賞で頂いた「**まつもとゆきひろ先生のサイン入り❗Ruby on Rails本**」もRubyバージョンが古くなって陳腐化しても勿体なくて捨てられずに積んだままです。

しかし、今年（2020）の年始にひょんな広告メールを受け取ってから、非常にオンライン書籍が気になるようになりました。その広告は「オンライン書籍すべて半額50%オフチケット！」というものでした。その時はどんな本があるのか確認しただけで手を出さなかったのですが、夏になってまた同じチケット広告が送られてきて遂に手を出してしまうことになったのです。

そのメリットは言わずもがなとは思いますが、以下のようなものになっていると思います。

1. かさばらない　👉そのため狭い家は**`圧迫されず`**、引っ越しの時に**`腰も痛くならない`**。捨てる必要も**`無い`**。
2. 安く手には入ることがある　👉今回の50%オフチケットのように電子データならではの**`大幅な値引きが`**あります。
3. 読みたい時に読める　👉PC/Mac/iPadをいじっていて、ふと読みたくなったら**`その場で読み始められる`**手軽さ。
4. 検索出来る　👉デジタルデータなので**`検索に有利`**です。

そんなこんなで、技術書メインですが数週間のうちに10冊近く購入してしまいました。ただ、まだ1冊しか読み終えてないのですが……。

# オンライン書籍の「闇」

では、メリットばかりかというと実はデメリットもあることが分かってきました。

1. 色々なディストリビューションがあり、メカニズムもまちまち。出来るだけ安いところで買うことばかり気にしていると異なるディストリビューションに分散して本が溜まっていくことに　👉PDFだったり、**`独自アプリ`**だったり（honto, Kindleなど）
2. PDFではないディストリビューションだと、**`検索出来ないものも`**（例えばdマガジン）
3. PDFではないディストリビューションだと、フォルダに一括管理して、**`フォルダ内を一括検索❗`**というやりたかった事が**`出来ない`**。
4. PDFではないディストリビューションだと、ディストリビューターが倒産した時に**`データを回収出来ない可能性`**がある。

結局、利用者のことを考えたら**本来は全てPDFで配布すべき**ではないかと思います。実際「[翔泳社＝SE Book](https://www.shoeisha.co.jp/book)」では出来ているのだから出来ない事は無いだろうと思うのですが、出来ていないディストリビューターが多いのです。

独自のアプリ（プラットフォーム）を展開してまで「PDFで配布しない理由」は何でしょうか。
1. 恐らくですが不正にネットなどにアップされたり拡散されるリスクを防ぐ目的があるかもしれません。
2. **自社プラットフォームへの束縛**（所謂ロックダウン）「1つのディストリビューションで統一して購入しておいた方が何かと楽だ」と思わせてしまえば思、そのディストリビューターの思うつぼというわけです。

# それでも諦められない一括検索への道

PDFで配布されているディストリビューションもあるわけですから、他の電子書籍も併せて、どうしても「フォルダに一括管理して、フォルダ内を一括検索❗」がしたいという方も居るのではないかと思います。100冊ある本から「Thymeleaf」を検索してFinderから一発参照出来る世界があってこそ安心して「**`オンライン書籍をバンバン買おう`**」という購読者心理が働くというものです。

そこで、どんな書籍でも一度は読むという前提に基づいてどんなリーダーのデータもPDFに落とし込むワークフローを考えてみました。
私のメイン環境となるMacをベースに勝手に考えておりますので、Windowsベースの方や、登場するアプリをお持ちでない方は参考までと言うことでご了承下さい。Windowsで同様のことを実現するとしたら個人的にはUWSCでスクリプトを組むと思います。
また、より便利に電子書籍が進化することで、書籍の流通量向上や出版業界の活性化が実現されると信じておりますが、こちらの方法はあくまで技術的な可能性を探るための検証として検討してみたものに過ぎません。万が一、実際に実践される場合は自己責任にてお願いいたします。

### Better Touch Toolを使って読み進めながらキャプチャ

どんなリーダーを使っていても、たいがい読み進む時は**`→`**キーまたは**`←`**キーを使うため、**`Alt + →`**キーまたは**`Alt + ←`**キーで画面の特定の範囲をキャプチャーしていく事にします。
これで、一回読んだ本はPDFとして検索可能になるため、***買ったきり放置せずに一度は目を通しておこうというモチベーション***にも繋がります。

これを実現するのに最適なのはBetter Touch Toolです。特定のアプリ上でのキー操作に特定のアクションを割り当てられる便利ツールです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/d1940e2b-6588-810c-94fe-009d43f97f0d.png)
まずは、対象となるリーダーアプリに対してキーボードショートカットを割り当てます。予告通り**`Alt + →`**キーおよび**`Alt + ←`**キーに同じアクションを割り当てることになります。アクションは以下の4つを順番に実行するように割り当てます。

1. 対応するキー**`→`**キーまたは**`←`**キーを実際に押下するアクション。
2. スクリーンショット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/c7563d4e-8582-5f78-17aa-ca40176fd4cb.png)
このアクションには複数の属性を定義出来るようになっています。リーダーには大概アプリの「枠」があって邪魔になるので適当にクロップする範囲を指定します。それから矢印キーを押してページ送りされてからキャプチャして欲しいので適当にウェイトを入れます（ここでは1.06seconds）

3. 端末コマンドの実行（同期、ブロック）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/a17415b6-864e-c661-f4dd-3d2cee4928a0.png)
キャプチャが完了するまで、ターミナルで少し待たせます。

4. HUDオーバーレイを表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/47f7ca48-6700-a2df-4233-cf4c65949fba.png)
ちゃんと動作していることを確認する意味でHUDオーバーレイを表示します。


### PNGからPDFを作成

全てのPNGが出揃ったら、Finderで全てのPNGファイルを選択し**クイックアクション**から**PDFを作成**を選べばPDFファイルのできあがりです。この時点ではテキストOCRが掛かっていない状態なので適当な方法でOCRを掛けます。PDFに対してOCRを掛けてテキスト情報を付加する方法は一般的な要件なので色々と情報やツールが存在しているのではないかと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/b97b76d6-cf7f-d4bf-376b-a562a80c30f8.png)

### 2ページひと組でキャプチャした場合

2ページひと組でキャプチャした場合は、そのままPDFにすると縦長の紙に横長の画像が貼り付けられた奇妙な状態になってしまいます。そんな場合は、PDFにする前にいったん**クイックアクション**から**反時計回りに回転**をしてからPDF化します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206965/47c5768b-c5c5-1e3f-4e6c-271e0d5d5d4a.png)

PDFが出来上がったら、今度は***プレビュー***で当該のファイルを開き、前ページを選んだ上で**`Altキー`**＋**`回転ボタン`**をすれば完成です。特に技術書好きな方にとっては、全ての本を縦断的に検索出来るかもしれないと思っただけでもっと本を買いたくなるのではないでしょうか。

実際に試していないので全ファイル検索の世界を実現出来た！　という訳ではないのですが、近いところまでは行けそうな気がしています。それだけでも電子書籍に財布のひもが緩んでしまう今日この頃です。

# MacのOCRツールについて

コメント欄にてご要望を頂いたので、MacのOCRツールについて幾つか試したものをご紹介しておきます。
私が過去に試したものは残念ながら基本的には有料ソフトウェアとなりますが、ご参考になれば幸いです。下記の何れもMac（少なくともIntel）およびWindowsに対応しています。

1. [Acrobat Standard DC](https://acrobat.adobe.com/jp/ja/acrobat/acrobat-pro.html "Acrobat Standard DC")

言わずと知れたPDFを作ったAdobeの純正ソフトウェアです。性能はお墨付きとはいえ兎に角 高いので個人で個別に購入することは少ないのではないでしょうか。私は、古いScanSnapにバンドルされていたものを使っていました。何世代か購入したので、都度Windows版とMac版を選んで両方使った経験があります。ScanSnapの売却時にライセンスも譲渡しているため現在は使っていません。

2. [ABBYY FineReader](https://pdf.abbyy.com/ja/ "ABBYY FineReader")

こちらは最近（2020年現在）のScanSnapにバンドルされているOCRソフトウェアです。中国製ながら馬鹿にする事なかれ、かなりOCR精度が高く感心します。しかしながら、ScanSnapでスキャンしたPDFしかOCRを掛けられないように制限が設けられており、本記事のように独自に作成したPDFにOCRを掛けることが出来ません。
それをするには、新規に個別ライセンスを購入する必要があります。

3. [pdfelement](https://pdf.wondershare.jp/ "pdfelement")

こちらも中国製のソフトウェアでちょっと手を出すのがはばかられるやも知れませんが、PDFに関する様々な機能を保持しているだけでなく、追加のアドオンとして前述のABBYY OCRを追加出来るようになっており、合わせた金額があまり変わらないか寧ろ安い（ブラックフライデーなどでは半額になっていたと思います）ので、私はこちらのpdfelement＋ABBYYアドオンの組み合わせで使っています。
不具合も若干あり、サポートに問い合わせても中国人の方が日本語でメール対応してくださるのですが拉致が明かずという事が何回かありました。それでも、コストパフォーマンスの高いソフトウェアだと思います。

※ 因みに、過去に遭遇している不具合は「PDF圧縮機能を使ってもほとんど圧縮されない場合がある」「虫食いになっているはずの空欄に解答編用と思われる文字が印刷されてしまう」といったものでした。