如何在 C# 中使用输入图像进行 OCR 处理

如何在 C# 中从流中读取数据以进行 OCR

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

流数据是指可以读取或写入的连续二进制信息流。 在编程和数据处理的背景下,流用于高效处理可能太大而无法完全放入内存中的数据。 流允许以更小、更易于管理的块来读取或写入数据。

IronOCR 的导入方法也接受要导入和读取的图像数据流。 只需将流数据传递给其中一个导入方法即可完成此操作。 该方法将处理导入图像所需的所有步骤。

快速入门:几秒钟内使用流进行 OCR 输入

这个简单的示例展示了如何通过将 System.IO.Stream 送入 IronOCR 立即启动 OCR,从而跳过文件路径,以最少的设置和代码直接跳转到识别的文本。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronOCR

    PM > Install-Package IronOcr

  2. 复制并运行这段代码。

    using var input = new IronOcr.OcrInput(stream);
    var result = new IronOcr.IronTesseract().Read(input);
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronOCR,免费试用!
    arrow pointer


读取流示例

首先,实例化IronTesseract类以执行 OCR。 使用 AnyBitmap 的FromFile方法导入图像文件。此 AnyBitmap 对象能够将图像数据转换为流。 接下来,使用using语句,通过 AnyBitmap 对象的GetStream方法传递图像流来创建 OcrImageInput 对象。 最后,使用Read方法执行 OCR。

:path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-streams.cs
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);
Imports IronOcr
Imports IronSoftware.Drawing

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Read image file to AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

' Import image stream
Private imageInput = New OcrImageInput(anyBitmap.GetStream())
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

指定扫描区域

为了提高处理大型图像的性能并从特定区域获取特定读数,您可以使用CropRectangle类。 OcrImageInput构造函数接受一个CropRectangle对象作为第二个参数。 这样就可以指定要读取图像文档的哪个区域。 在下面的代码示例中,我指定只读取章节编号和标题区域。

:path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-specific-region.cs
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);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Read image file to AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

' Specify crop region
Private scanRegion As New Rectangle(800, 200, 900, 400)

' Add image
Private imageInput = New OcrImageInput(anyBitmap.GetStream(), ContentArea:= scanRegion)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Output the result to console
Console.WriteLine(ocrResult.Text)
$vbLabelText   $csharpLabel

OCR结果

阅读特定区域

常见问题解答

如何在 .NET C# 中读取用于 OCR 处理的图像流?

在 .NET C# 中,您可以利用 IronOCR 的导入方法,通过将流数据传递给 OcrImageInput 构造函数来读取图像流。此方法高效处理图像数据以进行 OCR 处理。

使用流进行 IronOCR 中的 OCR 有什么好处?

使用流可以让 IronOCR 通过处理较小且可管理的数据块来高效处理大型图像文件。这种方法优化了内存使用并加速了 OCR 过程。

如何在 C# 中指定要进行 OCR 读取的图像区域?

要使用 IronOCR 指定用于 OCR 的图像区域,可以使用 CropRectangle 类。将其作为参数传递给 OcrImageInput 构造函数,以专注于图像的特定区域。

IronOCR 能处理实时图像流 OCR 吗?

是的,IronOCR 可以处理实时图像流 OCR,通过连续处理接收的图像数据流。此功能对需要即时文本识别的应用程序非常有利。

如何提高大型图像的 OCR 性能?

要使用 IronOCR 提高大型图像的 OCR 性能,可使用 CropRectangle 类指定扫描区域,以将处理限制在相关区域,从而减少需要分析的数据量。

OcrImageInput 构造函数在 IronOCR 中的作用是什么?

在 IronOCR 中,OcrImageInput 构造函数用于导入图像流并可选地定义用于 OCR 处理的特定感兴趣区域。它简化了图像准备以进行文本提取的过程。

IronOCR 的 Read 方法如何运行?

IronOCR 中的 Read 方法在提供的图像流上执行光学字符识别过程。它从图像数据中提取文本并返回识别的字符。

Chaknith Bin
软件工程师
Chaknith 在 IronXL 和 IronBarcode 工作。他在 C# 和 .NET 方面有着深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的见解有助于更好的产品、文档和整体体验。
审核者
Jeff Fritz
Jeffrey T. Fritz
首席项目经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布