PDFで検索ができない理由
PDFは、たまたま体裁が固定されたテキスト形式ではありません。この位置にこのグリフを描け、この矩形にこの画像を塗れ、という命令の並び、つまりページ記述です。ワープロが作ったページは文字を描くので検索できます。スキャナーやスマートフォンのカメラが作ったページは一枚の絵を描くだけで、その絵が何と書いてあるかを知っているものはファイルの中に存在しません。
画面上は見分けのつかない二種類のページ
テキストのページには、フォントと文字コードと座標が入っています。スキャンされたページに入っているのは、たいてい紙一枚をまるごと写した画像がひとつだけで、ほかには何もありません。どちらも文字の並んだページとして描かれ、通常の倍率では区別がつきません。
違いが表れるのは、ページを描くのではなく読もうとしたときだけです。検索、選択、コピー、スクリーンリーダー、データを取り出すプログラム。いずれも文字を必要としますが、スキャンされたページに文字はありません。
数秒で見分ける方法
一行を選択してみてください。単語が強調されず、範囲に矩形が描かれるなら、そのページは画像です。次に大きく拡大します。本物のテキストはフォントの輪郭から描き直されるので、どれだけ拡大しても輪郭が保たれますが、スキャンはピクセルが見えてきます。
ファイルサイズも手がかりです。ふつうのテキスト一ページは数キロバイト程度、スキャンされた一ページは写真なので数百キロバイトから数メガバイトになります。二十ページの文書が四十メガバイトあるなら、見た目がどうであれスキャンです。
コピーすると文字化けするとき
ページにテキストが確かに入っているのに、コピーすると意味をなさない文字が出ることがあります。生成側はフォントの一部だけを埋め込み、グリフに好きな番号を振ることができるので、文字Aに対して保存されている符号はどんな数値でもかまいません。その数値を本当の文字に戻す表は必須ではなく、欠けていたり誤っていたりすると、抽出は忠実に間違った文字を返します。
同じところから生じる小さな現象がふたつあります。合字はひとつのグリフなので、fiやffiが一文字にまとまったり、抜け落ちたりします。そしてPDFには、私たちが思うような空白文字がありません。単語の間隔はたいてい新しい位置へ移動せよという指示にすぎず、抽出したテキストで単語がくっついて出てくるのはこのためです。
語順が入れ替わって出てくる理由
PDFの中に、読む順序を示すものはありません。グリフは生成したプログラムが出力した順に描かれ、二段組みなら左の段の一行、右の段の一行が交互に並ぶこともあります。
そのため、どの抽出器も位置関係から順序を組み立て直します。ヘッダー、脚注、表、傍注は、その推測が崩れる場所です。抽出したテキストが欠けてはいないのに順序が乱れているなら原因はこれで、テキストがまったくない問題とは別物です。
OCRが実際に付け加えるもの
光学文字認識は絵を変えません。画像を読み、文字を推定し、その結果を対応する位置に見えないテキストとしてページに書き込みます。目に見えているのは相変わらずスキャン画像で、検索が見つけるのはその下に敷かれたテキストです。
つまりOCRの品質は、画像とは違って後から動きません。よくある誤認識はその後の検索にずっと残ります。rnをmと読み、大文字のOを0と読み、小文字のlを数字の1と読む、といった具合です。言語の判定を誤るとさらに悪く、アクセント付きの文字や非ラテン文字が、選ばれた文字体系の許す範囲へ押し込められてしまいます。
検索できるはずのPDFでも見つからないとき
解像度がいちばんよくある原因です。認識には印刷面で300dpi程度が必要で、200を下回るあたりから小さな文字の線が互いにくっつき、精度が急に落ちます。斜めから撮った写真には傾きが加わり、傾いた行は文字認識が始まる前の行を見つける段階を狂わせます。
OCRの失敗に見えて実はそうではない場合もふたつあります。文書が暗号化され、抽出を禁じる権限が設定されていると、テキストはあるのにビューアが渡すことを拒みます。また、ページが画像ではなくページ属性で回転していると、テキストの層が目に見える文字と90度ずれた位置に置かれます。
うまくいく作業の順番
まずテキストを抽出して、何が出てくるかを読んでください。それがファイルの中身についての事実です。何も出なければスキャンです。すべて揃っているのに順序が乱れているなら、層が無いのではなく順序の問題です。構造は読み取れるのに文字が違うなら、フォントの対応表が壊れているので、抽出器と格闘するのではなく元の文書から書き出し直すのが直し方です。
スキャンなら、保管庫に入れる前に認識をかけ、原本は残しておいてください。OCRはファイルに書き込まれた推測であり、画像のほうが証拠です。そして手元にある中でいちばん高い解像度で行ってください。先にページを圧縮すると、認識器が必要とするまさにその細部が失われます。