已更新 2025年2月17日
分享:

如何閱讀特定文件

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

由 Chaknith Bin

準確讀取標準文字文件、車牌、護照和照片等特定文件,如果只用一種普通單一方法是非常困難的。 這些挑戰源於每種文件類型的多樣化格式、佈局和內容,以及圖像質量、變形和專業內容的變化。 此外,隨著文件類型的範圍擴大,實現語境理解以及平衡性能和效率的難度也會增加。

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

開始使用IronOCR

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

第一步:
green arrow pointer



關於該套件

方法ReadLicensePlateReadPassportReadPhotoReadScreenShot 是 IronOCR 基礎套件的擴展方法,需要安裝IronOcr.Extensions.AdvancedScan 套件。 目前,此擴充功能僅適用於Windows系統。

這些方法可與OCR引擎配置一起使用,例如黑名單和白名單。支持多種語言,包括中文、日語、韓語和拉丁字母,但ReadPassport方法除外。 請注意,每種語言都需要額外的語言包,IronOcr.Languages

使用高級掃描功能在 .NET Framework 上運行需要項目在 x64 架構上運行。 導航至專案配置並取消勾選“偏好32位”選項以實現此目的。 在以下故障排除指南中了解更多信息:"Advanced Scan on .NET Framework."

讀取文件範例

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)
$vbLabelText   $csharpLabel

以下方法是 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
$vbLabelText   $csharpLabel

閱讀護照示例

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)
$vbLabelText   $csharpLabel

結果

讀取護照

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

讀取照片示例

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
$vbLabelText   $csharpLabel

讀取螢幕截圖範例

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)
$vbLabelText   $csharpLabel
查克尼思·賓

查克尼思·賓

軟體工程師

 LinkedIn

Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。