如何使用 IronOCR 在 C# 中读取照片

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

处理大量文档,特别是像 TIFF 文件这样的扫描图像时,手动提取文本既费时又容易出错。 光学字符识别 (OCR) 技术正是在这种情况下发挥作用,它提供了一种自动方法,可以准确地将图像中的文本转换为数字数据。 OCR 技术可以处理图像的复杂性,例如扫描的文档或照片,并将其转换为可搜索、可编辑的文本。 这不仅加快了文档处理速度,而且与人工转录相比,还能确保更准确的数据提取。

使用 OCR 技术处理 TIFF 等格式的数据(由于其尺寸、颜色深度或压缩等原因,这些数据可能难以阅读),可以让企业和开发人员快速地将大量数据数字化和管理。 借助 IronOCR 的ReadPhoto功能等 OCR 解决方案,开发人员可以从图像中提取文本,甚至可以执行高级操作,例如搜索关键字或将扫描数据转换为可搜索的 PDF。 这项技术对于处理法律文件、档案或收据的行业尤其有用,因为在这些行业中,高效的数据检索至关重要。

在本教程中,我们将简要介绍如何使用ReadPhoto以及如何操作结果对象。 我们还将讨论开发人员可能更喜欢使用ReadPhoto而不是 IronOCR 的标准Read的场景。

要使用此功能,您还必须安装IronOCR.Extension.AdvancedScan软件包。

快速入门:使用 ReadPhoto 从复杂图像中提取文本

快速上手:使用 IronOCR 的 ReadPhoto 方法对加载了图像帧的 OcrInput 进行操作,即可一次性提取所有文本和区域。 它针对 TIFF、GIF 和类似的图片密集型格式进行了优化,可提供流畅的 OCR 体验。

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

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

    PM > Install-Package IronOcr

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

    var result = new IronTesseract().ReadPhoto(new OcrInput().LoadImageFrame("photo.tiff", 0));
  3. 部署到您的生产环境中进行测试

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

阅读照片示例

使用 IronOCR 读取tiffgif等高质量照片格式相对简单。 首先,我们创建一个新变量并将其赋值为OcrInput ,然后使用LoadImageFrame加载图像。 最后,我们使用ReadPhoto方法并得到结果。

[{i:(

  • 由于 Tiff 格式图像中包含多个帧,因此需要PageNumber参数。 此外,该索引从 0 开始,而不是从 1 开始。
  • 目前该方法仅适用于英语、中文、日语、韩语和拉丁字母。
  • 在 .NET Framework 上使用高级扫描功能需要项目在 x64 架构上运行。 @@--bracket-close--@@@

输入

由于大多数浏览器本身不支持 TIFF 格式,您可以从这里下载 TIFF 输入文件。 为了显示 TIFF 文件,我将其转换为 WEBP 格式。

Input

代码

:path=/static-assets/ocr/content-code-examples/how-to/read-photo-read-photo.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var inputPhoto = new OcrInput();
inputPhoto.LoadImageFrame("ocr.tiff", 0);

// Read photo
OcrPhotoResult result = ocr.ReadPhoto(inputPhoto);

// Index number refer to region order in the page
int number = result.TextRegions[0].PageNumber;

// Extract the text in the first region
string textinregion = result.TextRegions[0].TextInRegion;

//Extract the co_ordinates of the first text region
Rectangle region = result.TextRegions[0].Region;

var output = $"Text in First Region: {textinregion}\n"
             + $"Text Region:\n"
             + $"Starting X: {region.X}\n"
             + $"Starting Y: {region.Y}\n"
             + $"Region Width: {region.Width}\n"
             + $"Region Height: {region.Height}\n"
             + $"Result Confidence: {result.Confidence}\n\n"
             + $"Full Scnned Photo Text: {result.Text}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputPhoto = New OcrInput()
inputPhoto.LoadImageFrame("ocr.tiff", 0)

' Read photo
Dim result As OcrPhotoResult = ocr.ReadPhoto(inputPhoto)

' Index number refer to region order in the page
Dim number As Integer = result.TextRegions(0).PageNumber

' Extract the text in the first region
Dim textinregion As String = result.TextRegions(0).TextInRegion

'Extract the co_ordinates of the first text region
Dim region As Rectangle = result.TextRegions(0).Region

Dim output = $"Text in First Region: {textinregion}" & vbLf & $"Text Region:" & vbLf & $"Starting X: {region.X}" & vbLf & $"Starting Y: {region.Y}" & vbLf & $"Region Width: {region.Width}" & vbLf & $"Region Height: {region.Height}" & vbLf & $"Result Confidence: {result.Confidence}" & vbLf & vbLf & $"Full Scnned Photo Text: {result.Text}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

输出

output

Text :从 OCR 输入中提取的文本。 Confidence :一个"双精度"属性,表示每个字符平均值的统计准确性置信度,1 为最高,0 为最低。 TextRegions :一个" TextRegions "属性的列表,指示 OCR 文本及其在输入中的位置。 在上面的例子中,我们打印了帧编号以及包含文本的矩形。


ReadPhotoRead的区别

ReadPhoto方法与标准Read的主要区别在于结果对象及其接受的文件格式。 LoadImageFrame函数仅接受tiffgif ,出于多种原因不支持jpeg等格式。

TIFF 和 JPEG 图像的比较

TIFF 文件格式是无损的,通常用于将多个页面和多个帧压缩成一个单一格式。 它通常用于高质量、多图像存储(例如法律文件、医学图像)。 它比标准 JPEG 格式复杂得多,因此需要采用不同的方法才能从中完全提取文本。

此外,TIFF 图像使用不同的压缩方法,因此 IronOCR 必须使用专门的方法来破译文本。

以下是TIFF和JPEG格式的进一步比较。

特征 TIFF(带标签的图像文件格式) JPG/JPEG(联合图像专家组)
压缩 无损或未压缩(保持音质) 有损压缩(以降低质量为代价减小文件大小)
文件大小 大号(由于质量高且可选无压缩) 体积更小,针对网页使用进行了优化,加载速度更快
图像质量 高品质(非常适合专业用途,保留所有细节) 较低(由于有损压缩,会牺牲一些音质)
颜色深度 支持高色彩深度(每通道最高可达 16 位或 32 位) 24 位色彩(1670 万种颜色)
用例 专业摄影、出版、扫描、存档 网络图片、社交媒体、日常照片
透明度 支持透明度和 Alpha 通道 支持透明度
编辑 适合多次编辑(重新保存不会损失质量) 反复编辑和保存会导致质量下降。
兼容性 专业软件广泛支持 在所有平台和设备上均通用
动画片 不支持动画 不支持动画
元数据 存储大量元数据(EXIF、图层等) 存储 EXIF 元数据,但功能较为有限。

不同场景

开发人员必须考虑生产环境中的每一个使用场景,以进一步优化并使应用程序高效运行。 虽然ReadPhoto适用于像上面这样的TIFF等复杂图像,但处理结果的速度会很慢。 另一方面, JPEG图像质量可能较低,但处理速度通常更快。 但是,如果图像质量不佳(例如存在噪声),则 OCR 的置信度会很低。

使用OcrPhotoResults或任何使用IOcrResult接口的类中的confidence属性,可以了解结果的准确程度,从而使开发人员能够根据需要进行测试、迭代和优化。

开发人员应在效率和准确性之间找到平衡点,确保图像达到一定的一致性阈值。

常见问题解答

C# 中的 ReadPhoto 方法是什么?

IronOCR 中的 C# ReadPhoto 方法旨在从复杂的图像格式(如 TIFF 和 GIF)中提取文本,使用光学字符识别(OCR)将其转换为可搜索的数字数据。

为什么我应该使用 ReadPhoto 而不是标准的 Read 函数?

ReadPhoto 针对像 TIFF 和 GIF 这样的复杂图像格式进行了优化,这些由于其压缩和质量特征需要特殊处理,相较于标准 Read 函数更适合这些类型的图片。

如何确保在 C# 中使用 OCR 的最佳文本提取效果?

为了确保 C# 中 OCR 的最佳文本提取效果,考虑图像质量和格式。使用 IronOCR 的 ReadPhoto 方法处理高质量和复杂格式如 TIFF 可以提高准确性和效率。

ReadPhoto 方法支持哪些图像格式?

IronOCR 中的 ReadPhoto 方法支持复杂的图像格式,如 TIFF 和 GIF,非常适合高质量的文本提取任务。

What are the benefits of converting TIFF files using OCR?

使用 IronOCR 的 ReadPhoto 方法将 TIFF 文件转换为高质量图像为可搜索和可编辑的数字数据,这对于文档管理和存档非常有利。

OCR 技术如何提升文档处理?

OCR 技术自动将图像中的文本转换为数字数据,显著提高处理速度和准确性,尤其是在管理大量文档时。

什么因素会影响 OCR 中图像处理方法的选择?

影响因素包括图像格式和质量、处理速度以及特定使用案例的需求。IronOCR 的 ReadPhoto 适合高质量、复杂的图像,而其他方法可能对简单格式更加有效。

IronOCR 的 ReadPhoto 方法可以用来处理彩色图片吗?

是的,IronOCR 的 ReadPhoto 方法能够处理彩色图像,特别是 TIFF 和 GIF 格式,允许在全彩色文档中准确提取文本。

'confidence' 属性在 OCR 结果中起什么作用?

OCR 结果中的 'confidence' 属性提供了文本提取的准确性统计度量,帮助开发人员评估数字数据的可靠性。

开发人员如何在他们的应用程序中使用 ReadPhoto 的 OCR 结果?

开发人员可以通过访问 OcrPhotoResult 属性来使用 IronOCR 的 ReadPhoto 的 OCR 结果,其中包括提取的文本、置信度分数和文本区域,从而实现数据进一步处理和应用集成。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布