如何使用 IronOCR 在 C# 中讀取圖片
IronOCR 運用光學字元辨識技術,從 TIFF 及 BMP 格式的圖像中擷取文字。 安裝 NuGet 套件後,僅需一行程式碼即可完成基本文字擷取。
OCR(光學字元辨識)技術可識別並從圖像中擷取文字。 它透過從掃描頁面、照片或其他圖像檔案中擷取文字內容,將紙本文件數位化。 IronOCR 採用 Tesseract 5 的先進機器學習演算法,並結合專有影像預處理技術,實現業界領先的辨識準確度。
此函式庫支援 tiff 及 bmp 格式。 影像濾鏡可透過自動修正常見的品質問題,提升閱讀體驗。 IronOCR 結合 Tesseract 5 與先進的前置處理技術,無論是高解析度掃描檔或壓縮過的網頁圖片,都能在各種影像品質與格式下提供精準的辨識結果。
快速入門:使用 IronOCR 讀取圖像檔案
只需一行程式碼,即可從圖片中擷取文字。 此範例載入一張圖片,並使用 Read 上的 IronTesseract 方法讀取其文字。 該函式庫會自動處理影像預處理與文字擷取。
簡化工作流程(5 個步驟)
- 下載用於讀取圖像的 C# 函式庫
- 支援 jpg、png、gif、tiff 及 bmp 格式的圖片
- 實例化 OcrImageInput 類別以輸入影像
- 使用
Read方法對輸入影像執行 OCR - 請指定裁切區域以定義閱讀範圍
如何使用 IronOCR 讀取圖片?
首先,請實例化 IronTesseract 類別。 請使用 'using' 語句,根據圖片檔案路徑建立 OcrImageInput 物件。 這可確保資源獲得妥善釋放。 IronOCR 支援 jpg、png、gif、tiff 及 bmp 格式。 使用 Read 方法執行 OCR。 此函式庫會自動偵測圖片格式並執行適當的預處理。
新使用者請參閱 Windows 安裝指南,或探索 NuGet 套件選項。 若需進行跨平台開發,請參閱 Linux 設定或 macOS 安裝說明。
- 載入 TIFF 影像現在能一貫地提供更快的效能。
- 讀取 TIFF 影像時,其效能提升程度取決於電腦的 GPU。 部分使用者可能體驗到最高達兩倍的速度提升,而其他使用者則可能看到與先前版本相似的效能表現 )}]
/* :path=/static-assets/ocr/content-code-examples/how-to/input-images-read.cs */
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("Potter.png");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Display the extracted text
Console.WriteLine(ocrResult.Text);
// Get confidence level
double confidence = ocrResult.Confidence;
Console.WriteLine($"Confidence: {confidence}%");
/* :path=/static-assets/ocr/content-code-examples/how-to/input-images-read.cs */
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("Potter.png");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Display the extracted text
Console.WriteLine(ocrResult.Text);
// Get confidence level
double confidence = ocrResult.Confidence;
Console.WriteLine($"Confidence: {confidence}%");
Imports IronOcr
' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()
' Add image
Using imageInput As New OcrImageInput("Potter.png")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Display the extracted text
Console.WriteLine(ocrResult.Text)
' Get confidence level
Dim confidence As Double = ocrResult.Confidence
Console.WriteLine($"Confidence: {confidence}%")
End Using
請參閱《如何讀取多幀/多頁 GIF 和 TIFF 檔案》以了解如何讀取 TIFF 和 GIF 圖像。 若涉及多頁文件,請參閱多頁 TIFF 處理範例。
為何信心水準很重要?
信心等級表示 IronOCR 對擷取文字準確性的確信程度。 分數高於 85% 通常表示結果可靠。 若評分較低,可能需要進行影像預處理或人工審核。 利用信心分數自動標記文件以供人工核驗,或觸發額外的影像優化濾鏡。
何時該使用不同的圖像格式?
由於採用無損壓縮,PNG 和 TIFF 格式能提供最佳的 OCR 結果。 單頁文件請使用 PNG 格式,多頁掃描文件請使用 TIFF 格式。 JPEG 雖然適用於照片,但可能會產生壓縮失真。 BMP 格式提供未壓縮的畫質,但檔案大小較大。 GIF 適合色彩有限的簡單圖形。 進一步了解針對特定格式的優化。
常見的影像讀取錯誤有哪些?
常見錯誤包括圖像解析度過低(低於 200 DPI)、文字傾斜、對比度不足,或未支援的語言。 IronOCR 能自動修正許多問題,但嚴重錯誤可能需要手動預處理。 請參閱我們的疑難排解指南以獲取解決方案。
如何將圖片匯入為位元組?
OcrImageInput 類別接受以檔案路徑、位元組、Stream 或 Image 物件形式傳入的影像。 AnyBitmap 是 IronSoftware.Drawing.AnyBitmap 中的位圖物件。 這種靈活性使其能與各種資料來源(包括資料庫、Web API 及雲端儲存)無縫整合。
這種靈活性在處理來自資料庫、網路服務或記憶體流的影像時特別有用。 有關進階流處理,請參閱"使用輸入流進行 OCR"。 《System.Drawing 整合指南》提供了更多關於舊版程式碼相容性的範例。
:path=/static-assets/ocr/content-code-examples/how-to/input-images-import-byte.cs
using IronOcr;
using System.IO;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Read byte from file
byte[] data = File.ReadAllBytes("Potter.tiff");
// Import image byte
using var imageInput = new OcrImageInput(data);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports System.IO
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Read byte from file
Private data() As Byte = File.ReadAllBytes("Potter.tiff")
' Import image byte
Private imageInput = New OcrImageInput(data)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
何時應使用位元組陣列而非檔案路徑?
當圖片來源來自資料庫、網路服務或加密來源時,位元組陣列能發揮最佳效果。 由於檔案無需暫存於磁碟,因此能提供更佳的安全性。 在雲端應用程式、微服務或處理敏感文件時,請使用位元組陣列。 對於大型圖像集合的本地批次處理而言,使用檔案路徑仍更為高效。
using IronOcr;
using IronSoftware.Drawing;
using System.IO;
// Method 1: From URL
var imageFromUrl = AnyBitmap.FromUri("https://example.com/document.jpg");
using var urlInput = new OcrImageInput(imageFromUrl);
// Method 2: From Stream
using var fileStream = File.OpenRead("document.png");
using var streamInput = new OcrImageInput(fileStream);
// Method 3: From System.Drawing (with IronSoftware.Drawing)
var bitmap = AnyBitmap.FromFile("scan.bmp");
using var bitmapInput = new OcrImageInput(bitmap);
// Process any of these inputs
IronTesseract ocr = new IronTesseract();
OcrResult result = ocr.Read(bitmapInput);
using IronOcr;
using IronSoftware.Drawing;
using System.IO;
// Method 1: From URL
var imageFromUrl = AnyBitmap.FromUri("https://example.com/document.jpg");
using var urlInput = new OcrImageInput(imageFromUrl);
// Method 2: From Stream
using var fileStream = File.OpenRead("document.png");
using var streamInput = new OcrImageInput(fileStream);
// Method 3: From System.Drawing (with IronSoftware.Drawing)
var bitmap = AnyBitmap.FromFile("scan.bmp");
using var bitmapInput = new OcrImageInput(bitmap);
// Process any of these inputs
IronTesseract ocr = new IronTesseract();
OcrResult result = ocr.Read(bitmapInput);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System.IO
' Method 1: From URL
Dim imageFromUrl = AnyBitmap.FromUri("https://example.com/document.jpg")
Using urlInput As New OcrImageInput(imageFromUrl)
' Method 2: From Stream
Using fileStream As FileStream = File.OpenRead("document.png")
Using streamInput As New OcrImageInput(fileStream)
' Method 3: From System.Drawing (with IronSoftware.Drawing)
Dim bitmap = AnyBitmap.FromFile("scan.bmp")
Using bitmapInput As New OcrImageInput(bitmap)
' Process any of these inputs
Dim ocr As New IronTesseract()
Dim result As OcrResult = ocr.Read(bitmapInput)
End Using
End Using
End Using
End Using
為何記憶體管理對影像位元組至關重要?
大型圖片會消耗大量記憶體,特別是在同時處理多個文件時。 使用 'using' 語句可確保資源被正確釋放。 針對批次處理,建議實作一個具有並發操作限制的佇列系統。 多執行緒指南展示了高效的記憶體管理技術。
不同輸入類型會對效能產生什麼影響?
對於本機檔案,使用檔案路徑能提供最佳效能,因為 IronOCR 會直接讀取資料。 位元組陣列雖需將整張圖片載入記憶體,但能提供更大的靈活性。 流透過增量讀取資料,在記憶體使用與效能之間取得平衡。 若需處理大量批次以獲得最佳效能,請參閱我們的效能調校指南。
如何指定掃描區域?
在實例化 OcrImageInput 時傳入 CropRectangle,以指定要處理的影像區域。 限制掃描範圍可顯著提升效能。 以下範例僅讀取章節編號與標題。 此技術在針對特定文件區域時,可將處理時間縮短多達 90%。
若涉及複雜版面配置或多個區域,請參閱《影像的 OCR 區域》。 《內容區域指南》闡述了進階區域選取技術。
:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);
// Add image
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output the result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Specify crop region
Private scanRegion As New Rectangle(800, 200, 900, 400)
' Add image
Private imageInput = New OcrImageInput("Potter.tiff", ContentArea:= scanRegion)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output the result to console
Console.WriteLine(ocrResult.Text)
為何指定區域能提升效能?
僅處理相關的影像區域,可將運算開銷降低 60% 至 90%。 OCR 引擎會分析輸入區域中的每個像素,因此區域越小,處理速度就越快。 此方法亦能透過排除標頭、標尾或目標文字區域外的裝飾元素所造成的潛在干擾,從而提升翻譯準確性。
何時應使用多個掃描區域?
對於包含表單、發票或多欄位佈局等不同文字區域的文件,請使用多個區域。 請分別處理各區塊,以維持文本的邏輯流暢性。 此方法非常適合用於擷取表格資料,或從結構化文件中讀取特定欄位。
座標系統的慣例為何?
IronOCR 使用標準像素座標,原點 (0,0) 位於左上角。 X 軸向右增加,Y 軸向下增加。 矩形參數為 (X, Y, 寬度, 高度)。 若需精確選取區域,請使用影像編輯工具識別像素座標,或在應用程式中實作視覺化區域選取器。
如何應用進階影像處理技術?
IronOCR 提供全面的影像預處理功能,以提升 OCR 辨識準確度。 處理低畫質圖片、掃描文件或複雜情境時,請套用濾鏡。 "濾鏡精靈"可協助您針對特定影像找出最佳的濾鏡組合。
using IronOcr;
IronTesseract ocr = new IronTesseract();
using var input = new OcrImageInput("low-quality-scan.jpg");
// Apply image enhancement filters
input.Deskew(); // Correct image rotation
input.DeNoise(); // Remove background noise
input.Binarize(); // Convert to black and white
input.EnhanceResolution(300); // Adjust DPI for better accuracy
// Configure for better accuracy
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
ocr.Configuration.Language = OcrLanguage.English;
OcrResult result = ocr.Read(input);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using var input = new OcrImageInput("low-quality-scan.jpg");
// Apply image enhancement filters
input.Deskew(); // Correct image rotation
input.DeNoise(); // Remove background noise
input.Binarize(); // Convert to black and white
input.EnhanceResolution(300); // Adjust DPI for better accuracy
// Configure for better accuracy
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
ocr.Configuration.Language = OcrLanguage.English;
OcrResult result = ocr.Read(input);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrImageInput("low-quality-scan.jpg")
' Apply image enhancement filters
input.Deskew() ' Correct image rotation
input.DeNoise() ' Remove background noise
input.Binarize() ' Convert to black and white
input.EnhanceResolution(300) ' Adjust DPI for better accuracy
' Configure for better accuracy
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
ocr.Configuration.Language = OcrLanguage.English
Dim result As OcrResult = ocr.Read(input)
End Using
瞭解圖片優化濾鏡及修復低品質掃描檔的方法。 如需色彩校正相關指引,請參閱圖片色彩校正指南。
何時應套用影像預處理濾鏡?
處理掃描文件、文字照片或畫質不佳的圖片時,請套用濾鏡。 常見的應用情境包括修正頁面傾斜、去除影印本的背景雜訊,或強化褪色的文字。 DPI 設定指南可協助解決與解析度相關的問題。
為何篩選順序很重要?
篩選順序會顯著影響結果。 請先進行旋轉校正 (Deskew),接著執行雜訊去除,最後進行對比度增強。 二值化通常應放在最後進行。順序不當可能加劇問題——例如,在降噪前進行銳化會增加噪點的可見度。 請嘗試不同的語序以獲得最佳效果。
常見的預處理錯誤有哪些?
過度修飾是最常見的錯誤。 過度銳化會產生偽影,過度降噪會消除細微的文字細節,而不當的二值化閾值則會導致資訊遺失。 請以最少的預處理開始,僅在必要時添加篩選條件。 圖像品質修正指南提供了詳細的最佳實踐指南。
如何優化效能?
處理多張圖片或大量批次時,請考慮以下優化方案:
- 重複使用
IronTesseract實例:建立一個實例以執行多項操作 - 指定掃描區域:將 OCR 範圍限制在相關圖像區域,可提升 60-90% 的識別率
- 使用適當的圖像格式:PNG 和 TIFF 的效果優於 JPEG
- 選擇性地應用預處理:僅在必要時使用篩選器
- 實作並行處理:利用多核心 CPU 進行批次操作
若需處理高負載情境,請參閱多執行緒指南與快速 OCR 設定。 進度追蹤功能有助於監控長時間執行的操作。
為何重用實體能提升效能?
IronTesseract 初始化會載入語言資料並設定 OCR 引擎,耗時 200-500 毫秒。 重複使用實例可消除後續操作的此類開銷。 為網頁應用程式建立單例實例,或為批次處理建立共用實例,以達到最高效率。
何時該使用平行處理?
平行處理在涉及多個獨立影像的場景中尤為有益。 可同時處理不同的頁面或文件,但應避免對同一張圖片進行並行處理。 現代 CPU 能有效處理 4 至 8 個並行 OCR 作業。 請留意記憶體使用量,因每項操作會根據圖片大小消耗 100 至 500 MB 的記憶體。
關於記憶體使用有哪些注意事項?
OCR 操作通常需要佔用相當於影像檔案大小 10 至 20 倍的 RAM 空間。 一張 5MB 的圖片在處理過程中可能會佔用 50-100MB 的空間。 針對大量批次處理,請採用生產者-消費者模式,並限制並發操作數量。 此中止標記範例展示了針對記憶體密集型操作的中止機制。
接下來該怎麼做?
透過以下資源,從更複雜的場景中擷取文字:
- 從 PDF 讀取文字 – 透過 OCR 處理 PDF 文件
- 從螢幕截圖中提取資料 – 擷取並讀取螢幕內容
- 處理掃描文件 – 處理多頁掃描檔案
- 支援 System.Drawing 物件 – 可與現有的 .NET 影像處理程式碼整合
- 支援多種語言 – 可擷取 125 種以上語言的文字
- 處理特定文件類型 – 針對護照、發票等文件進行優化
常見問題
在 C# 中,哪些圖像格式可用於文字擷取?
IronOCR 支援從 JPG、PNG、GIF、TIFF 及 BMP 圖像格式中讀取文字。IronOCR程式庫會自動偵測圖像格式,並進行適當的預處理,以獲得最佳的文字擷取效果。
如何用一行程式碼從圖片檔案中擷取文字?
您可以使用 IronOCR 透過單一行程式碼提取文字:`var result = new IronTesseract().Read(new OcrImageInput("image.png"));`。此程式碼會利用 Tesseract 5 OCR 技術,自動處理影像預處理與文字提取作業。
讀取圖像時使用的是哪種 OCR 技術?
IronOCR 結合了 Tesseract 5 的先進機器學習演算法與專有影像預處理技術。此組合能在各種影像品質與格式下提供業界領先的準確度,從高解析度掃描檔到壓縮的網頁圖片皆然。
讀取圖片時該如何正確處理資源?
建立 OcrImageInput 物件時,請使用 'using' 語句以確保資源能被正確釋放。此模式會自動管理記憶體與檔案句柄:`using var ocrInput = new OcrImageInput("image.jpg");`
我可以只讀取圖片的特定區域,而不是整個檔案嗎?
是的,IronOCR 允許您指定裁切區域,以在圖片中定義特定的讀取範圍。此功能有助於將 OCR 處理集中於圖片的相關部分,從而提升效能與準確性。
系統會對圖片自動執行哪些預處理?
IronOCR 會自動套用影像濾鏡,透過修正常見的畫質問題來提升可讀性。IronOCR程式庫能處理格式偵測與預處理,在基本使用情境下無需手動設定。
TIFF 影像處理是否有效能提升?
自 IronOCR 2025.6 版本起,載入 TIFF 影像的效能已全面提升。讀取 TIFF 影像的效能提升程度取決於電腦的 GPU 規格,部分使用者甚至體驗到比先前版本快達兩倍的速度。
使用 IronOCR 進行文件管理有哪些好處?
使用 IronOCR 進行文件管理,可將掃描文件轉換為可搜尋且可編輯的文字,從而簡化工作流程,減少人工資料輸入的需求,並提升文件的可存取性。
IronOCR 如何提升資料準確性?
IronOCR 透過其先進的辨識演算法與影像校正功能來提升資料準確性,確保文字擷取過程既可靠又精確。
IronOCR 是否有提供免費試用版?
是的,Iron Software 提供 IronOCR 的免費試用版,讓使用者能在決定購買前測試其功能與效能。

