如何阅读特定文件

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

查克尼特·宾

准确地用一种通用的单一方法阅读特定文档,如标准文本文档、车牌、护照和照片,是非常困难的。 这些挑战源于每种文件类型的多样格式、布局和内容,以及图像质量、变形和专业内容的差异。 此外,在更广泛的文档类型范围内实现语境理解并平衡性能与效率变得更加复杂。

IronOCR为执行特定文档的OCR引入了特定方法,如标准文本文件、车牌、护照和照片,以达到最佳的精确度和性能。

开始使用IronOCR

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

第一步:
green arrow pointer



关于此软件包

方法 ReadLicensePlateReadPassportReadPhotoReadScreenShot 是 IronOCR 基础包的扩展方法,需要IronOcr.Extensions.AdvancedScan要安装的软件包。 当前,此扩展仅适用于 Windows。

这些方法可以与OCR引擎配置一起工作,例如黑名单和白名单。除了ReadPassport方法外,所有方法都支持包括中文、日语、韩语和拉丁字母在内的多种语言。 请注意,每种语言都需要一个额外的语言包,IronOcr.Languages.

使用高级扫描在 .NET Framework 上需要项目运行在 x64 架构上。 导航到项目配置并取消选中“优先使用32位”选项以实现此目的。 了解更多信息,请参阅以下故障排除指南:高级扫描在 .NET 框架."

读取文档示例

ReadDocument方法是一种强大的文档阅读方法,专门用于扫描的文档或包含大量文本的纸质文件照片。 页面分割模式 配置在阅读具有不同布局的文本文件中非常重要。 例如,SingleBlockSparseText 类型可以从表格布局中检索大量信息。 这是因为 SingleBlock 假设文本保持为一个块,而 SparseText 假设文本散布在文档中。

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

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

// Configure OCR engine
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

using var input = new OcrInput();

input.LoadPdf("Five.pdf");

// Perform OCR
OcrResult result = ocr.ReadDocument(input);

Console.WriteLine(result.Text);
Imports IronOcr
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

' Configure OCR engine
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock

Dim input = New OcrInput()

input.LoadPdf("Five.pdf")

' Perform OCR
Dim result As OcrResult = ocr.ReadDocument(input)

Console.WriteLine(result.Text)
VB   C#

以下方法是基本 IronOCR 软件包的扩展方法,需要使用IronOcr.Extensions.AdvancedScan要安装的软件包。 当前,此扩展仅适用于 Windows。

阅读车牌示例

ReadLicensePlate方法专为从照片中读取车牌而优化。 此方法返回的特殊信息是 Licenseplate 属性,其中包含提供的文档中车牌位置的信息。

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

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

using var inputLicensePlate = new OcrInput();

inputLicensePlate.LoadImage("LicensePlate.jpeg");

// Perform OCR
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate coordinates
Rectangle rectangle = result.Licenseplate;

// Retrieve license plate value
string output = result.Text;
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputLicensePlate = New OcrInput()

inputLicensePlate.LoadImage("LicensePlate.jpeg")

' Perform OCR
Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate)

' Retrieve license plate coordinates
Dim rectangle As Rectangle = result.Licenseplate

' Retrieve license plate value
Dim output As String = result.Text
VB   C#

阅读护照示例

ReadPassport方法针对阅读进行了优化,并通过扫描机器可读区域从护照照片中提取护照信息。(MRZ)内容。 MRZ 是官方文件如护照、身份证和签证中特别定义的区域。 MRZ 通常包含持有者的基本个人信息,如姓名、出生日期、国籍和文件号码。 目前,这种方法仅支持英语。

:path=/static-assets/ocr/content-code-examples/how-to/read-specific-document-passport.cs
using IronOcr;
using System;

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

using var inputPassport = new OcrInput();

inputPassport.LoadImage("Passport.jpg");

// Perform OCR
OcrPassportResult result = ocr.ReadPassport(inputPassport);

// Output passport information
Console.WriteLine(result.PassportInfo.GivenNames);
Console.WriteLine(result.PassportInfo.Country);
Console.WriteLine(result.PassportInfo.PassportNumber);
Console.WriteLine(result.PassportInfo.Surname);
Console.WriteLine(result.PassportInfo.DateOfBirth);
Console.WriteLine(result.PassportInfo.DateOfExpiry);
Imports IronOcr
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputPassport = New OcrInput()

inputPassport.LoadImage("Passport.jpg")

' Perform OCR
Dim result As OcrPassportResult = ocr.ReadPassport(inputPassport)

' Output passport information
Console.WriteLine(result.PassportInfo.GivenNames)
Console.WriteLine(result.PassportInfo.Country)
Console.WriteLine(result.PassportInfo.PassportNumber)
Console.WriteLine(result.PassportInfo.Surname)
Console.WriteLine(result.PassportInfo.DateOfBirth)
Console.WriteLine(result.PassportInfo.DateOfExpiry)
VB   C#

结果

阅读护照

请确保文档中只包含护照图片。 任何页眉和页脚文本都可能使方法混乱,并导致意外的输出。

读取照片示例

ReadPhoto方法针对读取包含难以识别文字的图像进行了优化。 此方法返回 TextRegions 属性,其中包含关于检测到的文本的有用信息,如 RegionTextInRegionFrameNumber

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

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

using var inputPhoto = new OcrInput();
inputPhoto.LoadImageFrame("photo.tif", 2);

// Perform OCR
OcrPhotoResult result = ocr.ReadPhoto(inputPhoto);

// index number refer to region order in the page
int number = result.TextRegions[0].FrameNumber;
string textinregion = result.TextRegions[0].TextInRegion;
Rectangle region = result.TextRegions[0].Region;
Imports IronOcr
Imports IronSoftware.Drawing

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputPhoto = New OcrInput()
inputPhoto.LoadImageFrame("photo.tif", 2)

' Perform OCR
Dim result As OcrPhotoResult = ocr.ReadPhoto(inputPhoto)

' index number refer to region order in the page
Dim number As Integer = result.TextRegions(0).FrameNumber
Dim textinregion As String = result.TextRegions(0).TextInRegion
Dim region As Rectangle = result.TextRegions(0).Region
VB   C#

阅读截图示例

ReadScreenShot方法针对读取包含难以识别文本的截图进行了优化。 与 ReadPhoto 方法类似,它也返回 TextRegions 属性。

:path=/static-assets/ocr/content-code-examples/how-to/read-specific-document-screenshot.cs
using IronOcr;
using System;
using System.Linq;

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

using var inputScreenshot = new OcrInput();
inputScreenshot.LoadImage("screenshot.png");

// Perform OCR
OcrPhotoResult result = ocr.ReadScreenShot(inputScreenshot);

// Output screenshoot information
Console.WriteLine(result.Text);
Console.WriteLine(result.TextRegions.First().Region.X);
Console.WriteLine(result.TextRegions.Last().Region.Width);
Console.WriteLine(result.Confidence);
Imports IronOcr
Imports System
Imports System.Linq

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputScreenshot = New OcrInput()
inputScreenshot.LoadImage("screenshot.png")

' Perform OCR
Dim result As OcrPhotoResult = ocr.ReadScreenShot(inputScreenshot)

' Output screenshoot information
Console.WriteLine(result.Text)
Console.WriteLine(result.TextRegions.First().Region.X)
Console.WriteLine(result.TextRegions.Last().Region.Width)
Console.WriteLine(result.Confidence)
VB   C#
Chaknith related to 阅读截图示例

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。