IRONSOFTWAREHOME

如何从 C# 中的流中读取用于 OCR 的信息

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

IronOCR 通过将流传递给 OcrInputOcrImageInput 构造函数,直接从流中读取 C# 中的图像数据,实现高效的 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。 使用 FromFileAnyBitmap 方法导入图像文件。此 AnyBitmap 对象将图像数据转换为流。 接下来,使用 using 语句通过传递带有 GetStream 方法的图像流创建 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 类。 OcrImageInput 构造函数接受一个 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;
}

要增强图像处理能力,请考虑使用 Filter Wizard 自动确定特定文档类型的最佳预处理步骤。此外,在处理数据流中旋转或倾斜的图像时,修复图像方向功能可显著提高 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#

结果对象还提供了导出为可搜索 PDF 文件hOCR HTML 格式的方法,从而可以轻松地从您的流输入创建可搜索文档档案。 出于调试目的,您可以使用高亮文本功能来直观查看 IronOCR 在图像中检测到的内容。

我应该了解哪些性能注意事项?

在处理多个数据流或实施高吞吐量 OCR 解决方案时,请考虑这些优化策略:

  1. 复用 IronTesseract 实例:创建一个实例并在多次操作中复用
  2. 实现进度跟踪:对于大型流,使用进度跟踪来监控处理状态
  3. 并行处理IronOCR 支持对多个流的并发处理
  4. 优化图像质量:预处理流以确保最佳的分辨率和清晰度

为获得最高性能,请探索快速 OCR 配置选项,并考虑为批量操作实施多线程处理。 在使用对时间敏感的应用程序时,了解超时可帮助您有效管理长时间运行的 OCR 操作。

如何排除常见的流问题?

在使用流媒体时,您可能会遇到一些特殊的挑战。 以下是常见情况的解决方案:

  • Stream 位置:在传递给 IronOCR 之前,总是将流位置重置为 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 对象,然后调用读取方法:"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 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

准备开始了吗?

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 天试用密钥
无需信用卡或创建账户