IronOCRを使ってC#でテキストを画像としてハイライトする
IronOCRのHighlightTextAndSaveAsImages メソッドは、検出されたテキストの周りにバウンディングボックスを描画してOCR結果を可視化し、これを診断画像として保存することで、開発者がOCRの精度を検証し認識問題のデバッグを行えるようにします。
OCR結果を視覚化するには、エンジンが画像内で検出した特定のテキスト要素の周囲にバウンディングボックスをレンダリングする必要があります。 このプロセスでは、個々の文字、単語、行、または段落の正確な位置に明確なハイライトを重ね、認識されたコンテンツの明確なマップを提供します。
この視覚的なフィードバックは、OCR出力精度のデバッグと検証に不可欠であり、ソフトウェアが何を識別し、どこでエラーを起こしたかを示します。 複雑な文書を扱うときや、認識に関する問題のトラブルシューティングを行うときには、視覚的なハイライトが不可欠な診断ツールとなります。
この記事では、IronOCRの診断能力をHighlightTextAndSaveAsImages メソッドを用いた方法で示します。 この機能は、テキストの特定の部分をハイライトし、確認のために画像として保存します。 文書処理システムの構築、品質管理対策の実施、OCR実装の検証のいずれにおいても、この機能は、OCRエンジンが検出した内容を即座に視覚的にフィードバックします。
このスニペットはIronOCRの使い方を示しています: PDFを読み込み、文書内の各単語をハイライトし、結果を画像として保存します。 たった1行で、OCR結果の視覚的なフィードバックが得られます。
-
1Install IronOCR with NuGet Package Manager
-
2このコード スニペットをコピーして実行します。
new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word);C# -
3実際の環境でテストするためにデプロイする
今日プロジェクトで IronOCR を使い始めましょう無料トライアル
最小限のワークフロー(5ステップ)
- ページ回転を検出するためのC#ライブラリをダウンロードする
- OCRエンジンをインスタンス化する
LoadPdfでPDF文書を読み込むHighlightTextAndSaveAsImagesを使用してテキストセクションを強調し、画像として保存します
テキストをハイライトして画像として保存するには?
IronOCRでテキストをハイライトし、画像として保存することは簡単です。 既存のPDFをHighlightTextByType メソッドを呼び出してテキストのセクションをハイライトし、画像として保存します。 この技術では、OCRの精度を検証し、文書内のテキスト認識の問題をデバッグします。
メソッドは3つのパラメータを取ります:IronTesseract OCRエンジン、出力ファイル名のプレフィックス、およびResultHighlightTypeからテキストをハイライトする種類を指示するenum。 この例は、HighlightTextAndSaveAsImages
この例では、3段落のPDFを使用しています。
入力PDFはどのように見えますか?
どのようにハイライトコードを実装しますか?
以下のコード例は、OcrInputクラスを使用した基本的な実装を示しています。
using IronOcr;
IronTesseract ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph);Imports IronOcr
Dim ocrTesseract As New IronTesseract()
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("document.pdf")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph)
End Using出力画像は何を示していますか?

上の出力画像に示すように、3つの段落はすべて薄い赤枠でハイライトされています。 この視覚的な表現により、開発者は、OCRエンジンが文書をどのように読みやすいブロックに分割しているかをすばやく識別することができます。
さまざまな ResultHighlightType オプションは何ですか?
上記の例ではResultHighlightType.Paragraphを使用してテキストブロックをハイライトしました。 IronOCR はこの列挙型を通じて追加の強調表示オプションを提供します。 以下は、利用可能なタイプの完全なリストで、それぞれ診断の目的が異なります。
文字:OCRエンジンによって検出されたすべての文字の周囲にバウンディングボックスを描画します。特に、カスタム言語ファイルで作業するときに、文字認識や特殊なフォントのデバッグに便利です。
単語: エンジンによって識別された各単語をハイライトします。特にBarCodeおよびQR読み取りをテキスト認識と一緒に実装する場合に、単語の境界と適切な単語の識別を検証するのに最適です。
行: 検出されたすべてのテキスト行をハイライトします。スキャンした文書を処理するときなど、行の識別検証が必要な複雑なレイアウトの文書に便利です。
段落:段落としてグループ化されたテキストブロック全体をハイライトします。テーブル抽出で作業するときに特に便利です。ドキュメントのレイアウトを理解し、テキスト ブロックのセグメンテーションを確認するのに最適です。
異なるハイライトタイプを比較するにはどうすればよいですか?
この包括的な例では、同じドキュメント上ですべての異なるタイプのハイライトを生成することを実演しており、結果を比較することができます:
using IronOcr;
using System;
// Initialize the OCR engine with custom configuration
IronTesseract ocrTesseract = new IronTesseract();
// Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = false; // Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
// Load the PDF document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
// Generate highlights for each type
Console.WriteLine("Generating character-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character);
Console.WriteLine("Generating word-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word);
Console.WriteLine("Generating line-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line);
Console.WriteLine("Generating paragraph-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph);
Console.WriteLine("All highlight images have been generated successfully!");Imports IronOcr
Imports System
' Initialize the OCR engine with custom configuration
Dim ocrTesseract As New IronTesseract()
' Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = False ' Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
' Load the PDF document
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("document.pdf")
' Generate highlights for each type
Console.WriteLine("Generating character-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character)
Console.WriteLine("Generating word-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word)
Console.WriteLine("Generating line-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line)
Console.WriteLine("Generating paragraph-level highlights...")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph)
End Using
Console.WriteLine("All highlight images have been generated successfully!")複数ページのドキュメントはどのように扱えばよいですか?
複数ページのPDFや複数フレームのTIFFファイルを処理する場合、ハイライト機能は自動的に各ページを個別に処理します。 これは、PDF OCR テキスト抽出ワークフローを実装する場合に特に役立ちます:
using IronOcr;
using System.IO;
IronTesseract ocrTesseract = new IronTesseract();
// Load a multi-page document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("multi-page-document.pdf");
// Create output directory if it doesn't exist
string outputDir = "highlighted_pages";
Directory.CreateDirectory(outputDir);
// Generate highlights for each page
// Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract,
Path.Combine(outputDir, "page_"),
ResultHighlightType.Word);
// Count generated files for verification
int pageCount = Directory.GetFiles(outputDir, "page_*.png").Length;
Console.WriteLine($"Generated {pageCount} highlighted page images");Imports IronOcr
Imports System.IO
Dim ocrTesseract As New IronTesseract()
' Load a multi-page document
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("multi-page-document.pdf")
' Create output directory if it doesn't exist
Dim outputDir As String = "highlighted_pages"
Directory.CreateDirectory(outputDir)
' Generate highlights for each page
' Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract,
Path.Combine(outputDir, "page_"),
ResultHighlightType.Word)
' Count generated files for verification
Dim pageCount As Integer = Directory.GetFiles(outputDir, "page_*.png").Length
Console.WriteLine($"Generated {pageCount} highlighted page images")
End Usingパフォーマンスのベストプラクティスは何ですか?
ハイライト機能を使用する場合は、以下のベストプラクティスを考慮してください:
1.ファイルサイズ: ハイライト画像は、特に高解像度のドキュメントの場合、サイズが大きくなる可能性があります。 大きなバッチを処理する場合は、出力ディレクトリの空き容量を考慮してください。 最適化のヒントについては、高速 OCR 設定ガイドを参照してください。
2.パフォーマンス:ハイライトの生成は、処理のオーバーヘッドを追加します。 ハイライトがたまにしか必要とされない本番システムでは、メインのワークフローの一部ではなく、別の診断プロセスとして実装してください。 バッチ処理には、マルチスレッドOCRの使用を検討してください。
3.エラー処理:ファイル操作の際には、常に適切なエラー処理を実装してください:
try
{
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
// Apply image filters if needed for better recognition
ocrInput.Deskew(); // Correct slight rotations
ocrInput.DeNoise(); // Remove background noise
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word);
}
catch (Exception ex)
{
Console.WriteLine($"Error during highlighting: {ex.Message}");
// Log error details for debugging
}Imports System
Try
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("document.pdf")
' Apply image filters if needed for better recognition
ocrInput.Deskew() ' Correct slight rotations
ocrInput.DeNoise() ' Remove background noise
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word)
End Using
Catch ex As Exception
Console.WriteLine($"Error during highlighting: {ex.Message}")
' Log error details for debugging
End TryハイライトはOCR結果とどのように統合されますか?
ハイライト機能はIronOCRの結果オブジェクトとシームレスに連携し、視覚的なハイライトと抽出されたテキストデータの関連付けを可能にします。 これは、認識されたテキストの特定のセクションをtrack OCR progressまたは検証する必要がある場合に特に有用です。 OcrResultクラスは、検出された各要素についての詳細情報を提供し、このメソッドで生成された視覚的なハイライトに直接対応します。
問題が発生した場合はどうすればよいですか?
ハイライト機能で問題が発生した場合は、一般的なトラブルシューティング ガイドを参照してください。 特定のハイライトに関する問題
- 空白の出力画像: 入力ドキュメントに読み取り可能なテキストが含まれており、OCRエンジンがドキュメントタイプ用に適切に設定されていることを確認してください。 画像最適化フィルターまたは
fixing image orientationを適用して認識を改善する必要があるかもしれません。 - Missing highlights: ドキュメントの種類によっては、特定の前処理が必要な場合があります。 画像フィルターまたは
fixing image orientationを適用して認識を改善してみてください。 - パフォーマンスの問題: 大規模なドキュメントの場合、
multithreadingを実施することを検討して処理速度を向上させましょう。 さらに、質の低い入力で作業する場合は、低品質スキャンの修正に関するガイドを確認してください。
本番デバッグにはどのように使用できますか?
ハイライト機能は、優れた生産デバッグツールとして機能します。 abort tokens for long-running operations や timeouts と統合すれば、堅牢な診断システムを構築できます。 アプリケーションにデバッグモードを実装することを検討してください:
public class OcrDebugger
{
private readonly IronTesseract _tesseract;
private readonly bool _debugMode;
public OcrDebugger(bool enableDebugMode = false)
{
_tesseract = new IronTesseract();
_debugMode = enableDebugMode;
}
public OcrResult ProcessDocument(string filePath)
{
using var input = new OcrInput();
input.LoadPdf(filePath);
// Apply preprocessing
input.Deskew();
input.DeNoise();
// Generate debug highlights if in debug mode
if (_debugMode)
{
string debugPath = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_";
input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word);
}
// Perform actual OCR
return _tesseract.Read(input);
}
}Public Class OcrDebugger
Private ReadOnly _tesseract As IronTesseract
Private ReadOnly _debugMode As Boolean
Public Sub New(Optional enableDebugMode As Boolean = False)
_tesseract = New IronTesseract()
_debugMode = enableDebugMode
End Sub
Public Function ProcessDocument(filePath As String) As OcrResult
Using input As New OcrInput()
input.LoadPdf(filePath)
' Apply preprocessing
input.Deskew()
input.DeNoise()
' Generate debug highlights if in debug mode
If _debugMode Then
Dim debugPath As String = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_"
input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word)
End If
' Perform actual OCR
Return _tesseract.Read(input)
End Using
End Function
End Class次はどこに行くべきですか?
ハイライト機能の使い方は理解できたと思います:
- OCR結果から検索可能なPDFを作成する
- パスポートや免許証のような特定の文書タイプを読む。
- スタートガイドを使って開発環境にIronOcrをセットアップする。
- グローバルアプリケーションのための125の国際言語サポートの実装
- フィルタウィザードを使って画像処理を最適化する
本番環境で使用する場合は、ライセンスを取得することを忘れないでください。
よくある質問
C#アプリケーションでOCR結果を視覚化するにはどうすればよいですか?
IronOCRはHighlightTextAndSaveAsImagesメソッドを提供し、検出されたテキスト要素(文字、単語、行、段落)の周囲にバウンディングボックスを描くことでOCR結果を視覚化し、診断画像として保存します。この機能は、開発者が OCR の精度を検証し、認識の問題をデバッグするのに役立ちます。
PDF文書内の単語をハイライトする最も簡単な方法は何ですか?
IronOCRを使えば、たった1行のコードでPDFの単語をハイライトすることができます: new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word).これはPDFをロードし、ハイライトされた単語を持つ画像を作成します。
HighlightTextAndSaveAsImagesメソッドにはどのようなパラメータが必要ですか?
IronOCRのHighlightTextAndSaveAsImagesメソッドは3つのパラメーターを必要とします:IronTesseract OCRエンジンのインスタンス、出力ファイル名のプレフィックス文字列、そしてハイライトするテキスト要素(文字、単語、行、段落)を指定するResultHighlightType enum値です。
テキストハイライトを使用する場合、出力画像にはどのような名前が付けられますか。
IronOCRは指定された接頭辞とページ識別子を組み合わせて出力画像に自動的に名前を付けます。たとえば、接頭辞に "highlight_page_"を使用すると、このメソッドは文書の各ページに対して "highlight_page_0"、"highlight_page_1 "などという名前のファイルを生成します。
OCR開発でビジュアルハイライトが重要なのはなぜですか?
IronOCRのビジュアルハイライトは、OCRエンジンがどのようなテキストを検出し、どこで潜在的なエラーが発生したかを正確に表示することで、重要な診断フィードバックを提供します。このビジュアルマップは、開発者が認識問題をデバッグし、OCRの精度を検証し、複雑な文書の問題をトラブルシューティングするのに役立ちます。
単語以外のさまざまなテキスト要素をハイライトできますか?
はい、IronOCRのResultHighlightType列挙型は、個々の文字、単語、行、段落全体を含む様々なテキスト要素をハイライトすることができます。HighlightTextAndSaveAsImagesメソッドを呼び出す際に希望のタイプを指定するだけで、さまざまなレベルのテキスト検出を視覚化できます。
How can I address issues with blank output images in IronOCR?
Ensure the input document contains readable text, and that the OCR engine is configured correctly. You may also need image optimization or orientation adjustments to improve results.
What performance best practices should I follow when using IronOCR highlights?
Manage large highlighted images by ensuring enough available space and consider implementing multithreading for improved speed. Proper error handling should also be in place for file operations.

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。