如何在 HTML 中將結果保存為 hOCR | IronOCR

Save OCR Results as hOCR HTML in C# with IronOCR.

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

IronOCR 可讓開發人員透過設定 RenderHocr 為 true,並使用 SaveAsHocrFileSaveAsHocrString 方法,將 OCR 結果儲存為 hOCR HTML 檔案,以結構化的 HTML 格式保留文字排版和字元座標。

快速入門:將 OCR 輸出儲存為 hOCR HTML 檔案

只需一次設定和一次方法呼叫,即可啟用 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 檔案?

<! -- 螢幕截圖示範如何匯出 OCR 結果為 Hocr 檔案? 在 IronPDF --> <!--說明:顯示逐步過程的截圖 -->

若要將結果匯出為 hOCR,請先將 Configuration.RenderHocr 屬性設定為 true,以啟用該屬性。 從 Read 方法取得 OcrResult 物件之後,使用 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");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Enable render as hOCR
ocrTesseract.Configuration.RenderHocr = True

' Add image
Dim imageInput = New OcrImageInput("Potter.tiff")
imageInput.Title = "Html Title"

' Perform OCR
Dim ocrResult As 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 輸出。 必須在呼叫Read方法之前設定此配置,因為它會影響Tesseract 引擎如何處理和建構輸出資料。

hOCR 格式保留了重要的元資料,包括

  • 字元級邊界框
  • 詞彙置信度分數
  • 行和段結構
  • 頁面尺寸與 DPI 資訊
  • 可檢測時的字型特徵

在執行 電腦視覺工作流程或建立需要瞭解文件結構的系統時,這些元資料尤其有用,而不只是簡單的文字擷取。

哪些檔案類型支援 hOCR 匯出?

IronOCR 支援從各種影像格式匯出 hOCR,包括 TIFF、PNG、JPEG、BMP 和 GIF。 PDF文件也可以處理並匯出為hOCR,每個頁面的文字和排版資訊都會保留在HTML結構中。 該函式庫可無縫處理單頁圖片和多頁文件。

為達到不同檔案類型的最佳效果:

  • TIFF:掃描文件的理想選擇,支援多頁處理
  • PDF:非常適合混合內容(文字和圖像)
  • PNG/JPEG:最適合需要 OCR 的照片或螢幕截圖
  • BMP:適合高品質掃描的未壓縮格式

在處理專門的文件類型(例如 護照 牌照)時,hOCR 格式有助於保留不同文字元素之間的空間關係,使根據位置提取特定欄位變得更加容易。

如何將 OCR 結果匯出為 HTML 字串?

<! -- 螢幕截圖示範如何將 OCR 結果匯出為 HTML 字串? 在 IronPDF --> <!--說明:顯示逐步過程的截圖 -->

使用相同的 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();
' Export as HTML string
Dim hocr As String = ocrResult.SaveAsHocrString()
$vbLabelText   $csharpLabel

字串輸出包含完整的 hOCR 標記,可進一步處理、儲存於資料庫或整合至網頁應用程式。 這種方法在建立 可搜尋的 PDF 系統或實施自訂文件索引解決方案時特別有用。 對於使用 125 種國際語言的開發人員而言,hOCR 格式保留了特定語言的文字屬性和閱讀方向資訊。

何時應該使用字串輸出而非檔案?

當您需要在記憶體中處理或操作 hOCR 資料、與 Web 服務整合或將結果儲存於資料庫時,字串輸出是最理想的選擇。 此方法可避免檔案系統的依賴性,並可為網路應用程式動態產生 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
 }
Imports IronOcr

' Processing multi-page documents
Using multiPageInput As New OcrPdfInput("multi-page-document.pdf")
    multiPageInput.Title = "Multi-Page Document"

    ' Configure for hOCR output
    Dim tesseract As New IronTesseract()
    tesseract.Configuration.RenderHocr = True

    ' Read all pages
    Dim result As OcrResult = tesseract.Read(multiPageInput)

    ' Export as single HTML string with all pages
    Dim fullHocr As String = result.SaveAsHocrString()

    ' Or process page by page
    For Each page In result.Pages
        Dim pageHocr As String = page.SaveAsHocrString()
        ' Process individual page hOCR
    Next
End Using
$vbLabelText   $csharpLabel

此方法可與 PDF 串流無縫運作,並支援進階方案,例如處理特定頁面範圍或對不同頁面套用不同的 OCR 配置。

進階 hOCR 實作技巧

<! -- 在 IronPDF 中顯示進階 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);
Dim input As New OcrImageInput("document.png")
input.DeNoise()  ' Remove image noise
input.Deskew()   ' Correct image rotation
input.Scale(2)   ' Upscale for better recognition

Dim ocr As New IronTesseract()
ocr.Configuration.RenderHocr = True
Dim 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 左上右下"格式的座標,為每個文字元素提供精確的像素位置資料。 這些資訊對於下列工作至關重要

  • 建立具備文字選擇功能的互動式文件檢視器
  • 實施保留版面的刪節系統
  • 建立可維持閱讀順序的無障礙工具
  • 開發文件比較系統

對於需要更詳細組態選項的開發人員,Tesseract詳細組態指南提供了影響 hOCR 輸出品質和結構的進階設定。

常見問題解答

什麼是 hOCR,為什麼它對 OCR 應用程式有用?

hOCR(基於 HTML 的 OCR)是一種以結構化 HTML 表示 OCR 結果的檔案格式,可同時儲存辨識的文字和空間資訊(如字元座標)。IronOOCR 支援 hOCR 匯出,這對於需要文字位置資料、文件索引、可存取性工具,以及在處理掃描文件時維持版面完整性的應用程式來說非常有價值。

如何在我的 C# OCR 應用程式中啟用 hOCR 輸出?

若要使用 IronOCR 啟用 hOCR 輸出,請在您的 IronTesseract 範例上設定 Configuration.RenderHocr 屬性為 true。這會告訴 IronOCR 以 hOCR 格式準備 OCR 結果,讓您可以使用 SaveAsHocrFile 或 SaveAsHocrString 方法匯出這些結果。

有哪些方法可用於匯出 hOCR 結果?

IronOCR 提供了兩種匯出 hOCR 結果的方法:SaveAsHocrFile() 可以直接將輸出儲存到磁碟上的 HTML 檔案,而 SaveAsHocrString() 則可以將 hOCR HTML 回傳成字串,以便在您的應用程式中進一步處理或儲存。

只需一行代碼就可以將 OCR 結果匯出為 hOCR 嗎?

是的,IronOCR 允許使用方法鏈單行匯出 hOCR。您可以在單一語句中建立啟用 RenderHocr 的 IronTesseract 範例、讀取輸入並呼叫 SaveAsHocrString(): var hocr = new IronTesseract { Configuration = { RenderHocr = true }.}.Read(new OcrInput("image.png")).SaveAsHocrString();

hOCR 可從 OCR 結果中保留何種類型的空間資訊?

hOCR 會保留原始影像或文件中每個辨識字元的排版資訊與座標。IronOCR 的 hOCR 匯出保留了這些空間資料,可實現各種功能,例如高亮顯示文字以進行除錯、在影像上建立可點選的覆蓋圖,以及瞭解文字出現在原始文件上的位置。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。

審核人
Jeff Fritz
Jeffrey T. Fritz
首席計畫經理 - .NET 社群團隊
Jeff 也是 .NET 和 Visual Studio 團隊的首席計畫經理。他是 .NET Conf 虛擬會議系列的執行製作人,並主持「Fritz and Friends」開發人直播串流,每週播出兩次,與觀眾一起討論技術和編寫程式碼。Jeff 為 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit 等大型 Microsoft 開發人員活動撰寫工作坊、簡報和規劃內容。
準備好開始了嗎?
Nuget 下載 5,384,824 | 版本: 2026.2 剛剛發布