如何閱讀特定文件

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

查克尼思·賓

準確地閱讀特定的文件,如標準文本文件、車牌、護照和照片,使用一般的單一方法是非常困難的。這些挑戰來自每種文件類型的格式、布局和內容多樣性,以及圖像質量的變化、失真和專業內容。此外,實現上下文理解以及在性能和效率之間取得平衡,隨著文件類型範圍的擴展變得更加複雜。

IronOCR 引入了針對標準文本文件、車牌、護照和照片等特定文件進行 OCR 的專門方法,以實現最佳的準確性和性能。


C# NuGet 程式庫用于 OCR

安裝與 NuGet

Install-Package IronOcr
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 OCR

安裝與 NuGet

Install-Package IronOcr
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronOCRNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變OCR。

C# NuGet 程式庫用于 OCR nuget.org/packages/IronOcr/
Install-Package IronOcr

請考慮安裝 IronOCR DLL 直接下載並手動安裝到您的專案或GAC表單: IronOcr.zip

手動安裝到您的項目中

下載DLL

關於此套件

方法 ReadLicensePlateReadPassportReadPhotoReadScreenShot 是 IronOCR 套件的擴展方法,並且需要 IronOcr.Extensions.AdvancedScan 需安裝的套件。目前,這個擴充功能僅適用於 Windows。

這些方法與 OCR 引擎配置(如黑名單和白名單)一起工作。除了 ReadPassport 方法之外,所有方法均支持包括中文、日文、韓文和拉丁字母在內的多種語言。請注意,每種語言都需要額外的語言包。 IronOcr.Languages使用進階掃描在 .NET Framework 需要專案在 x64 架構上運行。請前往專案設定並取消勾選 "Prefer 32-bit" 選項以達成此目的。請參閱以下的故障排除指南以了解更多:高級掃描在 .NET 框架上.

讀取文件範例

ReadDocument 方法是一個強大的文件讀取方法,專門用於掃描文件或包含大量文本的紙質文件照片。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#

讀取護照範例

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#

結果

讀取護照

請確保文件僅包含護照圖片。任何頁首和頁尾文字都可能使方法產生混淆,並導致意外輸出。

Read Photo Example

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 是開發者界的夏洛克福爾摩斯。他第一次意識到自己可能有個軟體工程的未來,是在他為了娛樂而參加程式挑戰的時候。他的重點是 IronXL 和 IronBarcode,但他也引以為豪的是,他幫助客戶解決所有產品的問題。Chaknith 利用他與客戶直接對話中獲得的知識,以進一步改進產品。他的實際反饋超越了 Jira 工單,並支持產品開發、文件撰寫和行銷,以提升客戶的整體體驗。不在公司時,他通常在學習機器學習、寫程式和徒步旅行。