如何使用 IronOCR 在 C# 中讀取影像
IronOCR 使用光學字元辨識技術從JPG 、 PNG 、 GIF 、 TIFF和BMP格式的影像中擷取文字。 安裝 NuGet 套件後,只需一行程式碼即可實現基本的文字提取。
OCR(光學字元辨識)技術能夠辨識和擷取影像中的文字。 它透過從掃描的頁面、照片或其他圖像檔案中提取文字內容,將印刷文件數位化。 IronOCR 使用Tesseract 5的先進機器學習演算法,並結合專有的影像預處理技術,實現了業界領先的準確度。
該庫支援jpg 、 png 、 gif 、 tiff和bmp格式。 影像濾鏡透過自動校正常見的影像品質問題來提高閱讀體驗。 IronOCR 將Tesseract 5與先進的預處理技術相結合,可對不同影像品質和格式(從高解析度掃描到壓縮的 Web 影像)提供準確的結果。
快速入門:使用 IronOCR 讀取影像檔案
用一行程式碼從圖像中提取文字。 本範例載入圖像並使用IronTesseract的Read方法讀取其文字。 此庫可自動處理影像預處理和文字擷取。
立即開始使用 NuGet 建立 PDF 檔案:
使用 NuGet 套件管理器安裝 IronOCR
複製並運行這段程式碼。
var result = new IronTesseract().Read(new OcrImageInput("Potter.png"));部署到您的生產環境進行測試
最簡工作流程(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 安裝。
[{i:(
從版本 2025.6 開始:
- 現在載入 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}%");
請造訪"如何讀取多幀/頁 GIF 和 TIFF"頁面,以了解如何讀取 TIFF 和 GIF 影像。 有關多頁文件,請參閱多頁 TIFF 處理範例。
為什麼自信程度很重要?
置信度表示 IronOCR 對擷取文字準確度的確定程度。 高於 85% 的數值通常表示結果可靠。 較低的分數可能需要影像預處理或人工審核。 使用置信度評分自動標記文件以進行人工審核,或觸發額外的影像最佳化篩選器。
何時應該使用不同的影像格式?
由於採用無損壓縮,PNG 和 TIFF 格式可提供最佳的 OCR 效果。 單頁文件請使用 PNG 格式,多頁掃描件請使用 TIFF 格式。 JPEG格式適用於照片,但可能會引入壓縮偽影。 BMP格式提供未壓縮的畫質,但檔案較大。 GIF 適用於顏色有限的簡單圖形。 了解更多關於格式特定優化的資訊。
常見的影像讀取錯誤有哪些?
常見錯誤包括影像解析度低(低於 200 DPI)、文字傾斜、對比度差或不支援的語言。 IronOCR 可以自動修正許多問題,但嚴重的問題可能需要手動預處理。 請參閱我們的故障排除指南以取得解決方案。
如何將圖像匯入為位元組流?
OcrImageInput類別接受以檔案路徑、位元組、 AnyBitmap 、Stream 或 Image 物件形式傳入的影像。 AnyBitmap是IronSoftware.Drawing.AnyBitmap中的一個點陣圖物件。 這種靈活性使得它能夠與各種資料來源(包括資料庫、Web API 和雲端儲存)無縫整合。
這種靈活性有助於處理來自資料庫、Web 服務或記憶體流的影像。 有關進階流處理,請參閱使用輸入流的 OCR 。 System.Drawing 整合指南提供了更多與舊程式碼相容的範例。
:path=/static-assets/ocr/content-code-examples/how-to/input-images-import-byte.csusing 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);什麼時候應該使用位元組數組而不是文件路徑?
當影像來自資料庫、Web 服務或加密來源時,位元組數組的效果最佳。 由於檔案不需要臨時磁碟存儲,因此安全性更高。 在雲端應用、微服務或處理敏感文件時,請使用位元組數組。 對於本地批次處理大型影像集合,檔案路徑仍然是一種更有效率的處理方式。
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);為什麼記憶體管理對影像位元組很重要?
大型影像會消耗大量內存,尤其是在同時處理多個文件時。 使用"using"語句可以確保正確釋放資源。 對於批次處理,可以考慮實現並發操作有限的佇列系統。 此多線程指南演示了高效的記憶體管理技術。
不同輸入類型對效能有何影響?
檔案路徑為本機檔案提供了最快的效能,因為 IronOCR 可以直接讀取資料。 位元組數組需要將整個圖像載入到記憶體中,但提供了靈活性。 串流傳輸透過增量讀取資料來平衡記憶體使用和效能。 為了獲得大批量處理的最佳效能,請參閱我們的效能調優指南。
如何指定掃描區域?
實例化OcrImageInput時傳遞CropRectangle以指定要處理的影像區域。 限制掃描區域可以顯著提高效能。 下面的範例只讀取章節編號和標題。 針對特定文件區域,該技術可將處理時間縮短高達 90%。
對於複雜的佈局或多個區域,請參閱影像的 OCR 區域。 內容區域指南解釋了高級區域選擇技巧。
:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.csusing 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);為什麼指定區域可以提高效能?
僅處理相關的影像區域可減少 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);了解影像優化濾鏡和修復低品質掃描件的方法。 如需進行色彩校正,請參閱影像色彩校正指南。
何時應該應用影像預處理濾波器?
處理掃描文件、文字照片或有品質問題的影像時,請套用篩選器。 常見應用場景包括修復傾斜的頁面、移除影本中的背景噪音或增強褪色的文字。 DPI 設定指南有助於優化解析度相關問題。
為什麼過濾器的順序很重要?
過濾順序對結果有顯著影響。 首先進行旋轉校正( Deskew ),然後進行去噪,最後進行對比增強。 二值化通常應該放在最後進行。順序錯誤可能會放大問題—例如,在降噪之前進行銳利化會增加雜訊的可見度。 測試不同的序列以獲得最佳結果。
常見的預處理錯誤有哪些?
過度處理是最常見的錯誤。 過度銳利化會產生偽影,過度降噪會去除精細的文字細節,不恰當的二值化閾值會失去訊息。 首先進行最少的預處理,僅在需要時添加過濾器。 影像品質校正指南提供了詳細的最佳實踐。
如何優化效能?
處理多張影像或大量資料時,請考慮以下最佳化措施:
1.重複使用IronTesseract實例:為多個操作建立一個實例
2.指定掃描區域:將 OCR 限制在相關的影像區域內,可獲得 60-90% 的增益。
3.使用合適的圖像格式:PNG 和 TIFF 比 JPEG 格式效果更好。
4.選擇性地應用預處理:僅在必要時使用過濾器
5.實作並行處理:利用多核心 CPU 進行批次操作
對於高效能場景,請參閱多執行緒指南和快速 OCR 配置。 進度追蹤功能有助於監控長時間運行的操作。
為什麼實例重用可以提高效能?
IronTesseract初始化會載入語言資料並配置 OCR 引擎,耗時 200-500 毫秒。 重複使用實例可以消除後續操作的這種開銷。 為了最大限度地提高效率,對於 Web 應用程序,應建立單例實例;對於批次處理,應建立共用實例。
何時應該使用並行處理?
並行處理有利於處理多個獨立影像的場景。 同時處理不同的頁面或文檔,但避免對相同影像進行並行操作。 現代CPU可以有效處理4-8個並發的OCR操作。 監控記憶體使用情況,因為每次操作需要 100-500MB 的內存,具體取決於圖像大小。
記憶體使用方面需要考慮哪些因素?
OCR 操作通常需要在 RAM 中佔用映像檔大小的 10-20 倍。 一張 5MB 的圖片在處理過程中可能會佔用 50-100MB 的記憶體。 對於大批量處理,採用生產者-消費者模式,並限制並發操作數。 中止令牌範例示範如何取消記憶體密集型操作。
下一步是什麼?
利用以下資源從更複雜的場景中提取文字:
-讀取 PDF 文件中的文字– 使用 OCR 處理 PDF 文檔
-從螢幕截圖中提取資料– 擷取並讀取螢幕內容
-處理掃描文件– 處理多頁掃描文件
-使用 System.Drawing 物件– 與現有的 .NET 影像處理程式碼集成
-閱讀多種語言– 提取 125 多種語言的文本
-處理特定類型的文件-針對護照、發票等進行最佳化
常見問題解答
在 C# 中可以讀取哪些影像格式來進行文字擷取?
IronOCR 支援從 JPG、PNG、GIF、TIFF 和 BMP 影像格式讀取文字。該函式庫會自動偵測影像格式,並應用適當的預處理,以獲得最佳的文字擷取結果。
如何在一行代碼中從圖像檔中提取文字?
您可以使用 IronOCR 單行提取文字:`var result = new IronTesseract().Read(new OcrImageInput("image.png"));`.這會使用 Tesseract 5 OCR 技術自動處理影像預處理和文字擷取。
讀取影像時使用何種 OCR 技術?
IronOCR 結合了 Tesseract 5 先進的機器學習演算法與專屬的影像預處理。從高解析度掃描到壓縮網頁影像,IronOCR 結合了 Tesseract 5 先進的機器學習演算法與專屬的影像預處理,在不同的影像品質與格式下,都能提供領先業界的精確度。
閱讀圖片時,如何正確處理資源?
在建立 OcrImageInput 物件時,請使用「using」語句,以確保適當的資源處理。此模式會自動管理記憶體和檔案句柄:`using var ocrInput = new OcrImageInput("image.jpg");`
我可以讀取影像的特定區域而非整個檔案嗎?
是的,IronOCR 允許您指定裁剪區域,以定義圖像中的特定閱讀區域。此功能有助於將 OCR 處理集中在影像的相關部分,以獲得更佳的效能與準確性。
圖像會自動進行哪些預處理?
IronOCR 可自動套用影像濾鏡,透過修正常見的品質問題來增強閱讀能力。該函式庫可處理格式偵測與預處理,基本用例無需手動設定。
TIFF 影像處理的效能是否有提升?
從 IronOCR 版本 2025.6 開始,載入 TIFF 影像的效能持續加快。讀取 TIFF 影像的效能改善取決於電腦的 GPU,有些使用者的讀取速度可達先前版本的兩倍。







