非ラテン文字スクリプトの検索可能なPDFでの文字化け
IronOCRを使用して文書をOCR処理し、それを検索可能なPDFとして保存すると、画面上では認識されたテキストが正しく表示されているように見えても、コピーしたり抽出したりすると意味不明になることがあります。 これは、PDFのフォントが認識したスクリプトのグリフを持たない場合に発生します。特に、非ラテン文字や複雑なスクリプトで一般的です。解決策は、スクリプトをサポートするフォントでPDFを保存することです。 以下の例では、グジャラート語を使用しています。
認識されたテキストに対応する文字がないため、OCRがページを正しく読み取っても、コピーされたテキストが文字化けしてしまいます。 ラテン文字専用のフォントでは解決できません: 提供するフォントは、実際に認識したスクリプトをカバーする必要があります。
前提条件
- スクリプト用の言語パックが付いたIronOCR。 この例では
OcrLanguage.GujaratiBestを使用しています。 - 対象スクリプトをサポートするTrueTypeフォント。 この例ではAnekGujaratiを使用しています。これは、Google Fontsから自由に入手可能です。
- そのフォントへの完全なファイルパス。
解決策
1. スクリプトをカバーするフォントを配置する
対象スクリプトのグリフを含むフォントを見つけ、マシンに配置し、その完全なパスをメモします。 グジャラート語の例では:
C:\Path\To\AnekGujarati-VariableFont_wdth,wght.ttf
AnekGujarati変数フォントファイル名にはカンマが含まれているため、正確にコピーしてください。 パスは正確なフォントファイルを指している必要があります。
2. SaveAsSearchablePdfにフォントを渡す
検索可能なPDFを保存するときに、スクリプト対応のフォントへのパスをCustomFontFile(第3引数)として提供します。 第4引数はオプションのCustomFontNameラベルです; 最初はそれを省略すると、IronOCRはフォントファイル自身の名前を使用します:
ocrResult.SaveAsSearchablePdf(
strOutputFile,
false,
@"C:\Path\To\AnekGujarati-VariableFont_wdth,wght.ttf",
"AnekGujarati");
ocrResult.SaveAsSearchablePdf(
strOutputFile,
false,
@"C:\Path\To\AnekGujarati-VariableFont_wdth,wght.ttf",
"AnekGujarati");
ocrResult.SaveAsSearchablePdf( _
strOutputFile, _
False, _
"C:\Path\To\AnekGujarati-VariableFont_wdth,wght.ttf", _
"AnekGujarati")
文字化けした抽出を修正する引数はフォントファイル(第3パラメーター)です:それはあなたがOCRしたスクリプトのグリフを含む必要があります。 第4パラメータは埋め込みフォントのみを命名しており、スクリプトマッピングには影響しません。 別の文書の場合、第3パラメータをそのスクリプトをサポートするフォントに向けます。
3. テキストの抽出を確認する
生成されたPDFを開き、認識されたテキストをコピーして、正しく抽出されることを確認します。 それでも文字化けして表示される場合、提供されたフォントがスクリプトのグリフをほぼ確実に持っていません; そのフォントが実際にカバーしているかを再確認してください。
注釈
- グジャラート語に特有ではない: PDFフォントがカバーしていない場合、ヒンディー語、マラーティ語のデーヴァナーガリー、アラビア語、タイ語、中国語、日本語、韓国語のテキストを含む、非ラテン文字や複雑なスクリプトではコピーされたテキストが文字化けを引き起こす可能性があります。
- スクリプトごとに1つのフォント: 認識したスクリプトを含むフォントを提供してください。 GoogleのNotoファミリーは、Noto Sans Gujarati、Noto Sans Devanagari、Noto Sans Arabicなど、スクリプトごとのフォントが用意されています。

