如何阅读特定文件

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

查克尼特·宾

用一般的单一方法准确读取标准文本文件、车牌、护照和照片等特定文档非常困难。这些挑战源于每种文档类型的不同格式、布局和内容,以及图像质量、失真和特殊内容的差异。此外,随着文件类型范围的扩大,实现上下文理解以及性能和效率之间的平衡也变得更加复杂。

IronOCR 引入了在特定文档(如标准文本文档、车牌、护照和照片)上执行 OCR 的特定方法,以实现最佳的准确性和性能。


适用于OCR的C# NuGet库

安装使用 NuGet

Install-Package IronOcr
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于OCR的C# NuGet库

安装使用 NuGet

Install-Package IronOcr
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronOCRNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变OCR。

适用于OCR的C# NuGet库 nuget.org/packages/IronOcr/
Install-Package IronOcr

考虑安装 IronOCR DLL 直接。下载并手动安装到您的项目或GAC表单中: IronOcr.zip

手动安装到你的项目中

下载DLL

关于套餐

ReadLicensePlate"、"ReadPassport"、"ReadPhoto "和 "ReadScreenShot "方法是基本 IronOCR 软件包的扩展方法,需要使用 IronOcr.Extensions.AdvancedScan 软件包进行安装。目前,该扩展仅适用于 Windows 系统。

这些方法适用于黑名单和白名单等 OCR 引擎配置。除 "ReadPassport "方法外,所有方法都支持多种语言,包括中文、日文、韩文和拉丁字母。请注意,每种语言都需要一个额外的语言包、 IronOcr.Languages.

在 .NET Framework 上使用高级扫描要求项目在 x64 架构上运行。导航至项目配置,取消选中 "Prefer 32-bit(首选 32 位)"选项即可实现这一点。在以下故障排除指南中了解更多信息:"高级扫描在 .NET 框架."

阅读文件示例

读取文档 "方法是一种强大的文档读取方法,专门用于读取包含大量文本的扫描文档或纸质文档照片。PageSegmentationMode 配置对于读取不同布局的文本文档非常重要。例如,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#

阅读护照示例

读取护照 "方法经过优化,可通过扫描机器可读区从护照照片中读取和提取护照信息 (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#

结果

阅读护照

请确保文件只包含护照图像。任何页眉和页脚文本都可能混淆该方法并导致意外输出。

阅读照片示例

读取图片 "方法针对读取包含难以读取文本的图片进行了优化。该方法返回TextRegions属性,其中包含检测到的文本的有用信息,如区域区域内文本帧号

: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#

阅读屏幕截图示例

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