使用 IRONOCR

如何在 C# 中創建字符識別

發佈 2024年4月29日
分享:

介紹

光學字符識別技術(光學字符識別)允許將印刷或手寫的文字轉換成可讀取的數位格式。當文件被掃描時(例如發票或收據)當檔案被你的電腦保存為圖片檔案時,掃描圖片內的文字無法使用一般的文字編輯器來編輯、搜尋或計數。

然而,OCR 可以處理圖像,提取文本,並將其轉換為電腦可以讀取的文本格式。 這使得可以從各種來源提取文本,包括 PDF 檔案和其他掃描圖像。 此外,OCR 功能不僅限於簡單的文字提取,還包括主要的圖像格式和 PDF 文件,將它們轉換為可搜索的 OCR 資料。

在 C# 中,開發人員可以通過各種庫利用 OCR 的強大功能,其中之一就是強大的庫。IronOCRIron Software. 在本教程中,我們將探討 OCR 的基本知識並展示如何使用IronOCR在 C# 中高效地執行文字識別。

如何在 C# 中創建字符識別

  1. 在 Visual Studio 中建立一個全新的 C# 專案並命名該專案。

  2. 安裝這個IronOCR將 .NET 庫包含在專案資料夾中。

  3. 利用IronOCRTesseract 用於從圖像中讀取文字。

  4. 利用IronOCR進階功能,可讀取圖像中的文字

  5. 性能調優IronOCR讀取操作。

開始使用IronOCR

IronOCR由開發的C#庫Iron Software是提供進階 OCR 功能的。 它提供了從圖像、PDF 和掃描文檔中準確提取文本的功能。 在我們進入程式碼之前,請確保您的專案已安裝 IronOCR。

IronOCR 的主要功能來自 Iron Software

改進的 Tesseract OCR 引擎

IronOCR提升廣泛使用的Tesseract OCR引擎的功能,增強了準確性和速度。 它作為一個強大的解決方案,用於從各種來源提取文本,包括圖像、PDF 和多種文件格式。

廣泛的語言覆蓋

IronOCR 支援超過 127 種語言,能夠熟練處理多語言需求,成為要求語言多樣性的應用程式的理想選擇。

多樣化的輸出選擇

提取的文本可以方便地輸出為純文字或結構化數據,以便無縫整合到進一步的處理管道中。 此外,IronOCR 支援直接從影像輸入創建可搜尋的 PDF。

跨平台適應性

為了與 C#、F# 和 VB.NET 的兼容性而設計,IronOCR 能夠在各種 .NET 環境中無縫運行,包括版本 8、7、6、Core、Standard 和 Framework。

利用 Tesseract 5

IronOCR利用 Tesseract 5 的強大功能,專為 .NET 生態系統中的最佳性能量身定制。

區域式 OCR 功能

使用 IronOCR,用戶可以精確定義文檔中的特定區域,實現針對性的 OCR 處理。 此功能通過在最需要的地方集中處理能力來提高準確性和效率。

圖片預處理工具

該庫提供一系列的圖像預處理功能,如校正歪斜和降噪。 這些工具即使在處理不完美的源圖像時也能確保卓越的結果,最終提升整體的OCR體驗。

現在,我們將開發一個演示應用程式,使用 IronOCR 從圖像中讀取文字。

先決條件

  1. Visual Studio: 確保您已安裝Visual Studio或任何其他 C# 開發環境。

  2. NuGet 套件管理器: 確保 NuGet 已安裝以管理您專案中的套件。

步驟 1:在 Visual Studio 中創建一個新的 C# 專案

首先,我們使用 Visual Studio 創建一個新的控制台應用程式,如下所示。

如何在C#中創建字符識別: 圖1 - 在Visual Studio中創建一個全新的C#項目

在下方提供專案名稱和位置。

如何在 C# 中創建字符識別:圖 2 - 提供專案名稱和您希望儲存的位置

選擇專案所需的 .NET 版本。

如何在C#中進行字符識別:圖3 - 為專案選擇適當的.NET版本

單擊「Create」按鈕以創建新專案。

步驟 2:安裝 IronOCR 庫並將其整合到您的專案中。

IronOCR可以在NuGet如下所示的套件管理器控制台。 使用提供的命令來安裝套件。

如何在 C# 中創建字符識別:圖4 - IronOCR NuGet 套件管理器下載頁面

使用 Visual Studio NuGet 套件管理器,搜尋 IronOCR 並安裝到您的專案資料夾。

如何在 C# 中創建字符識別:圖 5 - 使用 NuGet 套件管理器通過瀏覽標籤搜索 IronOCR

一旦安裝完成,應用程式即可使用IronOCR從圖片中讀取文字。

步驟 3:利用 IronOCR 的 Tesseract 從圖像中讀取文本。

IronOCR 是唯一提供 Tesseract 5 OCR 功能的 .NET 庫。 目前,它被譽為所有程式語言中最先進的 Tesseract 5 函式庫。 IronOCR 無縫整合 Tesseract 5 到各種 .NET 環境,包括 Framework、Standard、Core、Xamarin 及 Mono,確保生態系統全面支持。

請考慮以下圖像文件作為輸入。 現在,讓我們看看如何讀取此圖像檔案中的文本

如何在 C# 中建立字符識別:圖 6 - 範例輸入

using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
Imports IronOcr
Public Class Program
	Public Shared Sub Main(ByVal args() As String)
		Dim ocrTesseract = New IronTesseract()
	Dim ocrInput As New OcrInput()
	ocrInput.LoadImage("sample1.png")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	Console.WriteLine(ocrResult.Text)
	End Sub
End Class
VB   C#

程式碼說明

  1. 我們首先使用所需的配置創建 IronTesseract

  2. 然後,我們將顯示的範例圖像載入到OcrInput物件中。

  3. 最後,我們讀取圖像中的文本並將其輸出到控制台上。

輸出

如何在 C# 中創建字符識別:圖 7 - 使用 IronOCR 提取的文字

步驟 4:利用 IronOCR 的進階功能來讀取圖片中的文字。

IronTesseract.Configuration 物件讓高階使用者在 C#/.NET 中存取底層的 Tesseract API,從而可以進行詳細的設定配置以便微調和優化。 以下是一些可能的進階配置选项

語言選擇

您可以使用 Language 屬性來指定 OCR 的語言。 例如,要將語言設置為英語,請使用:

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
VB   C#

頁面分割模式

PageSegmentationMode 決定了 Tesseract 如何分割輸入圖像。 選項包括 AutoOsd、SingleBlock、SingleLine 等。 例如:

ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
VB   C#

自訂 Tesseract 變數

您可以透過設定特定變量來微調 Tesseract。 例如,要禁用並行化:

ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ("tessedit_parallelize") = False
VB   C#

允許清單和封鎖清單字元

使用 WhiteListCharacters 和 BlackListCharacters 來控制 Tesseract 可辨識的字符。 例如:

ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë ^"
VB   C#

附加配置變量

探索其他 Tesseract 配置變數,以根據您的需求自訂行為。 例如:

ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ("classify_num_cp_levels") = 3
ocr.Configuration.TesseractVariables ("textord_debug_tabfind") = 0
' ... (more variables)
VB   C#

現在讓我們嘗試使用高級設定解碼相同的圖像

using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

程式碼說明

  1. IronOCR 設定:IronTesseract 的實例(主要 IronOCR 類別)被創建並分配給變數 ocrTesseract。

    配置設定應用於ocrTesseract:

    1. 語言:指定OCR的語言(在這種情況下,英語).

    2. 配置:TesseractConfiguration 物件,允許進一步自訂:

    3. ReadBarCodes:禁用讀取條碼。

    4. BlackListCharacters:指定要列入黑名單的字符(不應識別的字符).

    5. WhiteListCharacters:未指定白名單,允許所有字符。

    6. PageSegmentationMode:設置頁面分割模式為 “AutoOsd”。

    7. TesseractVariables:未使用自定義變數。
    1. 多線程:停用多線程。
  1. OCR 輸入和圖像加載: 一個 using 區塊創建了一個可處置的 ocrInput 物件,其類型為 OcrInput。 圖像文件“sample1.png”已添加到 ocrInput。

  2. 文字提取:在ocrTesseract上调用Read方法,传入ocrInput。

  3. 結果存儲在 ocrResult 變數中。

  4. 輸出:使用 Console.WriteLine 將提取的文本打印到控制台(ocrResult.Text).

輸出

如何在 C# 中創建字符識別:圖 8 - 使用 IronOCR 提取的文字

步驟 5:IronOCR 讀取操作的效能調整。

在使用 IronOCR 時,您可以使用各種圖像濾鏡來幫助在執行OCR之前對圖像進行預處理。 這些過濾器優化圖像質量,提高可見性,並減少噪點或偽影。 它們有助於提高 OCR 操作的性能。

  1. 旋轉:

    旋轉濾鏡允許您將圖像按指定的度數順時針旋轉。如需逆時針旋轉,請使用負數。

  2. 校正傾斜:

    Deskew 濾鏡校正圖像傾斜,確保文字直立且正交。 這對於光學字符識別特別有用,因為 Tesseract 在正確定向的掃描中表現最佳。

  3. 縮放:

    縮放過濾器按比例縮放OCR輸入頁面。

  4. 二值化:

    Binarize 濾鏡將每個像素轉換為黑色或白色,沒有中間色調。 在文字與背景之間對比度極低的情況下,它可以提高OCR的效能。

  5. ToGrayScale

    ToGrayScale 濾鏡將每個像素轉換為灰階色調。 雖然不太可能顯著提高 OCR 精確度,但可能會提升速度。

  6. 反轉:

    反轉濾鏡會反轉顏色——白色變成黑色,黑色變成白色。

  7. ReplaceColor: 颜色替换

    ReplaceColor 濾鏡會在考慮特定閾值的情況下,將圖像中的特定顏色替換為另一種顏色。

  8. 對比

    對比濾鏡會自動增加對比度。它往往能在低對比度掃描中提高OCR的速度和準確性。

  9. 膨脹侵蝕

    這些高級形態學過濾器可操控影像中的物體邊界。

    1. 膨脹會在物體邊界添加像素。
    1. 侵蝕從物件邊界移除像素。

    2. 銳化

    銳化濾鏡會銳化模糊的OCR文件,並將alpha通道展平為白色。

    1. 降噪:

    去噪濾鏡能消除數位噪音。在預期有噪音的情況下使用它。

  1. DeepCleanBackgroundNoise

    當已知文件有極端背景噪聲時,應僅使用此重度背景噪聲消除濾波器。 它可能會降低對於乾淨文件的OCR準確性,而且會佔用大量的CPU資源。

    1. 增強解析度:

    EnhanceResolution 濾鏡增強了低品質圖像的解析度。 由於自動解析度處理,通常不需要。

    以下是一個在C#中使用IronOCR應用過濾器的範例:

var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Dim ocr = New IronTesseract()
Dim input = New OcrInput()
input.LoadImage("sample.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

常見的 OCR 應用程式

  1. 文件數位化: OCR廣泛用於將掃描的紙質文件,如發票、收據、表單和合約,轉換為數位格式。 這個數位化過程簡化了文件的儲存、檢索和管理,減少了紙張的雜亂並提高了效率。

  2. 資料擷取:OCR 可以從掃描文件、圖片和 PDF 中擷取文字和資料。 此提取的資料可用於自動化資料輸入、內容分析、索引以及整合到資料庫或業務系統中。

  3. 圖像中的文字識別: OCR技術允許從印刷或手寫文字的圖像中提取文字,用於索引和搜索目的。 此功能被應用於各種應用程式中,包括擴增實境、基於圖像的搜尋引擎和翻譯服務。

  4. 自動車牌識別(自動車牌識別(ALPR))ALPR 系統利用 OCR 從安裝在交通監控、停車管理、收費站和執法應用中的攝影機拍攝的圖像或視訊串流中讀取車牌號碼。

  5. 無障礙解決方案: OCR 在為視覺障礙者創建無障礙內容方面起著關鍵作用。 通過將圖像或文檔中的文字轉換為語音或盲文,OCR 幫助使資訊對殘疾人士更具可及性。

  6. 身份驗證: OCR技術運用在身份驗證過程中,如掃描和處理護照、駕駛執照和身份證件等身份文件。 這有助於驗證文件的真實性並提取相關資訊以進行身份驗證。

  7. 銀行和金融: 在銀行和金融領域,OCR 被用於閱讀支票、處理發票、轉換現有 PDF 文件、從財務報表提取數據以及自動化文件工作流程,以提高金融業務的準確性和效率。

  8. 醫療記錄管理: 在醫療領域,OCR 有助於將手寫或印刷的醫療記錄轉換為電子格式,有助於電子健康記錄的管理。(電子健康紀錄)管理、數據分析和決策過程。

  9. 自動翻譯: OCR技術被整合到翻譯工具和語言學習應用中,用於將印刷文本從一種語言轉換為另一種語言。 使用者可以使用他們的設備捕捉文本,OCR能夠即時協助將其翻譯成所需語言。

    1. 檔案和歷史文件保存:OCR 用於數位化檔案材料和歷史文件,將它們保存為數位格式,以便未來存取、研究和分析,同時確保寶貴文化遺產的保存。

許可證要求

IronOCR. 請提供以下詳細資訊,以將金鑰傳送至您的電子郵件 ID。

如何在C#中建立字符识别:圖9 - IronPDF試用許可證頁面

一旦通過購買或免費試用獲得密鑰,請按照以下步驟使用該密鑰。

設定您的授權金鑰:使用代碼設定您的 IronOCR 授權金鑰。 在您的應用程式啟動時添加以下行(在使用IronOCR之前):

IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
VB   C#

全球應用密鑰(Web.Config 或 App.Config):要在整個應用程式中全局應用密鑰,請使用配置文件(Web.Config 或 App.Config). 將以下金鑰添加到您的 appSettings 中:

<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<configuration> <!-- Other settings -- > <appSettings> <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/> </appSettings> </configuration>
VB   C#

使用 .NET Core 的 appsettings.json:對於 .NET Core 應用程式,請在專案的根目錄中建立一個 appsettings.json 檔案。 將 "IronOcr.LicenseKey" 鍵替換為您的授權值:

{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
If True Then
	"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
End If
VB   C#

測試您的授權碼:通過測試驗證您的授權碼是否已正確安裝:

bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
Dim result As Boolean = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01")
VB   C#

結論

總之,IronOCR起價 $749。擁抱 OCR 的力量與IronOCR並在您的 C# 專案中解鎖無限可能。

< 上一頁
如何在 C# 中執行車輛註冊 OCR
下一個 >
如何使用C#中的OCR讀取身份證件

準備開始了嗎? 版本: 2024.11 剛剛發布

免費 NuGet 下載 總下載次數: 2,698,613 查看許可證 >