自炊PDFの解像度を新しいiPadに最適化したら、さらにOCRもかけたいんだけど、なかなかうまく行かない、という話です。ちなみに結論は出てません。

(2012年6月16日追記: 解決策ありました。→「Acrobatで傾き補正なしでOCRをかける」)

ChainLPで自炊PDFを第3世代iPadの画素数に最適化すると、解像度はバッチリ、文字はくっきりになりますが、元データにOCRかけていても、その情報はなくなってしまいます。JPEG抽出で、元PDFに埋め込まれた透明テキストが失われてしまうからです。

個人的には、iPadでの読書中にテキストデータが欲しい状況はそんなに多くありません。それでもやっぱり単語をコピーしてEBPocketとかGoogleで意味を調べたいとか、技術系の本をキーワードで全件検索したいなんてことがたまにあって、可能ならテキストを埋め込んでおきたいところです。

が、Adobe Acrobat 9で「OCRテキスト認識」すると、認識前に傾き補正がかかり、かなり画質が低下してしまいます。元ネタが300dpiであればほとんど気にならないレベルですが、新書判をiPadの見開き表示に最適化すると230dpiぐらい、A5判見開きだと180dpiぐらいまで解像度が下がっているので、これが傾き補正されたときの画質低下ははっきり分かります。補正する角度が大きいほど画質低下が激しい気がします。

一方、ScanSnap Organizerにも「検索可能なPDFに変換」というOCR機能があります。こっちだと傾き補正はかからないので、画質の低下はありません。処理速度もAcrobatよりかなり速いです。しかし、肝心のOCRの精度がAcrobatに比べて劣ります。傾き補正が無いだけに、途中に横に寝たページが挟まっていると、その部分だけまるで文字化けのような意味不明な結果になります。また縦書きは苦手のようで、ページ内の透明テキストを全行コピーしてテキストエディタに貼り付けると、行の順番がバラバラになっています。どうやら、各行の出だしのy座標の順番に並んでしまっているようです。さらに致命的なのが、ScanSnapで読み取ったPDFでないと処理できないこと。ChainLPで出力したPDFは、そのままではエラーになり処理してくれません。これは、ScanSnapで何か別の原稿を1ページだけ読み取ったPDFを作っておき、そこにChainLPで作ったPDFを流し込み、最初の1ページを削る、という方法でいちおう回避できますが、PDFが数百もあると、全部をこの方法で変換するわけにもいきません。

理想的には、300dpiのまま傾き補正 → OCR → 任意の解像度にダウンスケール、という処理ができればいちばんいいのですが、何か良い方法はないもんでしょうか……。

※バージョンメモ

  • Adobe Acrobat 9 Standard 9.5.0
  • ScanSnap Organizer V4.1L41