PDF は正しいように見えても、プレーン テキスト エディターに貼り付けると異なる文字が生成される場合は、フォントを変更したり、OCR を実行したりする前に原因を確認してください。ページに描かれた図形とそれが表す文字の間のマッピングが間違っている可能性があります。これらの PDF テキスト エラーを修正するには、プロセスのどの部分が失敗したかを特定することから始まります。
テキストは正しく見えるのに、コピーが正しくないのはなぜですか?
PDF テキスト コンテンツには、Unicode テキストではなく、フォント固有のソース文字コードを保存できます。 PDF リーダーは、フォントとエンコード情報を使用してグリフを見つけて描画します。コピーするには、これらのコードを意味のある文字に変換する必要もあります。
したがって、文字 A を描画しても、抽出で A が返されることは保証されません。 ToUnicode は、PDF ソース文字コードを Unicode 文字シーケンスに関連付けるフォント ディクショナリ内のマッピングです。テキストの表示と抽出のこの区別については、Adobe PDF リファレンス、セクション 5.9 で説明されています。

フォントマッピングとは実際には何を意味するのでしょうか?
これら 3 つの概念は関連していますが、互換性はありません。
| マッピング | 主な役割 |
|---|---|
フォント ファイル内の cmap テーブル | 文字コードをグリフ インデックスにマップします。 Unicode サブテーブルは Unicode コードを使用します |
| PDF エンコーディング。複合フォントは Encoding CMap を使用できます | PDF ソース文字コードを解釈し、描画するグリフを見つけるのに役立ちます |
PDF ToUnicode | コピーおよび抽出のために、PDF ソース文字コードを Unicode テキストにマップします。 |
最初の種類については、OpenType cmap 仕様 を参照してください。ここで説明する修復は 3 番目を対象としています。フォント ファイルを再構築したり、ページ上のグリフを置き換えたりすることはありません。
ToUnicode マッピングが存在しない場合でも、必ずしもテキスト文字化けが発生するわけではありません。 PDF リーダーは、標準エンコーディング、既知のグリフ名、または文字コレクションからテキストを回復できる場合があります。逆に、マッピング テーブルが存在していても、誤った関連付けが含まれている可能性があります。
まずマッピングに問題があるかどうかを確認します
短い文章をプレーン テキスト エディタにコピーし、元のページと比較します。
| 症状 | 最初に確認すること |
|---|---|
| ページは正しく見えますが、コピーされた文字が常に別の文字に変わってしまいます。 | 文字マッピングが欠落しているか正しくありません |
| 選択できるのは画像のみであり、テキストは選択できません | テキストレイヤーが欠落しているか、アウトラインに変換されたテキスト。ソースファイルまたはOCRを検討してください。 |
| スキャンしたページでテキストを選択できますが、画像と一致しません | OCR テキストレイヤーでの認識結果 |
| 個々の文字は正しいが、列またはテーブルの順序が正しくない | 読み上げ順序とレイアウト抽出 |
| ページ自体に欠落した文字またはボックスが含まれています | フォント リソース、グリフ カバレッジ、または表示エンコーディング |
これらはトラブルシューティングの手がかりであり、外観のみに基づいた診断ではありません。フォントの埋め込みと正しいコピーも別の問題です。 PDF フォントの埋め込みとサブセットを参照してください。
コピーしたテキストを元のグリフを使用して修正するにはどうすればよいでしょうか?
特定のフォントのソース コード <0001> は A を描画しますが、誤って 错 (U+9519) にマップするとします。これはマッピングの断片の例であり、完全な CMap ファイルではありません。
Before: <0001> <9519>
After: <0001> <0041>
<0001> は、そのフォントの PDF ソース コードであり、Unicode 文字 U+0001 ではありません。これを U+0041 にマッピングすると、グリフが A を表すことが指定されます。 ligature (1 つのグリフを共有する複数の文字) は、fi など、複数の Unicode 文字にマップする必要がある場合もあります。
マッピング修復が適切であることを確認したら、PDF テキスト修復ツール を使用します。
- PDF を選択し、修正するフォントを選択します。
- グリッド内の元のグリフを比較し、各グリフの下に正しいテキストを入力します。
- 修復した PDF をエクスポートし、比較のために元のファイルを保存します。
同じフォントとソース コードが使用されている場合はどこでも変更が適用されます。 名前が一致する場合でも、個別のフォントを個別に確認してください。 OCR が 1 つの単語だけを誤認識した場合、文字をグローバルに再マップすると、すでに正しいテキストが損傷する可能性もあります。
修理の確認はどうやって行うのですか?
エクスポートされたファイルを再度開き、ターゲットの PDF リーダーでサンプル テキストをコピーして検索します。編集していない同じコードとフォントが他にないか確認してください。最初の間違った文字だけをテストするのではなく、ページの外観を比較し、句読点、合字、数字を検査します。
一部の PDF では、サポート ソフトウェアが好んで使用する置換テキストの提供に ActualText も使用されます。 ToUnicode を変更しても問題が解決しない場合は、このオーバーライドを確認してください。現在のツールは、ActualText について警告しますが、編集しません。 PDF アソシエーションの説明を参照してください。
OCR エラーの場合は、テキスト レイヤーを修正または再認識します。元のレイアウト ファイルがある場合は、それを修正して新しい PDF をエクスポートすることを検討してください。ファイルが開かない、または構造エラーが発生しない場合は、別のアプローチが必要です。 PDF形式の修復が適切な場合を参照してください。
フォント文字マッピングの問題を特定したら、ローカル PDF テキスト修復ツール を使用して修正します。ファイルはアップロードせずにブラウザ内で処理されます。エクスポート後も、コピーされたテキストとページの外観を確認する必要があります。


