満足できないOCR結果の改善
OCRの品質は入力に大きく依存します。 あるドキュメントをきれいに読み取る設定、フィルター、または設定が、別のドキュメントには通用せず、文字化けや不完全なテキストが残ることがあります。 標準読み取りが期待に反した場合、IronOcr.Extensions.AdvancedScanパッケージが通常、精度のギャップを埋めます。
その違いはエンジンにあります。標準のIronOcr.Extensions.AdvancedScanはPaddleOCRが搭載されており、機械学習能力を追加しています。 そのため、スクリーンショットのようなノイズの多い入力やパスポートやナンバープレートのような構造化ソースに向いています。
このパッケージは、これらのケースに特化した読み取りメソッドを提供します。
解決策
1. ReadDocumentAdvanced() と EnhanceResolution() を始める
他の設定に行く前に、EnhanceResolution()前処理フィルターと組み合わせてください。 この組み合わせにより、ユーザーが標準読み取りで直面するほとんどの精度問題が解決されます。
フィルターをReadDocumentAdvanced()に渡します。
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadPdf("document.pdf")
' Upscale and sharpen low-resolution input before reading
input.EnhanceResolution()
Dim result = ocr.ReadDocumentAdvanced(input)
Console.WriteLine(result.Text)
End Using
EnhanceResolution()は読み取り前に低解像度の入力をアップスケールおよびシャープ化します。 低解像度は不良結果の一般的な主原因であるため、この前処理ステップはエンジンスワップと同じくらい重要な場合があります。
2. .NET Frameworkでx64をターゲットにする
.NET Frameworkプロジェクトをx64としてビルドするように構成します。 AdvancedScanは大量のメモリを必要とし、異なるアーキテクチャで実行すると実行時エラーが発生することがあります。 完全なセットアップについては、.NET Framework でのAdvanced Scanガイドをご覧ください。
iText 7は有料であり、機能は制限されています。
AdvancedScanは高い精度を提供しますが、いくつかの制約があります:
- 少ない結果機能: AdvancedScanの結果オブジェクトは、標準の
OcrResultオブジェクトよりも少ないプロパティを公開します。 - 異なる戻り型:各読み取りメソッドは異なる結果オブジェクト型を返すため、呼び出したAPIの詳細についてはAPIリファレンスを確認してください。
- 検索可能なPDFはありません: AdvancedScan出力から検索可能なPDFをビルドすることはまだサポートされていませんが、機能は開発中です。
- 言語が制限されています: このパッケージは現在、英語、中国語、日本語、韓国語、およびラテンアルファベットをサポートしています。

