如何將結果儲存為HTML文件中的hOCR

使用IronOCR在C#中將OCR結果保存為hOCR HTML

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

IronOCR使開發者能夠將OCR結果保存為hOCR HTML文件,只需設置SaveAsHocrString方法,能夠在結構化HTML格式中保留文字佈局和字元坐標。

快速入門:將OCR輸出保存為hOCR HTML文件

啟用hOCR渲染並直接將結果導出到HTML文件,只需一次設置和一次方法調用。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/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為高級文件理解和提取工作流程提供了基礎。

如何將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");
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結構。 如果沒有這種配置,SaveAsHocrString方法將不會產生正確格式的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字串?

使用相同的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資料,整合到網路服務中,或將結果儲存在資料庫中。 此方法避免了文件系統依賴,並使網路應用動態生成HTML成為可能。 常見用例包括:

  • 網路API整合:直接在API回應中返回hOCR資料
  • 資料庫儲存:將OCR結果與文件元資料一起儲存
  • 實時處理:處理結果而不受磁盤I/O負擔影響
  • 雲端功能:在伺服器無環境中有限的文件存取下工作
  • 內容管理系統:將OCR結果整合至現有文件工作流程中

對於需要進度追蹤的應用程式,字串輸出允許在部分結果可用時立即處理。 這在實施多執行緒OCR處理時特別有利,那時多個文件同時被處理。

如何將多頁文件處理為HTML字串?

處理多頁文件時,SaveAsHocrString會將所有頁合併為一個HTML字串,保持正確的頁面分隔。 每頁內容都包裹在相應的hOCR元素中,保持文件結構和頁邊界。

:path=/static-assets/ocr/content-code-examples/how-to/html-hocr-export-4.cs
// 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();
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()
End Using
$vbLabelText   $csharpLabel

這種方法無縫支持PDF流,並支持高級情境如處理特定頁範圍或將不同的OCR配置應用於不同頁面。

先進的hOCR實施技巧

hOCR輸出品質的最佳實踐是什麼?

為了最大化您的hOCR輸出品質,考慮在處理之前應用圖像優化過濾器

:path=/static-assets/ocr/content-code-examples/how-to/html-hocr-export-5.cs
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 left top right bottom"格式包含坐標,為每個文字元素提供像素精確的位置資料。 此資訊對於以下方面至關重要:

  • 建立具有文字選擇功能的互動式文件查看器
  • 實施保留佈局的刪除系統
  • 構建保持閱讀順序的無障礙工具
  • 開發文件比較系統

對於需要更詳細配置選項的開發者,Tesseract詳細配置指南提供影響hOCR輸出質量和結構的高級設置。

RenderHocr

常見問題

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

hOCR(基於HTML的OCR)是一種文件格式,用於以結構化HTML表示OCR結果,儲存已識別的文字和字元坐標等空間資訊。IronOCR支持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匯出維持這些空間資料,提供如文字高亮顯示進行除錯、在圖像上建立可點擊的疊加層、及了解文字在原始文件中出現的位置等功能。

IronOCR支援多種語言嗎?

IronOCR支援多種語言,使其成為全球需要不同語言文字識別的應用程式的多功能工具。

IronOCR能整合到現有的應用程式中嗎?

IronOCR被設計成可以輕鬆地整合到現有應用程式中,使用C#允許開發人員以最小的努力為其軟體新增OCR功能。

使用IronOCR進行文件管理的好處是什麼?

使用IronOCR進行文件管理通過將掃描的文件轉換為可搜索和可編輯的文字來簡化工作流程,減少手動資料輸入的需求並提高文件的可存取性。

IronOCR如何提高資料精確性?

IronOCR通過其先進的識別算法和影像校正功能提高資料精確性,確保文字提取過程既可靠又精確。

IronOCR有免費試用版嗎?

有的,Iron Software提供IronOCR的免費試用版,允許使用者在做出購買決定前測試其功能和能力。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立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 Summit提供內容支援。
準備開始了嗎?
Nuget 下載 6,151,372 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在滾動?

想要快速證明? PM > Install-Package IronOcr
執行範例 觀看您的圖像轉變為可搜尋文字。