如何在 C# 中使用系統繪圖影像進行 OCR 處理

如何在 C# 中讀取 System.Drawing 對象

This article was translated from English: Does it need improvement?
Translated
View the article in English

System.Drawing.Bitmap是 .NET Framework 中的一個類,用於處理點陣圖映像。 它提供了建立、操作和顯示點陣圖影像的方法和屬性。

System.Drawing.Image是 .NET Framework 中所有 GDI+ 映像物件的基底類別。 它是各種影像類型的父類,包括System.Drawing.Bitmap

IronSoftware.Drawing.AnyBitmapIronDrawing中的一個點陣圖類,IronDrawing 是一個開源函式庫,最初由 Iron Software 開發。 它可以幫助 C# 軟體工程師在 Windows、macOS 和 Linux 平台上的 .NET 專案中取代System.Drawing.Common

快速入門:從 System.Drawing.Bitmap 讀取文字

只需一個簡單的語句,即可建立一個IronTesseract ,並向其提供一個由OcrImageInput包裝的System.Drawing.Bitmap ,以提取所有文字。 這個快速入門範例展示了 IronOCR 如何輕鬆地將圖像轉換為可讀文本,只需極少的設定。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronOCR

    PM > Install-Package IronOcr

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

    var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrImageInput(new System.Drawing.Bitmap("image.png")));
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronOCR,免費試用!
    arrow pointer


讀取 System.Drawing.Bitmap 範例

首先,實例化IronTesseract類別以執行 OCR。 使用各種方法之一建立System.Drawing.Bitmap 。 在程式碼範例中,我決定使用檔案路徑。

接下來,使用using語句建立OcrImageInput對象,並將System.Drawing.Bitmap物件中的圖像傳遞給它。 最後,使用Read方法執行 OCR。

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-bitmap.cs
using IronOcr;
using System.Drawing;

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

// Read image file to Bitmap
Bitmap bitmap = new Bitmap("Potter.tiff");

// Import System.Drawing.Bitmap
using var imageInput = new OcrImageInput(bitmap);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports System.Drawing

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Read image file to Bitmap
Private bitmap As New Bitmap("Potter.tiff")

' Import System.Drawing.Bitmap
Private imageInput = New OcrImageInput(bitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

讀取 System.Drawing.Image 範例

System.Drawing.Image讀取圖像非常簡單,只需使用圖像創建OcrImageInput對象,然後使用Read方法執行標準 OCR 過程。

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-image.cs
using IronOcr;
using Image = System.Drawing.Image;

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

// Open image file as Image
Image image = Image.FromFile("Potter.tiff");

// Import System.Drawing.Image
using var imageInput = new OcrImageInput(image);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports Image = System.Drawing.Image

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Open image file as Image
Private image As Image = Image.FromFile("Potter.tiff")

' Import System.Drawing.Image
Private imageInput = New OcrImageInput(image)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

閱讀 IronSoftware.Drawing.AnyBitmap 範例

同樣地,在建立或取得AnyBitmap物件之後,您可以建構OcrImageInput類別。 構造函數將負責導入資料的所有必要步驟。 下面的程式碼範例演示了這一點。

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-anybitmap.cs
using IronOcr;
using IronSoftware.Drawing;

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

// Open image file as AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Import IronSoftware.Drawing.AnyBitmap
using var imageInput = new OcrImageInput(anyBitmap);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports IronSoftware.Drawing

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Open image file as AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

' Import IronSoftware.Drawing.AnyBitmap
Private imageInput = New OcrImageInput(anyBitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

指定掃描區域

OcrImageInput類別的建構中,您可以指定要掃描的區域。 這樣就可以定義影像文件中用於 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)
$vbLabelText   $csharpLabel

OCR結果

閱讀特定區域

常見問題解答

我如何在C#中從點陣圖圖像中提取文本?

您可以先創建IronTesseract類的實例來使用IronOCR。然後,創建一個System.Drawing.Bitmap並將其傳遞給OcrImageInput物件。最後,使用Read方法提取文本。

從System.Drawing物件中讀取以進行OCR任務涉及哪些步驟?

要使用IronOCR從System.Drawing物件中讀取,下載庫,獲取System.Drawing物件,構建OcrImageInput類,如有需要可定義裁剪區域。使用AnyBitmap以確保在Linux和macOS平台上的跨平台兼容性。

如何對System.Drawing.Image進行OCR?

要對System.Drawing.Image進行OCR,請用該圖像創建一個OcrImageInput物件,然後在IronOCR中執行Read方法。

在跨平台專案中使用AnyBitmap有什麼好處?

Iron Software.Drawing.AnyBitmap允許開發者使用替代System.Drawing.Common的跨平台解決方案,從而在Windows、macOS和Linux上實現OCR功能。

如何通過掃描區域改善OCR性能?

通過在OcrImageInput類中定義特定的掃描區域,可以將OCR精力集中在相關區域,這可以顯著提升性能和準確性。

IronOCR兼容Linux和macOS嗎?

是的,使用IronSoftware.Drawing.AnyBitmap時,IronOCR兼容Linux和macOS,提供了一個OCR任務的跨平台解決方案。

如何在圖像中指定要進行OCR的掃描區域?

在IronOCR中,可以通過在OcrImageInput類中設定座標和尺寸來指定掃描區域,通過聚焦於相關圖像部分來提升OCR性能。

.NET OCR專案中哪些類是處理圖像所必需的?

在.NET OCR專案中,System.Drawing.BitmapSystem.Drawing.ImageIron Software.Drawing.AnyBitmap這些類是處理圖像所必需的。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

審核人
Jeff Fritz
Jeffrey T. Fritz
首席程序经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席程序经理。他是 .NET Conf 虚拟会议系列的执行制作人,并主持“Fritz 和朋友”这一每周两次的开发者的直播节目,在节目上讨论技术并与观众一起编写代码。Jeff 撰写研讨会、主持演讲,并计划大型 Microsoft 开发者活动(包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit)的内容。
準備好開始了嗎?
Nuget 下載 5,167,857 | Version: 2025.11 剛發表