使用 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. 使用 IronOCR Tesseract 從圖片中讀取文本。

  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。

跨平台適應性

IronOCR 專為相容 C#、F# 和 VB.NET 而設計,可無縫運行於各種.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 套件管理器: 確保 presence NuGet 怎麼去管理專案。

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

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

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

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

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

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

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

按一下建立按鈕以創建新專案。

步驟 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 在多種 .NET 環境中無縫集成 Tesseract 5,包括 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 提取的文字

第四步:利用 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#

頁面分割模式

頁面分割模式決定了 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: 未使用自定義變量。

  8. MultiThreaded: 禁用多線程。

  9. OCR輸入和圖像加載:使用using塊創建一個可銷毀的OcrInput類型的ocrInput對象。將圖像文件“sample1.png”添加到ocrInput中。

  10. 文本提取:調用ocrTesseract上的Read方法,傳入ocrInput。

  11. 結果存儲在ocrResult變量中。

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

輸出

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

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

在使用 IronOCR 時,您可以使用各種圖像過濾器來幫助在進行 OCR 之前預處理圖像。這些過濾器可以優化圖像質量、增強可見性以及減少噪聲或伺服器錯誤。它們有助於提高 OCR 操作的性能。

  1. Rotate

    Rotate 過濾器允許您順時針旋轉圖像指定的度數。對於逆時針旋轉,請使用負數。

  2. Deskew

    Deskew 過濾器校正圖像歪斜,確保文字直立且正交。這對於 OCR 非常有用,因為 Tesseract 在圖像方向正確時效果最好。

  3. Scale

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

  4. Binarize

    Binarize 過濾器將每個像素轉換為黑色或白色,沒有中間狀態。在文字與背景之間對比度非常低的情況下,這可以提高 OCR 的性能。

  5. ToGrayScale

    ToGrayScale 過濾器將每個像素轉換為灰度。儘管不太可能顯著提高 OCR 準確性,但它可能提高速度。

  6. Invert

    Invert 過濾器顏色反轉——白色變成黑色,黑色變成白色。

  7. ReplaceColor

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

  8. Contrast

    Contrast 過濾器自動增加對比度。它通常在低對比度掃描中提高 OCR 的速度和準確性。

  9. DilateErode

    這些高級形態學過濾器可操作圖像中的對象邊界。

    1. Dilate 向對象邊界添加像素。
    2. Erode 從對象邊界移除像素。
  10. Sharpen

    Sharpen 過濾器銳化模糊的 OCR 文件並將 alpha 通道壓平為白色。

  11. DeNoise

    DeNoise 過濾器去除數字噪聲。在預期存在噪聲的地方使用。

  12. DeepCleanBackgroundNoise

    這個強烈的背景噪聲去除過濾器應僅在已知有極端文檔背景噪聲時使用。對於乾淨的文件,它可能會降低 OCR 準確性並佔用較多 CPU 資源。

  13. EnhanceResolution

    EnhanceResolution 過濾器提高低質量圖像的分辨率。由於自動分辨率處理,這通常不是必需的。

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

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幫助實時將其翻譯成所需語言。

  10. 檔案和歷史文件保存: 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.10 剛剛發布

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