2014年1月12日日曜日

PDFのハイライト注釈部分のテキスト内容を取得する



 電子書籍が普及しつつあり個人的にも読書のメインはそちらに移行しているが、まだまだ対応していない書籍も多く、やむを得ず自炊(裁断・スキャンしてPDF化)したりもする。また、WEB上で公開される文書や各種レポートなど実務で使用する資料はPDF形式が多く、PDFファイルを読む機会はまだまだ多い。

 自炊本やレポートなど長めのPDFを読む際は重要な箇所や印象的な箇所に「ハイライト(ラインマーカー)注釈」をつけながら読んだりする。この機能自体はたいていのPDFリーダーにはあるはず。
 紙の時代にも蛍光ペンを引いたりしたと思うが、デジタルデータであればハイライト箇所に瞬時にたどり着くことが出来るし、間違えたらすぐ消せるし、色も変えたい放題だし、さすがに紙の時よりは便利になっている。

 で、ハイライト箇所の内容(テキスト)を一覧したり、その箇所をまとめてテキストファイルに保存するのも当たり前のように簡単に出来るんだろうと思いきや、意外にそうでもなかったのでまとめておく。(何か大いなる勘違いをしてるんだろうか・・・。)
 


◆ ハイライト箇所の内容の一覧


 PDFを読むツールとしてはAdobeReaderという無償ソフトが代表的なものだろう。Windowsはもちろん、Macや、iOS・Android用のモバイル版も用意されている。
 試しにWin版のAdobeReaderでハイライト注釈をつけてみる。
 
 
 上記の通り、ハイライト箇所が右側の注釈のリスト画面にまとめられ、ハイライト箇所のページ数や日時などが記録される。これらをクリックすれば瞬時にその箇所に移動できる。が、なぜこの画面でそのハイライトを付けたテキストの内容まで表示してくれないのだろうか。
 ハイライト箇所を瞬時に移動できると言ってもページ数と注釈日時だけじゃどこに何が書いてあったのかすぐに分からない。目的の箇所に辿り着くまで1個目のハイライト箇所からクリックしてみるというのもバカバカしい。

 なお、他にもPDF-XChangeViewerやFoxitReaderなど、PDFリーダーは山ほどあり、かなりの数を試したがこれらWin版のソフトはどれもダメだった。(ひとつだけ例外あり)
 

 では、Macではどうだろう。MacのPreview.appならオシャレにこの問題を解決してくれるんじゃないか、そう思い試してみた。
 
 
 最初の3つの注釈はWinのAdobeReaderでつけたもの。やはりテキストは表示されていない。が、次の2つの注釈はPreview.appでつけたもの。ハイライト箇所のテキスト全部ではなく最初の部分だけだが、趣旨的にはギリギリOKと言えなくもない。さすがMacや。と言いたいところだが、やはり縦書の日本語OCRをかけたPDFという条件が悪いのか、ラインマーカーの表示が崩れるというか何というか・・・。
 ちなみに一つ目は「すべてはひとつに通ずる。すべての人に視力を」、二つ目は「アラヴィンドは、専門的で高品質のサービスを無料で~(中略)~産まれる威力を証明するモデルなのだ。」まで引いたのだがこの有り様。雑過ぎるやろ。ウチの3歳の息子でももっと上手に線引けるわ。
 
 
 Win(AdobeReaderほか)がダメ、Mac(Preview.app)がダメ、ときて次はモバイルOSの方だが。結論から言うとこちらはあっさり解決した。まず、Androidの「Moon+ Reader Pro」というアプリ。無償版もあるが、PDFの閲覧機能は有償版のみのようだ。
 こちらのアプリではハイライトをつけるとその箇所が一覧できる。ま、OCRの精度はちょっと置いておくとして・・・。
 
 
 
 もうひとつ、「ezPDF Reader」(Pro版)というアプリでも可能だ。Free(Trial)版やLite版がどうなのかは不明だが多分OKな気はする。が、Androidの「ezPDF Reader」アプリだと、横書きのものは日本語OCRの自炊書籍でもOKだが、縦書になるとダメみたい・・・残念。
 
 iPhoneのアプリでは、まず有名ドコロの「GoodReader」、基本的にハイライト機能はあるものの、それを一覧する画面がそもそも見当たらず。また、通常のPDFなら普通にマーカーを引けるが縦書日本語OCRだとマーカーを引くこともできなかった。昔はさんざんお世話になったアプリだが・・・。
 
 次は「PDF Expert」というiOSアプリ。以前にもちらっと紹介したことがあるが、さすがに優秀でハイライト箇所がその内容とともに一覧できる。が、こちらも縦書日本語OCRが苦手のようでそもそもテキストをしっかり選択できない。横書日本語OCRなら問題ない。ただ基本的にちょっと重い。

 iOS版の「ezPDF Reader」は基本的にOKだが・・・詳細後述。
 

 このように、ハイライト箇所のテキスト取得に関してはモバイル用のアプリの方が優秀なのだが、やはりPCでPDFファイルを見る機会も多いので何とかしたいところ。
 で、先ほど「ひとつだけ例外あり」と書いたが、どうやらAcrobat(Std&Pro)はそういう機能があるらしい。普段AcrobatProを使ってるけどこんあ機能があるなんて全然知らなかったヨ・・・。
 
 
 上の画像の通り、環境設定画面で「選択したテキストをハイライト、取り消し線、下線の注釈ポップアップにコピー(X)」という箇所にチェックを入れるとOKのようだ。実にあっけなかった・・・。
 

 
 これで求めていた機能のひとつはPCでもモバイルでも満たされた。できればAcrobat(Std&Pro)だけでなくフリーのPDFのリーダーで実現したかったが。

====

◆ ハイライト箇所の内容のテキストファイル取得


 次に、そのハイライト箇所のテキスト内容をプレーンなテキストファイルに保存出来るかどうかという点。ハイライトを付ける箇所は重要であり後で見返す可能性が高い部分なので、汎用性の高いテキストファイルという形式でも念のため保存しておきたい。OCRかけたものだと誤認識も多いのでその編集もしたいし。ハイライトをつける度に別途コピペして~というのはナシとして。
 
 例えば、AdobeReaderではハイライト箇所をまとめてfdf形式あるいはxfdf形式で書き出すことが出来る。が、これらのファイルはテキストエディタで開いても文字化けして使いものにならない。(データ量的に、やはりハイライト箇所のテキスト自体は取得できているのだろうか。一覧に表示されないだけで。)
 Acrobat(Std&Pro)だとそれ以外に「Wordに書き出し」という機能があり、これなら楽勝かと思いきや、「PDFがタグ付けされてません」とかいう意味不明なエラーが出てしまう。
 

 
 「注釈の一覧を印刷」や「注釈の一覧を作成」というメニューもあるが、これもちょっと求めてる機能と違う感じ。
 ということでAdobeのツールだけだと無理っぽい。
 ちなみに、MacのPreview.appもハイライト箇所のテキストは表示されるもののそれを一覧にしてテキストファイルとして吐き出す機能はなさそう。
 

 ではモバイルアプリはどうかというと・・・
 「Moon+ Reader Pro」(Android)、「ezPDF Reader」(Android&iOS)、この2つは普通にテキストファイルとしてエクスポート出来る。素晴らしい!!
 最初からこれらのアプリを利用してハイライトを付けたPDFだけでなく、例えばPC上のAcrobat(Std&Pro)でハイライトをつけたPDFでもOK。DropboxやGoogleDriveなどでファイルをモバイル環境へ共有し、これらのアプリで開けばハイライト箇所のテキストファイルを簡単に作成することができる。ということで、こちらの問題も解決。
 ※ iOS版「ezPDF Reader」は、バグなのか現在はDropbox連携はエラーが出て使えず。
 
====

◆ 既ハイライト箇所(非表示)のテキスト取得


 例えば、今までAdobeReaderでハイライトをつけたPDFファルがあるとして、それをAcrobat(Std&Pro)や「Moon+ Reader Pro」などで開いてもハイライト箇所のテキストは残念ながら表示されない。「見えてないだけでテキスト自体は取れてるんでしょ?」とばかりに念のためテキストファイルとしてエクスポートしてみるが、やはりその部分のテキストは保存されない。

 じゃあ今までつけたハイライト箇所のテキストを取ることは出来ないのかというと・・・・iOS版の「ezPDF Reader」なら出来なくもない。Android版だとダメ。
 どういうわけか、iOS版の「ezPDF Reader」のみ、他のPDFリーダーでつけたテキスト非表示のハイライト箇所も表示されるし、もちろんテキストファイルのエクスポートも可能。
 

 
 ただ、iOS版の「ezPDF Reader」自体はAndroid版に比べると完成度も低い感じでバグも多く不安定。必ずしも100%取れるわけではないし、なぜかハイライト箇所のテキストがダブって表示・保存されることもあるので要注意だが。どうしても過去につけたハイライト箇所のテキストを取りたい場合には試す価値はあるかと。
 


 なお、今回サンプルとして使用させて頂いたのは、もはや私にとってバイブルと言っても良い「ビジョナリーであるということ」という書籍。勝手にあちこち引用しちゃって恐縮だが。紙の書籍とKindle版、両方買ったのでなんとか勘弁して欲しい。