如何使用 IronOCR 在 C# 中实现照片图片转文字 OCR识别
IronOCR 的 ReadPhoto 方法通过强大的图片转文字技术,可从 TIFF 和 GIF 等复杂照片格式中提取文本,提供带有文本区域和置信度分数的结构化 OCR识别结果,针对需要精确处理的高质量扫描文档进行了优化。
在处理大量文件,特别是 TIFF 文件等扫描图像时,手动提取文本既耗时又容易出错。 光学字符识别 (OCR) 可自动完成这一过程,将图像中的文本转换为数字数据。 OCR 技术可处理扫描文件和照片等复杂图像,将其转化为可搜索、可编辑的文本。 这样可以加快文档处理速度,确保准确提取数据。
在TIFF和GIF等格式上使用OCR可以实现大量数据的快速数字化,尽管它们在尺寸、颜色深度或压缩方面存在挑战。 借助 IronOCR 的 ReadPhoto 功能,开发人员可以从图像中提取文本,并执行高级操作,例如关键字搜索或将扫描数据转换为可搜索的 PDF。 这项技术对处理法律文件、档案或收据等对高效数据检索至关重要的行业大有裨益。
本教程演示如何使用 ReadPhoto 和操作 results 对象。 我们将讨论何时使用 ReadPhoto 而不是IronOCR的标准 Read 。 关于一般图像处理,请浏览 读取各种图像格式。
要使用此功能,请安装 IronOcr.Extension.AdvancedScan软件包。
快速入门:使用 ReadPhoto 从复杂图像中提取文本
快速上手:使用 IronOCR 的 ReadPhoto 方法,在加载了图像帧的 OcrInput 上提取所有文本和区域。 它针对 TIFF、GIF 和类似照片格式进行了优化。
最小工作流程(5 个步骤)
- 下载用于读取照片的 C# 库
- 导入需要处理的图像
- 根据图像类型使用适当的导入方法
- 使用`ReadPhoto`方法从图像中提取数据
- 访问 **`OcrPhotoResult`** 属性以查看和操作提取的数据
如何使用 ReadPhoto 从 TIFF 图像中提取文本?
使用 IronOcr 可以直接读取 TIFF 和 GIF 等高质量照片格式。 首先,创建一个 OcrInput 变量,并使用 LoadImageFrame 加载图像。 然后使用 ReadPhoto 方法获取结果。 多页 TIFF OCR 教程提供了更多的多页文档示例。
- TIFF 文件包含多个帧; 使用从零开始的索引时,需要使用
PageNumber参数。 - 该方法目前支持英语、中文、日语、韩语和拉丁字母。
- 在 .NET Framework 上使用高级扫描需要 x64 架构。
)}]
我应该使用什么输入格式?
由于浏览器原生不支持 TIFF 格式,请在此处下载 TIFF 输入。 下面显示的版本已转换为 WEBP。

如何实现 ReadPhoto 方法?
本实现演示了从 TIFF 图像中提取文本和区域信息。 有关更多示例,请参阅我们的图片阅读代码示例。
: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)
OcrPhotoResult 提供哪些属性?

OcrPhotoResult 类提供了分析提取文本的关键属性。 有关使用 OCR 结果的详细信息,请参阅我们的数据输出和结果处理指南。
Text : 从 OCR 输入中提取的文本。
Confidence : 统计准确度置信度(0-1 等级,1 为最高)。 了解有关结果置信度得分的更多信息。
TextRegions : 包含位置数据的文本区域列表。 类似于定义 OCR 区域以进行有针对性的提取。
什么情况下应使用 ReadPhoto 而不是 Read?
ReadPhoto 与标准 Read 的主要区别在于 result 对象和支持的文件格式。 LoadImageFrame 明确接受 TIFF 和 GIF 格式,不接受 JPEG 等格式。 ReadPhoto 针对复杂的图像格式进行了优化,而标准的 Read 则适用于更简单的图像和一般的文本提取任务。
为什么 ReadPhoto 仅支持 TIFF 和 GIF 格式?
TIFF 是一种无损格式,用于将多个页面和帧压缩到一个文件中。它用于高质量、多图像存储,如法律文件和医学图像。 由于比 JPEG 更为复杂,因此需要不同的文本提取方法。 专业化的处理方式可确保使用专业级图片格式获得最佳效果。
TIFF 图像使用不同的压缩方法,因此 IronOCR 采用专门的算法来破译文本。 ReadPhoto 中的先进算法能够处理 TIFF 压缩特性,确保从复杂的多层文档中准确提取。
下面是 TIFF 和 JPEG 格式的比较:
| 特征 | TIFF(带标签的图像文件格式) | JPG/JPEG(联合图像专家组) |
|---|---|---|
| 压缩 | 无损或未压缩(保持音质) | 有损压缩(以降低质量为代价减小文件大小) |
| 文件大小 | 大号(由于质量高且可选无压缩) | 体积更小,针对网页使用进行了优化,加载速度更快 |
| 图像质量 | 高品质(非常适合专业用途,保留所有细节) | 较低(由于有损压缩,会牺牲一些音质) |
| 颜色深度 | 支持高色彩深度(每通道最高可达 16 位或 32 位) | 24 位色彩(1670 万种颜色) |
| 用例 | 专业摄影、出版、扫描、存档 | 网络图片、社交媒体、日常照片 |
| 透明度 | 支持透明度和 Alpha 通道 | **不**支持透明度 |
| 编辑 | 适合多次编辑(重新保存不会损失质量) | 反复编辑和保存会导致质量下降。 |
| 兼容性 | 专业软件广泛支持 | 在所有平台和设备上均通用 |
| 动画片 | 不支持动画 | 不支持动画 |
| 元数据 | 存储大量元数据(EXIF、图层等) | 存储 EXIF 元数据,但功能较为有限。 |
如何为我的应用程序选择 ReadPhoto 和 Read?
考虑每个生产用例,优化应用程序性能。 虽然 ReadPhoto 适用于复杂的 TIFF 图像,但其处理速度较慢。 JPEG 处理速度更快,但质量较低,可能导致 OCR 可信度较低。 必要时使用图像质量校正过滤器来改进结果。
confidence 属性位于 OcrPhotoResults 或任何 IOcrResult 接口类中,用于指示结果精度,方便开发人员进行测试和优化。对于精度要求最高的应用,使用高质量 TIFF 图像的 ReadPhoto 可提供最佳结果,尤其适用于对精度要求极高的档案或法律文件处理。
通过确保图像达到一定的质量阈值,在效率和准确性之间找到平衡。 对于混合文档类型,实施混合方法:对需要高精度的关键文档使用 ReadPhoto,对优先考虑速度的常规任务使用标准 Read。
常见问题解答
ReadPhoto 方法支持哪些图像格式?
IronOCR 的 ReadPhoto 方法针对 TIFF 和 GIF 等复杂照片格式进行了优化。它专为从高质量扫描文档和照片中提取文本而设计,可提供包含文本区域和置信度分数的结构化结果。
如何从 TIFF 图像中提取文本?
要使用 IronOCR 从 TIFF 图像中提取文本,需要创建一个 OcrInput 变量,使用 LoadImageFrame 加载图像,然后应用 ReadPhoto 方法。过程很简单:var result = new IronTesseract().ReadPhoto(new OcrInput().LoadImageFrame("photo.tiff", 0));
使用 ReadPhoto 功能需要哪些附加软件包?
要在 IronOCR 中使用 ReadPhoto 功能,您需要从 NuGet 安装 IronOcr.Extension.AdvancedScan 软件包。该扩展提供了 ReadPhoto 方法所需的高级扫描功能。
何时应使用 ReadPhoto 而不是标准的 "读取 "方法?
在处理 TIFF 和 GIF 等复杂照片格式时,请使用 IronOCR 的 ReadPhoto 方法,尤其是需要进行精确 OCR 处理的高质量扫描文档。标准的 Read 方法更适合一般的图像处理任务。
ReadPhoto 能提供什么样的结果?
IronOCR 的 ReadPhoto 方法可提供结构化的 OCR 结果,其中包括提取的文本区域和置信度分数。您可以通过 OcrPhotoResult 属性访问这些结果,以查看和操作提取的数据。
ReadPhoto 可以处理多页文档吗?
是的,IronOCR 的 ReadPhoto 方法可以处理多页文档,尤其是通常包含多个帧的 TIFF 文件。LoadImageFrame 方法允许您指定处理多页文档中的哪一帧。
哪些行业可以从使用照片 OCR 技术中获益?
IronOCR 可使处理法律文件、档案、收据的行业以及任何处理大量扫描文件的企业受益,在这些行业中,高效的数据检索至关重要。ReadPhoto 方法可自动从这些复杂的图像格式中提取文本。

