IRONSOFTWAREHOME

如何在C#中使用IronOCR從流中讀取

Curtis Chau
Curtis Chau
Updated: 2026年6月4日

IronOCR在C#中通過將流傳遞到OcrImageInput構造函式來直接從流中讀取影像資料,使其無需將文件保存到磁碟便可進行高效的OCR處理。

流是一種可讀或可寫的二進制資訊的持續流動。 在程式開發中,流通過以可管理的塊處理過大的資料,使其更高效。

IronOCR的導入方法可以直接接受影像資料流。 將流資料傳遞給導入方法,它將自動處理所有必要步驟。 對於進階場景,探索OcrInput,它提供了準備各種輸入格式的廣泛選項。

快速入門:在幾秒鐘內使用流作為OCR輸入

此範例透過將System.IO.Stream傳遞給IronOCR,示範無需文件路徑即以最少程式碼即時進行OCR並檢索識別出的文字。

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

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

    using var input = new IronOcr.OcrInput(stream);
    var result = new IronOcr.IronTesseract().Read(input);
    C#
  3. 3部署以在您的實時環境中測試

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

如何使用IronOCR讀取流?

首先,實例化**IronTesseract**類來執行OCR。 使用AnyBitmap物件將影像資料轉換為流。 接下來,使用OcrImageInput物件。 最後,使用Read方法執行OCR。

using IronOcr;
using IronSoftware.Drawing;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Import image stream
using var imageInput = new OcrImageInput(anyBitmap.GetStream());
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

基於流的OCR對於接收影像上傳的網頁應用程式、從資料庫處理影像,或處理不應寫入磁碟的暫時資料非常有利。 流的方法與System.Drawing物件及其他影像操作程式庫無縫整合。

為什麼使用流進行OCR?

使用流為.NET開發人員提供了多項優勢:

  1. 記憶體效率:以塊處理資料而非將整個文件載入記憶體
  2. 安全性:處理敏感文件而不在磁碟上建立臨時文件
  3. 性能:消除檔案系統操作中的I/O開銷
  4. 靈活性:處理網頁上傳、資料庫BLOB和記憶體中的轉換

對於處理多頁面文件或處理PDF流,IronOCR保持相同的簡單API同時提供強大的性能。 處理掃描文件時,還可以利用IronOCR的功能通過流處理有效地讀取掃描的文件

如何為流OCR指定掃描區域?

為改善大影像上的性能並從特定區域獲得讀數,請使用CropRectangle類。 CropRectangle物件作為第二個參數,允許您指定應讀取影像文件的哪個區域。 下面的程式碼範例指定僅讀取章節號和標題區域。

using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput(anyBitmap.GetStream(), ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output the result to console
Console.WriteLine(ocrResult.Text);

當您需要OCR影像的特定區域或處理結構化文件時這一技術特別有用,因為文字在預測位置上出現。 對於涉及表格或結構化資料的更複雜情況,探索如何在文件中讀取表格

掃描區域在輸出中看起來如何?

OCR範例:圖片檢視器中的文件及除錯控制檯中顯示的'第八章 死亡派對'提取文字

我能使用哪些進階流處理技術?

當處理流時,利用IronOCR額外的功能來提高識別準確性。 直接將影像優化過濾器應用於流資料上然後再進行OCR處理:

using IronOcr;
using IronSoftware.Drawing;
using System.IO;

// Process stream with filters
public string ProcessStreamWithFilters(Stream imageStream)
{
    IronTesseract ocrTesseract = new IronTesseract();
    
    // Configure for better accuracy
    ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
    ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
    
    using var input = new OcrImageInput(imageStream);
    
    // Apply preprocessing filters
    input.Deskew();
    input.DeNoise();
    input.Sharpen();
    
    var result = ocrTesseract.Read(input);
    return result.Text;
}

為了增強影像處理,請考慮使用過濾向導來自動確定適合您特定文件型別的最佳預處理步驟。此外,處理流中的旋轉或傾斜影像時,修正影像方向功能可顯著提高OCR準確性。

如何處理不同的流源?

IronOCR無縫處理各種流來源。 無論是從網頁表單處理上傳,從資料庫檢索影像,或在格式之間轉換,API均保持一致:

// From MemoryStream
byte[] imageBytes = GetImageBytesFromDatabase();
using var memoryStream = new MemoryStream(imageBytes);
using var input = new OcrImageInput(memoryStream);

// From FileStream
using var fileStream = new FileStream("document.png", FileMode.Open);
using var input2 = new OcrImageInput(fileStream);

// From network stream
using var webClient = new WebClient();
using var networkStream = webClient.OpenRead("https://example.com/image.jpg");
using var input3 = new OcrImageInput(networkStream);

為獲得最佳結果,處理低解析度流時考慮調整DPI設置。 IronOCR自動處理DPI檢測,但手動配置可為特定使用情況提高準確性。 處理多頁文件時,探索通過流處理多頁TIFF和GIF文件

如何處理來自流的OCR結果?

在處理您的流後,IronOCR提供了超出簡單文字提取的豐富結果物件。 OcrResult包含有關識別文字的詳細資訊,包括信心水準、定位和結構:

// Process stream and analyze results
using var input = new OcrImageInput(stream);
var result = new IronTesseract().Read(input);

// Access detailed results
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%");
    
    foreach (var paragraph in page.Paragraphs)
    {
        Console.WriteLine($"Paragraph: {paragraph.Text}");
        Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}");
    }
}

// Export results
string text = result.Text;
string searchablePdf = result.SaveAsSearchablePdf("output.pdf");
string hocrHtml = result.SaveAsHocrFile("output.html");
C#

結果物件還提供方法來匯出為可搜尋的PDFhOCR HTML格式,使從流輸入建立可搜尋的文件檔案更為容易。 為除錯用途,您可以使用高亮文字功能來視覺化IronOCR在您的影像中檢測到的內容。

我應該知道哪些性能考量?

處理多個流或實現高吞吐量OCR解決方案時,請考慮以下優化策略:

  1. 重用IronTesseract實例:建立一個實例並在多個操作中重用
  2. 實施進度追蹤:對於大型流,使用進度追蹤來監控處理狀態
  3. 並行處理IronOCR支持多流的並發處理
  4. 優化影像質量:預處理流以確保最佳解析度和清晰度

為獲得最佳性能,探索快速OCR配置選項,並考慮在批次操作中實施多執行緒處理。 處理時間敏感的應用程式時,理解超時有助於有效管理長時間運行的OCR操作。

如何排除常見流問題?

當處理流時,您可能會遇到具體挑戰。 以下是常見情境的解決方案:

  • 流位置:在傳遞給0
  • 資源釋放:使用using語句確保妥善的資源清理
  • 格式支持:通過流IronOCR支持包括JPEG、PNG、TIFF、BMP在內的多種影像格式
  • 記憶體管理:對於大型流,考慮分塊處理或流方法

對於複雜文件或當標準OCR無法提供令人滿意的結果時,電腦視覺功能可以幫助更準確地定位和提取文字。 此外,當處理低質量流時,參考修正低質量掃描指南,預處理技術可以顯著提高識別率。

欲了解有關如何處理流或其他輸入方法的詳細資訊,請探索我們的完整指南程式碼範例

常見問題

如何在不先將圖像資料儲存到磁碟的情況下進行OCR?

IronOCR允許您透過將圖像流傳遞到OcrInput或OcrImageInput構造函式來直接處理圖像流。這使得在不建立臨時檔案的情況下進行高效OCR處理成為可能,非常適合處理網頁上傳、資料庫BLOB或不應該接觸磁碟的敏感文件。

哪些型別的流可以用作OCR處理的輸入?

IronOCR接受任何包含圖像資料的System.IO.Stream。這包括來自網頁上傳的記憶體流,來自資料庫BLOB欄位的流,或從圖像操作程式庫建立的流。當您將流傳遞給OcrInput或OcrImageInput時,程式庫會自動處理所有必要的轉換步驟。

在C#中對流進行OCR的最簡便方法是什麼?

最快的方法是用您的流建立一個OcrInput物件並呼叫Read方法:'using var input = new IronOcr.OcrInput(stream); var result = new IronOcr.IronTesseract().Read(input);'。這段最小程式碼執行OCR並立即返回辨識出的文字。

為什麼我應該使用流而不是檔案路徑進行OCR?

使用IronOCR進行基於流的OCR提供了多個優勢:透過分塊處理資料提高記憶體效率,避免在磁碟上建立臨時文件以增強安全性,消除檔案I/O開銷提高性能,以及在處理網頁上傳或資料庫BLOB時提供更大的靈活性。

我可以指定圖像流的特定區域進行讀取嗎?

是的,IronOCR允許您在處理流時通過指定裁剪區域來定義讀取區域。此功能允許您專注OCR於圖像的特定部分,而不必處理整個文件,提高速度和準確性。

流處理如何與其他圖像操控程式庫整合?

IronOCR的流方法可與System.Drawing物件和其他.NET圖像操控程式庫無縫整合。您可以使用AnyBitmap類利用GetStream方法將圖像轉換為流,這使得將OCR與其他圖像處理工作流程結合變得輕鬆。

What should I consider for optimal performance with stream-based OCR?

For optimal performance, reuse `IronTesseract` instances, implement progress tracking, process in parallel, and optimize image quality before processing. These strategies can enhance throughput and efficiency for high-volume OCR tasks.

What are common troubleshooting tips for using streams in IronOCR?

Common troubleshooting tips include ensuring stream position is reset to `0` before processing, using `using` statements for resource cleanup, and confirming that all supported image formats are correctly handled.

How does IronOCR improve OCR for low-quality streams?

IronOCR offers preprocessing techniques to enhance OCR on low-quality streams. By applying filters and other image optimizations, recognition rates can significantly improve, especially for documents with poor scan quality.

Can IronOCR process multiple page documents using streams?

Yes, IronOCR can efficiently process multiple page documents through stream handling, maintaining a user-friendly API and offering robust performance suitable for PDF streams and other multi-page formats.

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

準備開始了嗎?

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

立即獲取免費

立即獲取 30天試用金鑰

bullet_checked無需信用卡或註冊帳號
bullet_test在生產
環境中進行測試,且不顯示浮水印
bullet_calendar30 天全
功能產品
bullet_support試用期間提供 24/5 技術
支援
立即獲取您的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天試用金鑰
無需信用卡或帳戶建立