如何使用 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 結果中的第一個單字?
您可以使用 IronOCR 的 Read 方法來提取第一個單字的文字,並存取 Words 集合:`string wordText = new IronTesseract().Read("file.jpg").Words[0].Text;` 這可立即存取 OCR 結果中的個別單字元素。
OCR 結果中有哪些座標資料可用?
IronOCR 提供每個檢測元素(段落、行、單字和字元)的精確 X 和 Y 座標,以及寬度和高度尺寸。此座標資料可透過 CropRectangle 物件存取,從而能夠對文字元素進行精確的位置追踪。
我可以提取超出文字內容的中繼資料嗎?
可以,IronOCR 提取完整的中繼資料,包括在 PDF 和影像文件中發現的頁面、段落、行、單字、字元甚至條碼。OcrResult 物件提供每個元素的文字方向、階層結構和空間資訊存取。
哪些文件型別可以處理以獲得 OCR 結果?
IronOCR 可以處理各種文件型別,包括掃描檔、照片、截圖、PDF 和影像檔案。Read 方法在這些格式之間一致地運作,返回相同的結構化 OcrResult 物件,包含完整的中繼資料。
提取的文字如何在結果中組織?
IronOCR 將提取的文字按階層結構組織,這與自然文件組織相呼應。OcrResult 物件以不同的粒度級別呈現內容,從整個頁面到單個字元,使得在應用程式中容易使用適當級別的文字。
IronOCR能整合到現有的應用程式中嗎?
IronOCR被設計成可以輕鬆地整合到現有應用程式中,使用C#允許開發人員以最小的努力為其軟體新增OCR功能。
使用IronOCR進行文件管理的好處是什麼?
使用IronOCR進行文件管理通過將掃描的文件轉換為可搜索和可編輯的文字來簡化工作流程,減少手動資料輸入的需求並提高文件的可存取性。
IronOCR如何提高資料精確性?
IronOCR通過其先進的識別算法和影像校正功能提高資料精確性,確保文字提取過程既可靠又精確。
IronOCR有免費試用版嗎?
有的,Iron Software提供IronOCR的免費試用版,允許使用者在做出購買決定前測試其功能和能力。

