IRONSOFTWAREHOME

在C#中進行單詞和字元OCR資料處理(坐標、自信度、界定框)

Darrius Serrant
Darrius Serrant
Updated: 2026年5月15日

在對文件運行OCR後,僅提取文字通常是不夠的。 要在頁面上定位特定值、排除低質量檢測或在多欄佈局上重建自然閱讀順序,您需要每個單詞的坐標、頁碼、區域索引和自信度分數。

AdvancedOcrResultBase中披露這些資料。 對於識別版面文件的ReadDocumentAdvanced()和對於相機輸入的OcrResult.Words集合可用的相同細節。

本指南介紹五個常見模式:單詞資料迭代、重建閱讀順序、根據自信度過濾、在字元層級工作及從界定框中裁剪源圖像。

開始免費30天試用以在您的管道中測試這些集合。

NuGet使用NuGet安裝

PM > Install-Package IronOcr

Install IronOCR by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.
快速入門:從OCR結果讀取單詞和字元資料

調用result.Words幾行程式碼來獲取每個被識別單詞的坐標、頁碼和自信度分數。

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2複製並運行這段程式碼片段。

    var result = new IronTesseract().ReadDocumentAdvanced(new OcrInput("scan.png"));
    foreach (var word in result.Words)
        Console.WriteLine($"{word.Text} @ ({word.X},{word.Y}) conf:{word.RegionConfidence:P0}");
    C#
  3. 3部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronOCR,透過免費試用
    arrow pointer

您如何迭代具有坐標和自信度的單詞?

Words集合返回整個頁面上的每個檢測到的單詞。 每個條目(AdvancedOcrElement)展示了文字、像素坐標、尺寸、所屬頁面、識別包含它的檢測文字區塊的區域索引和該區域的自信度分數。

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("receipt.png");

var result = ocr.ReadDocumentAdvanced(input);

foreach (var word in result.Words)
{
    Console.WriteLine(
        $"Page {word.PageNumber} | " +
        $"'{word.Text}' | " +
        $"Position: ({word.X}, {word.Y}) | " +
        $"Size: {word.Width}x{word.Height} | " +
        $"Confidence: {word.Confidence:P1}"
    );
}

// ToString() override for diagnostic logging
Console.WriteLine(result.Words.First().ToString());
C#
提示: PageNumber 是以1為基數:頁一是0。 這與大多數 .NET 集合不同,.NET集合採用零基數索引。}

RegionIndex 遵循標準的0為基數的慣例。)] )}]

要將坐標傳遞給圖形或裁剪API,使用BoundingBox屬性。 它將位置和尺寸打包成單個IronSoftware.Drawing.Rectangle

您如何重建閱讀順序?

在多欄佈局中,Words集合迭代順序與頁面上的視覺閱讀順序不一致。 單詞按檢測到的區域分組,因此列和表格單元可以是未按順序返回的。

要重建自上而下、從左到右的自然順序,首先按Y坐標排序集合,然後在每行內按X排序。少量Y容差可將相同基準線上的單詞分組。

using IronOcr;
using System.Linq;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("multi-column-doc.png");

var result = ocr.ReadDocumentAdvanced(input);

int targetPage = 1;
int lineThreshold = 10; // pixel tolerance for grouping same-line words

// Sort by line (Y), then left-to-right (X)
var pageWords = result.Words
    .Where(w => w.PageNumber == targetPage)
    .OrderBy(w => w.Y / lineThreshold)
    .ThenBy(w => w.X)
    .ToList();

foreach (var word in pageWords)
{
    Console.Write($"{word.Text} ");
}
Console.WriteLine();

調整lineThreshold以匹配您的文件:標準300 DPI下12pt文字適用於10-15像素。 較大的標題或手寫輸入需要更寬的容差。 此模式對於多欄頁面和表格單元內特別有用,因為引擎將每個列或單元檢測為其自身的區域。

您如何過濾低自信度單詞?

要在低質量檢測達到您的資料庫、搜尋索引或下游提取前將其排除,可通過RegionConfidence過濾集合。 分數範圍從0.0到1.0,較高的值表示對檢測文字更大信心。

using IronOcr;
using System.Linq;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("noisy-scan.png");

var result = ocr.ReadDocumentAdvanced(input);

double threshold = 0.75;

var highConfidenceWords = result.Words
    .Where(w => w.Confidence >= threshold)
    .ToList();

var lowConfidenceWords = result.Words
    .Where(w => w.Confidence < threshold)
    .ToList();

Console.WriteLine($"Accepted: {highConfidenceWords.Count} words");
Console.WriteLine($"Rejected: {lowConfidenceWords.Count} words");

// Log rejected words for manual review
foreach (var word in lowConfidenceWords)
{
    Console.WriteLine(
        $"  LOW CONF: '{word.Text}' at ({word.X},{word.Y}) — {word.Confidence:P1}"
    );
}
C#

對於混合質量的掃描(一些區域清晰一些區域降解),這樣可以防止低信度的輸出達到下游系統。 要在源頭提高自信度分數,圖像預處理過濾器(Deskew、DeNoise、Binarize)會在應用閾值之前改進質量。

您如何在字元層級進行迭代?

對於OCR 驗證疊加層、字元層級的對比真實背景或對表單欄位的精確空間分析,使用Characters集合。 它反映Words但在個別字元級別上解決。

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("form-field.png");

var result = ocr.ReadDocumentAdvanced(input);

foreach (var ch in result.Characters)
{
    Console.WriteLine(
        $"'{ch.Text}' | " +
        $"Box: ({ch.X}, {ch.Y}, {ch.Width}, {ch.Height}) | " +
        $"Page {ch.PageNumber}"
    );
}

// ToString() override provides diagnostic-friendly output
Console.WriteLine(result.Characters.First().ToString());
請注意: 兩者Characters都是懶惰計算的並被快取。 首次存取觸發計算; 隨後的存取返回快取結果,因此第二次迭代不消耗成本。

您如何使用界定框裁剪原始圖像?

要提取單詞的視覺區域以供驗證、註釋或構建標記訓練資料,將AnyBitmap.CropRegion()。 界定框直接映射到其在源圖像中的位置。

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("invoice.png");

var result = ocr.ReadDocumentAdvanced(input);

// Load the original image for cropping
var originalImage = AnyBitmap.FromFile("invoice.png");

// Find a specific word and crop its region
var targetWord = result.Words.FirstOrDefault(w => w.Text == "Total");
if (targetWord != null)
{
    Rectangle cropRect = targetWord.BoundingBox;
    AnyBitmap croppedRegion = originalImage.Clone(cropRect);
    croppedRegion.SaveAs("total-region.png");

    Console.WriteLine(
        $"Cropped '{targetWord.Text}' from " +
        $"({cropRect.X}, {cropRect.Y}, {cropRect.Width}, {cropRect.Height})"
    );
}

此模式可擴展到批量操作:迭代每個單詞、裁剪每個框並導出標記資料集以供自訂字體訓練或下游ML管道使用。 坐標反映預處理後的圖像; 如果像EnhanceResolution這樣的過濾器改變了尺寸,那麼界定框會匹配處理後的圖像,而不是磁碟上的原始圖像。

下一步

高階管道提供與IronTesseract.Read()相同的空間細節,以及附加的版面智慧。相關主題:

開始您的免費30天試用查看授權選項

常見問題

什麼是 C# 中的進階 OCR?

C# 中的進階 OCR 指的是利用光學字元識別來提取包括坐標、置信度水平和邊界框在內的詳細單詞和字元資料,這是利用 IronOCR 的進階管線完成的。

我如何使用 IronOCR 存取單詞資料?

您可以通過迭代 AdvancedWord 集合來在 IronOCR 中存取單詞資料,該集合提供了每個單詞在掃描文件中的位置和置信度分數的詳細資訊。

邊界框在 OCR 中的重要性是什麼?

邊界框在 OCR 中至關重要,因為它們定義了掃描圖片上識別到的文字元素的確切位置和尺寸,使得精確的文字提取和圖片操作成為可能。

我可以依置信度分數過濾 OCR 結果嗎?

可以,使用 IronOCR,您可以依置信度分數過濾 OCR 結果,從而確保只有具有高識別準確性的文字會進行進一步處理。

如何在 OCR 結果中重建閱讀順序?

通過分析 IronOCR 提供的 AdvancedWord 和 AdvancedCharacter 物件的順序可以實現重建 OCR 結果中的閱讀順序,這反映了文件的自然閱讀流向。

using IronOCR 是否可以裁剪來源圖片?

IronOCR 允許您根據文字資料的分析來裁剪來源圖片,其中包括被識別單詞和字元的邊界框和坐標。

什麼是 AdvancedWord 和 AdvancedCharacter 集合?

IronOCR 中的 AdvancedWord 和 AdvancedCharacter 集合是用來儲存每個被識別的單詞和字元的詳細資訊的資料結構,包括其坐標、置信度水平和邊界框。

IronOCR 如何處理字元識別?

IronOCR 透過利用一個進階管線處理字元識別,分析每個字元的特徵,提供其位置、尺寸和識別置信度等詳細資料。

IronOCR 可以處理哪些型別的文件?

IronOCR 可以處理多種型別的文件,包括 PDF、掃描圖片和照片,以高度準確和詳細地提取文字資料。

How can OCR results be used for custom font training or machine learning?

OCR results, including cropped image regions and labeled datasets derived from bounding boxes, can be used to train custom fonts or feed machine learning pipelines. IronOCR facilitates these processes with its detailed spatial data extraction capabilities.

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

...
閱讀更多

準備開始了嗎?

Nuget Downloads 6,236,385版本:2026.9剛剛發布

立即獲取您的30天試用金鑰
無需信用卡或帳戶建立
C# PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. 在解決方案資源管理器中,右鍵點擊參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronOCR"
  3. 選擇包並安裝
C# PDF DLL
下載 DLL

版本: 2026.9

這裡下載Windows安裝程式。

  1. 下載並解壓IronOCR至您的方案目錄下的~/Libs等位置
  2. 在Visual Studio解決方案資源管理器中,右鍵點擊參考。選擇瀏覽,"IronOCR.dll"

授權從$999

有問題嗎?聯絡我們的開發團隊。

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立