更新 2025年二月16日
分享:

如何使用IronOCR读取照片

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

作者:Curtis Chau

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

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

在本教程中,我们将简要提供一个输入以及一个示例,说明如何使用ReadPhoto以及如何操作结果对象。 以及开发人员发现他们在使用 ReadPhoto 替代 IronOCR 的标准 Read 的场景。

立即在您的项目中开始使用IronOCR,并享受免费试用。

第一步:
green arrow pointer

要使用此功能,您还必须安装IronOcr.Extension.AdvancedScan包装

读取照片示例

使用IronOCR读取高质量的照片格式(如tiffgif)相对简单。 首先,我们创建一个新变量并将其指定为OcrInput,然后使用LoadImageFrame加载图像。 最后,我们使用 ReadPhoto 方法并获取结果。

请注意

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

输入

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

输入

代码

: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].FrameNumber;

// 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).FrameNumber

' 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)
VB   C#

输出

产量

从OCR输入中提取的文本。

Confidence:一个“双精度”属性,指示每个字符平均统计准确性的置信度,其中1为最高,0为最低。

TextRegions:一个名为“TextRegions”的属性列表,指示OCR文本及其在输入中的位置。 在上面的示例中,我们打印了帧号以及包含文本的矩形。


ReadPhotoRead 的区别

readPhoto 方法与标准 read 方法的主要区别在于其结果对象和所接受的文件格式。 LoadImageFrame 专门仅接受 tiffgif,而不接受 Jpeg 等格式,这是有几个原因的。

Tiff和Jpg图像的比较

Tiff 作为一种文件格式是无损的,通常用于将多页和多帧压缩为单一格式。 它通常用于高质量、多图像存储(例如法律文件、医学图像). 它比标准的 jpg 格式复杂得多,因此需要不同的方法来完整提取其中的文本。

此外,Tiff 图像仅使用不同的压缩方式,因此 IronOCR 需要使用专门的方法来解码文本。

以下是 TIFF 和 JPG 的比较的进一步细分。

特点 TIFF(标签图像文件格式) JPG/JPEG(联合图像专家组)
压缩 无损或未压缩(保留质量) 有损压缩(为更小的文件大小而降低质量)
文件大小 大(由于高质量和可选的不压缩) 更小,优化用于网络使用和快速加载
图像质量 高(适合专业使用,保留所有细节) 较低(由于有损压缩,某些质量被牺牲)
颜色深度 支持高色深(每通道高达16位或32位) 24位色(1670万种颜色)
使用案例 专业摄影、出版、扫描、存档 网页图像,社交媒体,日常照片
透明度 支持透明度和 Alpha 通道 是否支持透明度
编辑 适合多次编辑(重新保存不会导致质量损失) 随着多次编辑和保存,质量会降低
兼容性 广泛支持专业软件 在所有平台和设备上普遍支持
动画 不支持动画 不支持动画
元数据 存储广泛的元数据(EXIF,图层等) 存储EXIF元数据,但功能较为有限

不同场景

开发人员需要在生产中考虑每个用例,以进一步优化并使他们的应用程序高效运行。 虽然readPhoto适用于复杂图像,例如上面的Tiff,但处理结果会较慢。 另一方面,jpg 的质量可能较低,但操作通常会更快。 然而,图像质量(如存在噪点)会导致OCR的置信度较低。

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

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