hOCRをHTMLファイルとして結果を保存する方法 | IronOCR

IronOCRでOCR結果をC#でhOCR HTMLとして保存する

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCRは、RenderHocrをtrueに設定し、SaveAsHocrFileまたはSaveAsHocrStringメソッドを使用することで、OCR結果をhOCR HTMLファイルとして保存し、構造化されたHTML形式でテキストレイアウトと文字座標を保持することを可能にします。

クイックスタート: OCR出力をhOCR HTMLファイルとして保存

1回のセットアップと1回のメソッド呼び出しで、hOCRレンダリングを有効にし、結果を直接HTMLファイルにエクスポートします。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

    var hocr = new IronTesseract { Configuration = { RenderHocr = true } }.Read(new OcrInput("image.png")).SaveAsHocrString();
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronOCR を使い始めましょう
    arrow pointer


hOCRとは何ですか、なぜ使うのですか?

hOCR は"HTML ベースの OCR"の略で、光学式文字認識 (OCR) の結果を構造化された方法で表現するために使用されるファイル形式です。 hOCRファイルはHTMLで記述され、認識したテキスト、レイアウト情報、画像や文書内の各認識文字の座標を保存する方法を提供します。 この構造化されたフォーマットにより、hOCRは、ドキュメントのインデックス作成、アクセシビリティツール、高度な検索実装など、テキスト位置データを必要とするアプリケーションで特に重宝されます。

hOCR形式は、どのようなテキストが存在するかだけでなく、そのテキストが元の文書のどこに表示されているかを理解する必要があるアプリケーションを構築する開発者にとって不可欠です。 この空間情報は、デバッグのためにテキストをハイライトする、元の画像にクリック可能なオーバーレイを作成する、スキャンしたドキュメントをアクセシブルなフォーマットに変換する際にドキュメントのレイアウトの整合性を維持する、といった機能を可能にします。 スキャンされたドキュメントを処理する企業アプリケーションのために、hOCRは高度なドキュメント理解と抽出ワークフローの基盤を提供します。

OCR結果をhOCRファイルとしてエクスポートするにはどうすればよいですか?

結果をhOCRとしてエクスポートするには、まずConfiguration.RenderHocrプロパティをtrueに設定して有効にします。 OcrResultオブジェクトReadメソッドから取得した後、SaveAsHocrFileメソッドを使用してOCR結果をHTMLとしてエクスポートします。 このメソッドは、入力文書の読み取り結果を含むHTMLファイルを出力します。 以下のコードは、次のサンプル TIFFファイルの使用方法を示しています。

:path=/static-assets/ocr/content-code-examples/how-to/html-export-export-html.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Enable render as hOCR
ocrTesseract.Configuration.RenderHocr = true;

// Add image
using var imageInput = new OcrImageInput("Potter.tiff");
imageInput.Title = "Html Title";

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Export as HTML
ocrResult.SaveAsHocrFile("result.html");
$vbLabelText   $csharpLabel

OcrInputクラスは、OCR処理の前に画像を準備するための広範なオプションを提供します。 フィルタを適用したり、関心領域を指定したり、複数ページのTIFFファイルを含むさまざまな入力形式を処理したりできます。 PDF OCR テキスト抽出で作業する場合、同じ hOCR エクスポート方法がシームレスに適用されます。

なぜ RenderHocr の設定が重要なのですか?

RenderHocrプロパティをtrueに設定すると、IronOCRはOCR処理中に必要なhOCR構造を生成するように指示します。 この設定なしでは、SaveAsHocrFileSaveAsHocrStringメソッドは、レイアウトを保持した適切なフォーマットのhOCR出力を生成しません。 この構成は、 Tesseract エンジンが出力データを処理および構造化する方法に影響するため、 Readメソッドを呼び出す前に設定する必要があります。

hOCRフォーマットは、以下のような重要なメタデータを保持します:

  • 文字レベルのバウンディングボックス
  • 単語信頼度スコア
  • 行と段落の構成
  • ページ寸法とDPI情報
  • 検出可能なフォントの特徴

このメタデータは、コンピュータ・ビジョンワークフローを実装する場合や、単純なテキスト抽出を超えてドキュメント構造を理解する必要があるシステムを構築する場合に特に役立ちます。

どのようなファイル タイプが hOCR エクスポートをサポートしていますか?

IronOCRはTIFF、PNG、JPEG、BMP、GIFを含む様々な画像フォーマットからのhOCRエクスポートをサポートします。 PDFドキュメントは、各ページのテキストとレイアウト情報をHTML構造に保持したまま、hOCRとして処理およびエクスポートすることもできます。 このライブラリは、単一ページの画像と複数ページのドキュメントの両方をシームレスに処理します。

異なるファイルタイプで最適な結果を得るために

  • TIFF:スキャン文書に最適。
  • PDF:混合コンテンツ(テキストと画像)に最適です。
  • PNG/JPEG:OCRが必要な写真やスクリーンショットに最適です。
  • BMP:高画質スキャンに適した非圧縮フォーマット

パスポートナンバープレートのような特殊なドキュメントタイプを扱う場合、hOCRフォーマットは、異なるテキスト要素間の空間的関係を保持するのに役立ち、場所に基づいて特定のフィールドを抽出しやすくします。

OCR結果をHTML文字列としてエクスポートするにはどうすればよいですか?

同じTIFFサンプル画像を使って、SaveAsHocrStringメソッドを利用し、OCR結果をHTML文字列としてエクスポートします。 このメソッドは HTML 文字列を返します。

:path=/static-assets/ocr/content-code-examples/how-to/html-export-export-html-string.cs
// Export as HTML string
string hocr = ocrResult.SaveAsHocrString();
$vbLabelText   $csharpLabel

文字列出力には、さらに処理したり、データベースに保存したり、ウェブアプリケーションに統合したりできる完全なhOCRマークアップが含まれています。 このアプローチは、検索可能なPDFシステムを構築したり、カスタム文書のインデックス・ソリューションを実装したりする場合に特に役立ちます。 125の国際言語で作業する開発者のために、hOCRフォーマットは、言語固有のテキスト属性と読み方向情報を保持します。

ファイルの代わりに文字列出力を使用するのはどのような場合ですか?

文字列出力は、メモリ内でhOCRデータを処理または操作したり、ウェブサービスと統合したり、結果をデータベースに保存したりする必要がある場合に最適です。 このアプローチにより、ファイルシステムへの依存を回避し、ウェブアプリケーションの動的なHTML生成が可能になります。 一般的な使用例には次のようなものがあります:

  • Web API統合:APIレスポンスでhOCRデータを直接返す
  • データベースストレージ: OCR結果をドキュメントのメタデータとともに保存する
  • リアルタイム処理:ディスクI/Oオーバーヘッドなしで結果を処理
  • クラウド機能:ファイルアクセスが制限されたサーバーレス環境で作業する
  • コンテンツ管理システム:OCR結果を既存のドキュメントワークフローに統合する

進捗追跡を必要とするアプリケーションでは、文字列出力により、部分的な結果が利用可能になったときにすぐに処理できます。 これは、複数のドキュメントを同時に処理するマルチスレッド OCR 処理を実装する場合に特に有益です。

複数のページを HTML 文字列に処理するにはどうすればよいですか?

複数ページのドキュメントを扱う場合、SaveAsHocrStringは、すべてのページを適切なページ分割で単一の HTML 文字列に統合します。 各ページのコンテンツは、適切なhOCR要素でラップされ、ドキュメント構造とページの境界が維持されます。

// Processing multi-page documents
using var multiPageInput = new OcrPdfInput("multi-page-document.pdf");
multiPageInput.Title = "Multi-Page Document";

 // Configure for hOCR output
 IronTesseract tesseract = new IronTesseract();
 tesseract.Configuration.RenderHocr = true;

 // Read all pages
 OcrResult result = tesseract.Read(multiPageInput);

 // Export as single HTML string with all pages
 string fullHocr = result.SaveAsHocrString();

 // Or process page by page
 foreach (var page in result.Pages)
 {
     string pageHocr = page.SaveAsHocrString();
     // Process individual page hOCR
 }
// Processing multi-page documents
using var multiPageInput = new OcrPdfInput("multi-page-document.pdf");
multiPageInput.Title = "Multi-Page Document";

 // Configure for hOCR output
 IronTesseract tesseract = new IronTesseract();
 tesseract.Configuration.RenderHocr = true;

 // Read all pages
 OcrResult result = tesseract.Read(multiPageInput);

 // Export as single HTML string with all pages
 string fullHocr = result.SaveAsHocrString();

 // Or process page by page
 foreach (var page in result.Pages)
 {
     string pageHocr = page.SaveAsHocrString();
     // Process individual page hOCR
 }
$vbLabelText   $csharpLabel

このアプローチは、PDF ストリームとシームレスに動作し、特定のページ範囲を処理したり、異なるページに異なる OCR 設定を適用したりするような高度なシナリオをサポートします。

高度な hOCR 実装のヒント

hOCRの出力品質のベストプラクティスとは

hOCR出力の品質を最大化するには、処理前に画像最適化フィルターを適用することを検討してください:

var input = new OcrImageInput("document.png");
input.DeNoise();  // Remove image noise
input.Deskew();   // Correct image rotation
input.Scale(2);   // Upscale for better recognition

IronTesseract ocr = new IronTesseract();
ocr.Configuration.RenderHocr = true;
var result = ocr.Read(input);
var input = new OcrImageInput("document.png");
input.DeNoise();  // Remove image noise
input.Deskew();   // Correct image rotation
input.Scale(2);   // Upscale for better recognition

IronTesseract ocr = new IronTesseract();
ocr.Configuration.RenderHocr = true;
var result = ocr.Read(input);
$vbLabelText   $csharpLabel

低品質スキャンの場合、前処理ステップを追加することで、hOCRの精度を大幅に向上させることができます。 フィルタウィザードは、特定のドキュメントタイプに最適なフィルタの組み合わせを決定するのに役立ちます。

hOCR構造はどのように高度な処理をサポートしますか?

生成されたhOCRは、ドキュメント階層を表すネストされたdiv要素を持つ標準仕様に従っています:

<div class='ocr_page' title='bbox 0 0 2480 3508'>
  <div class='ocr_carea' title='bbox 156 114 2324 3395'>
    <p class='ocr_par' title='bbox 157 114 2323 164'>
      <span class='ocr_line' title='bbox 157 114 2323 164'>
        <span class='ocr_word' title='bbox 157 114 294 161'>Hello</span>
        <span class='ocr_word' title='bbox 334 119 483 161'>World</span>
      </span>
    </p>
  </div>
</div>
<div class='ocr_page' title='bbox 0 0 2480 3508'>
  <div class='ocr_carea' title='bbox 156 114 2324 3395'>
    <p class='ocr_par' title='bbox 157 114 2323 164'>
      <span class='ocr_line' title='bbox 157 114 2323 164'>
        <span class='ocr_word' title='bbox 157 114 294 161'>Hello</span>
        <span class='ocr_word' title='bbox 334 119 483 161'>World</span>
      </span>
    </p>
  </div>
</div>
HTML

この構造は、正確なテキスト位置の抽出と高度な文書分析機能を可能にし、空間的なテキスト関係やレイアウトの保存を必要とするアプリケーションにとって価値があります。 テーブル抽出で作業する場合、hOCR形式は、表構造とセルの関係を維持するのに役立ちます。

bbox(バウンディング・ボックス)属性は、"bbox left top right bottom "のフォーマットで座標を含み、各テキスト要素のピクセル精度の位置データを提供します。 この情報は次のような場合に重要です:

  • テキスト選択によるインタラクティブなドキュメントビューアの作成
  • レイアウトを保持する再編集システムの実装
  • 読み順を維持するアクセシビリティツールの構築
  • ドキュメント比較システムの開発

さらに詳細な設定オプションを必要とする開発者のために、Tesseract 詳細設定ガイドでは、hOCRの出力品質と構造に影響を与える高度な設定を提供しています。

よくある質問

hOCRとは何か、なぜOCRアプリケーションに有用なのか?

hOCR (HTML-based OCR)はOCR結果を構造化されたHTMLで表現するファイルフォーマットで、認識されたテキストと文字座標のような空間情報の両方を保存します。IronOCRはhOCRエクスポートをサポートしており、テキスト位置データ、ドキュメントのインデックス作成、アクセシビリティツール、スキャンされたドキュメントを処理する際のレイアウトの整合性維持などを必要とするアプリケーションに有用です。

C# OCR アプリケーションで hOCR 出力を有効にするにはどうすればよいですか?

IronOCRでhOCR出力を有効にするには、IronTesseractインスタンスでConfiguration.RenderHocrプロパティをtrueに設定します。これによりIronOCRはOCR結果をhOCRフォーマットで準備し、SaveAsHocrFileまたはSaveAsHocrStringメソッドを使ってエクスポートできるようになります。

hOCRの結果をエクスポートするには、どのような方法がありますか?

IronOCRはhOCR結果をエクスポートするための2つのメソッドを提供します:SaveAsHocrFile() は出力をディスク上のHTMLファイルに直接保存し、SaveAsHocrString() はhOCRのHTMLを文字列として返し、アプリケーションでさらに処理したり保存したりします。

たった1行のコードで、OCR結果をhOCRとしてエクスポートできますか?

はい、IronOCRはメソッドチェイニングを使って1行でhOCRをエクスポートできます。RenderHocrを有効にしたIronTesseractインスタンスを作成し、入力を読み込み、SaveAsHocrString()を呼び出すことができます。}.Read(new OcrInput("image.png")).SaveAsHocrString();

hOCRはOCR結果からどのような空間情報を保存しますか?

hOCRは認識された各文字のレイアウト情報と座標を元の画像や文書内に保持します。IronOCRのhOCRエクスポートはこの空間データを維持し、デバッグのためのテキストハイライト、画像上のクリック可能なオーバーレイの作成、オリジナルドキュメント上のテキストの表示位置の把握などの機能を可能にします。

カーティス・チャウ
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 5,299,091 | バージョン: 2025.12 リリース