如何使用 IronOCR 在 C# 中擷取讀取結果
IronOCR 的 Read 方法會傳回一個 OcrResult 物件,其中包含已擷取的文字,以及詳細的元資料,包括精確座標、尺寸、文字方向,以及每個偵測到的元素的層級結構(段落、行、字、字元)。
OCR 結果包含關於偵測到的段落、行、單字及個別字元的完整資訊。
針對每個元素,它提供文字內容、精確的 X 和 Y 座標、尺寸(寬度和高度)、文字方向(由左至右或由上至下),以及在 CropRectangle 物件中的位置。
快速入門:從第一個偵測到的單字擷取 WORD 文字
using IronTesseract 的 Read 方法對圖片進行 OCR 識別,並透過 WORDs 集合提取第一個 WORD 的文字。
簡化工作流程(5 個步驟)
- 下載用於存取讀取結果的 C# 函式庫
- 請準備目標圖片及 PDF 文件
- 請使用
Read方法對匯入的文件執行 OCR - 前往
X,Y,width,height,並text direction結果 - 檢查偵測到的段落、行、單字及字元對比
我可以從 OCR 結果中提取哪些資料?
結果值不僅包含擷取的文字,還包含 IronOCR 在 PDF 和圖像文件中偵測到的頁面、段落、行、單字、字元及 BARCODE 相關資訊。 您可以透過 Read 方法,從回傳的 OcrResult 物件中取得此資訊。
IronOCR 的全面結果系統建基於強大的 Tesseract 5 引擎,為開發人員提供超越簡單文字辨識的結構化資料擷取能力。 無論處理掃描文件、照片或螢幕截圖,OcrResult 類別都能讓您對擷取的資料進行細緻的控制。
:path=/static-assets/ocr/content-code-examples/how-to/read-results-output-information.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Retrieve list of detected paragraphs
Paragraph[] paragraphs = ocrResult.Paragraphs;
// Output information to console
Console.WriteLine($"Text: {paragraphs[0].Text}");
Console.WriteLine($"X: {paragraphs[0].X}");
Console.WriteLine($"Y: {paragraphs[0].Y}");
Console.WriteLine($"Width: {paragraphs[0].Width}");
Console.WriteLine($"Height: {paragraphs[0].Height}");
Console.WriteLine($"Text direction: {paragraphs[0].TextDirection}");
Imports IronOcr
Imports System
Imports IronOcr.OcrResult
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Retrieve list of detected paragraphs
Private paragraphs() As Paragraph = ocrResult.Paragraphs
' Output information to console
Console.WriteLine($"Text: {paragraphs(0).Text}")
Console.WriteLine($"X: {paragraphs(0).X}")
Console.WriteLine($"Y: {paragraphs(0).Y}")
Console.WriteLine($"Width: {paragraphs(0).Width}")
Console.WriteLine($"Height: {paragraphs(0).Height}")
Console.WriteLine($"Text direction: {paragraphs(0).TextDirection}")
如何從 OCR 結果中取得文字內容?
OcrResult 物件以簡潔直觀的方式呈現擷取的文字,讓開發人員能直接使用,或將其整合至其他應用程式元件中。 此層級結構反映了自然文件的組織方式,使您能輕鬆處理不同細粒度層級的內容。
對於需要多語言支援的應用程式,IronOCR 能無縫處理多語言文件,並在所有 125 種支援語言中維持相同的結構化結果格式。
以下程式碼範例透過迴圈PRINT文字以驗證結果。
:path=/static-assets/ocr/content-code-examples/how-to/read-results-output-text.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("sampleText.png");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Retrieve list of detected paragraphs
Paragraph[] paragraphs = ocrResult.Paragraphs;
// Loop through each paragraph in the array
Console.WriteLine("--- All Detected Paragraphs ---");
foreach (Paragraph paragraph in paragraphs)
{
// Print the text of the current paragraph
Console.WriteLine(paragraph.Text);
// Add a blank line for better separation (optional)
Console.WriteLine();
}
Imports IronOcr
Imports System
Imports IronOcr.OcrResult
' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()
' Add image
Using imageInput As New OcrImageInput("sampleText.png")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Retrieve list of detected paragraphs
Dim paragraphs As Paragraph() = ocrResult.Paragraphs
' Loop through each paragraph in the array
Console.WriteLine("--- All Detected Paragraphs ---")
For Each paragraph As Paragraph In paragraphs
' Print the text of the current paragraph
Console.WriteLine(paragraph.Text)
' Add a blank line for better separation (optional)
Console.WriteLine()
Next
End Using
輸出
控制台輸出顯示 IronOCR 正以極高精準度逐行擷取段落文字。 該引擎能自動偵測段落邊界,使其非常適合處理包含多個文字區塊的複雜文件。
如何取得偵測到的文字位置座標?
除了擷取的文字外,OcrResult 還提供了詳細的位置資料。 此空間資訊對於需要維持版面配置精確度,或從特定文件區域進行目標文字擷取的應用程式而言至關重要。 座標系統採用以頁面左上角為起點的標準像素測量方式。
若需提升基於座標的操作精準度,可考慮使用 OCR 區域標定功能來鎖定特定區域,或運用電腦視覺功能自動識別文字區域。
以下程式碼示範如何遍歷每個段落,並將其座標(X 和 Y)輸出至主控台。
:path=/static-assets/ocr/content-code-examples/how-to/read-results-output-coordinates.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("sampleText.png");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Retrieve list of detected paragraphs
Paragraph[] paragraphs = ocrResult.Paragraphs;
Console.WriteLine("--- All Detected Coordinates of Paragraphs ---");
// Use a 'for' loop to get an index for each paragraph
for (int i = 0; i < paragraphs.Length; i++)
{
// Get the current paragraph
Paragraph paragraph = paragraphs[i];
// Print the paragraph number, text, and its location
Console.WriteLine($"X: {paragraph.X}"); // X-coordinate (left edge)
Console.WriteLine($"Y: {paragraph.Y}"); // Y-coordinate (top edge)
// Add a blank line for better separation
Console.WriteLine();
}
Imports IronOcr
Imports System
Imports IronOcr.OcrResult
' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()
' Add image
Using imageInput As New OcrImageInput("sampleText.png")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Retrieve list of detected paragraphs
Dim paragraphs As Paragraph() = ocrResult.Paragraphs
Console.WriteLine("--- All Detected Coordinates of Paragraphs ---")
' Use a 'for' loop to get an index for each paragraph
For i As Integer = 0 To paragraphs.Length - 1
' Get the current paragraph
Dim paragraph As Paragraph = paragraphs(i)
' Print the paragraph number, text, and its location
Console.WriteLine($"X: {paragraph.X}") ' X-coordinate (left edge)
Console.WriteLine($"Y: {paragraph.Y}") ' Y-coordinate (top edge)
' Add a blank line for better separation
Console.WriteLine()
Next
End Using
輸出
輸出結果顯示三組座標,分別對應於三個段落。這些座標可用於繪製邊界框、擷取特定區域,或維持文字元素之間的空間關係。
OCR 結果中還包含哪些其他屬性?
除了文字和文字座標外,IronOCR 還提供其他資訊。 針對每個文字元素(段落、行、單字及個別字元),可提供以下資訊:
- 文字:作為字串的實際內容。
- X:以像素為單位,自頁面左邊緣起算的位置。
- Y:以像素為單位,自頁面頂緣起算的位置。
- 寬度:以像素為單位的寬度。
- 高度:以像素為單位的高度。
- 文字方向:文字的閱讀方向(由左至右或由上至下)。
- 位置:一個矩形,以像素為單位顯示此文字在頁面上的位置。
這些功能在實作時特別有用:
- 文字標示與註解系統
- 自動表單欄位偵測
- 文件轉換時的版面配置保留
- 透過空間文本分析進行資料擷取
在除錯與視覺化階段,請使用文字標示功能,以視覺化方式驗證偵測區域的準確性。
段落、行、WORD與字元有何區別?
IronOCR 的階層式文字結構,讓開發人員能根據其特定使用情境,在適當的細節層級進行作業。 了解這些元素之間的差異,有助於為您的應用程式選擇合適的細粒度。
以下是偵測到的段落、行數、WORD及字元的比較。
段落 |
行 |
WORD |
字元 |
每個細分層級皆有其不同用途:
- 段落s:最適合用於文件結構分析與大量文字擷取
- 行:有助於維持閱讀順序並處理表格資料
- WORD:非常適合搜尋功能與文字分析
- 字元:非常適合拼寫檢查與精確的文字編輯應用
IronOCR 能否讀取 BarCode 和 QR 碼?
是的,IronOCR 能夠讀取 BARCODE 和 QR 碼。 雖然 IronOCR 的功能可能不如 IronBarcode 那樣強大,但它支援常見的 BARCODE 類型。若要啟用 BARCODE 偵測功能,請將 Configuration.ReadBarCodes 屬性設定為 true。 這項整合功能使 IronOCR 成為處理同時包含文字與 BARCODE 的文件(例如發票、運送標籤或產品目錄)的絕佳選擇。
此外,可從偵測到的BarCode中提取有價值的資訊,包括格式、數值、座標(x, y)、高度、寬度及位置,並以 IronSoftware.Drawing.Rectangle 物件形式呈現。 IronDrawing 中的此 Rectangle 類別可實現文件上的精確定位。
若需處理更進階的BarCode讀取情境,請參閱我們文件中的完整BarCode讀取範例。
:path=/static-assets/ocr/content-code-examples/how-to/read-results-barcodes.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable barcodes detection
ocrTesseract.Configuration.ReadBarCodes = true;
// Add image
using OcrInput ocrInput = new OcrInput();
ocrInput.LoadPdf("sample.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(ocrInput);
// Output information to console
foreach(var barcode in ocrResult.Barcodes)
{
Console.WriteLine("Format = " + barcode.Format);
Console.WriteLine("Value = " + barcode.Value);
Console.WriteLine("X = " + barcode.X);
Console.WriteLine("Y = " + barcode.Y);
}
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports System
Imports IronOcr.OcrResult
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable barcodes detection
ocrTesseract.Configuration.ReadBarCodes = True
' Add image
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("sample.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
' Output information to console
For Each barcode In ocrResult.Barcodes
Console.WriteLine("Format = " & barcode.Format)
Console.WriteLine("Value = " & barcode.Value)
Console.WriteLine("X = " & barcode.X)
Console.WriteLine("Y = " & barcode.Y)
Next barcode
Console.WriteLine(ocrResult.Text)
End Using
BarCode.Detection的輸出結果會是什麼樣子?
IronOCR 的 BarCode 偵測功能與文字擷取功能無縫整合,提供包含文字內容與 BarCode 資料在內的統一結果。 這項雙重能力對於需要同時提取並關聯這兩類資訊的自動化文件處理工作流程而言,具有極高價值。
此輸出範例展示了 IronOCR 同時偵測多種 BARCODE 類型的能力,針對每個偵測到的 BARCODE,提供格式識別(例如 QR 碼或 EAN8)、解碼值以及精確的座標資訊。 這套全面性的資料讓開發者能夠建置精細的文件處理應用程式,以高效處理混合內容類型。
常見問題
OcrResult 物件包含哪些資訊?
IronOCR 中的 OcrResult 物件包含已擷取的文字以及詳細的元資料,包括精確的 X/Y 座標、尺寸(寬度和高度)、文字方向(由左至右或由上至下),以及針對每個偵測到的元素所組織的層級結構,包含段落、行、單字和個別字元。
如何快速從 OCR 結果中提取第一個 WORD?
您可以透過 IronOCR 的 Read 方法並存取 Words 集合來擷取第一個單字的文字:`string wordText = new IronTesseract().Read("file.jpg").Words[0].Text;`。這能讓您立即存取 OCR 結果中的個別單字元素。
OCR 結果中包含哪些類型的座標資料?
IronOCR 會為每個偵測到的元素(段落、行、單字及字元)提供精確的 X 和 Y 座標,以及寬度和高度尺寸。可透過 CropRectangle 物件存取此座標資料,從而實現對文字元素的精確位置追蹤。
除了純文字內容外,還能擷取其他元資料嗎?
是的,IronOCR 能從 PDF 和圖像文件中擷取全面的元資料,包括頁面、段落、行、單字、字元,甚至 BarCode。OcrResult 物件可讓您存取每個元素的文字方向、層級結構及空間資訊。
哪些文件類型可進行 OCR 處理?
IronOCR 可處理多種文件類型,包括掃描文件、照片、螢幕截圖、PDF 及圖像檔案。Read 方法在這些格式間運作一致,會返回包含完整元資料的相同結構化 OcrResult 物件。
結果中的擷取文字是如何組織的?
IronOCR 會將擷取的文字組織成符合自然文件結構的層級架構。OcrResult 物件能以不同粒度層級呈現內容——從整頁到單一字元皆可——讓您能輕鬆地在適合應用程式的層級上處理文字。
IronOCR 能否整合至現有應用程式中?
IronOCR 設計上可輕鬆透過 C# 整合至現有應用程式中,讓開發人員能以最少的努力,為其軟體增添 OCR 功能。
使用 IronOCR 進行文件管理有哪些好處?
使用 IronOCR 進行文件管理,可將掃描文件轉換為可搜尋且可編輯的文字,從而簡化工作流程,減少人工資料輸入的需求,並提升文件的可存取性。
IronOCR 如何提升資料準確性?
IronOCR 透過其先進的辨識演算法與影像校正功能來提升資料準確性,確保文字擷取過程既可靠又精確。
IronOCR 是否有提供免費試用版?
是的,Iron Software 提供 IronOCR 的免費試用版,讓使用者能在決定購買前測試其功能與效能。

