如何在 HTML 中將結果保存為 hOCR | 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 並使用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檔案?

若要將結果匯出為 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");
$vbLabelText   $csharpLabel

OcrInput 類別提供了豐富的選項,用於在 OCR 處理之前準備好影像。 您可以套用篩選器、指定感興趣的區域,並處理各種輸入格式,包括多頁 TIFF 檔案。 在進行PDF OCR 文字擷取時,hOCR 匯出方法同樣適用。

為什麼設定 RenderHocr 很重要?

RenderHocr屬性設為 true 會指示 IronOCR 在 OCR 過程中產生必要的 hOCR 結構。 如果沒有此配置, SaveAsHocrFileSaveAsHocrString方法將無法產生格式正確的 hOCR 輸出並保留佈局。 必須在呼叫Read方法之前設定此配置,因為它會影響Tesseract 引擎如何處理和建構輸出資料。

hOCR格式保留了關鍵元數據,包括:

  • 角色級邊界框
  • 字詞置信度得分
  • 行和段落結構 頁面尺寸和DPI信息
  • 可偵測時的字體特徵

在實現電腦視覺工作流程或建構需要理解文件結構(而不只是簡單的文字擷取)的系統時,這種元資料尤其有用。

支援 hOCR 匯出的文件類型有哪些?

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

為了獲得針對不同文件類型的最佳效果:

  • 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 標記,可進一步處理、儲存在資料庫中或整合到 Web 應用程式中。 這種方法在建立可搜尋的 PDF 系統或實施自訂文件索引解決方案時特別有用。 對於使用125 種國際語言的開發人員來說,hOCR 格式保留了特定語言的文字屬性和閱讀方向資訊。

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

當您需要在記憶體中處理或操作 hOCR 資料、與 Web 服務整合或將結果儲存在資料庫中時,字串輸出是理想的選擇。 這種方法避免了對檔案系統的依賴,並能夠為 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
 }
$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 的 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擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。

經審核
傑夫·弗里茨
傑弗裡·T·弗里茨
.NET 社群團隊首席專案經理
Jeff 同時也是 .NET 和 Visual Studio 團隊的首席專案經理。他是 .NET Conf 虛擬會議系列的執行製片人,並主持每週兩次的開發者直播節目“Fritz and Friends”,在節目中他會與觀眾一起探討技術並編寫程式碼。 Jeff 也為包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit 在內的微軟大型開發者活動撰寫研討會、簡報並策劃內容。
準備好開始了嗎?
Nuget 下載 5,299,091 | 版本: 2025.12 剛剛發布