在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
光學字符識別(OCR)技術允許將文本轉換為機器可讀的數位格式。當文件被掃描(如發票或收據)後,電腦會將其儲存為圖像文件。然而,掃描圖像中的文本無法使用普通文本文編輯器進行編輯、搜索或計數。
然而,OCR 可以處理圖像,提取文本,並將其轉換為電腦可以讀取的文本格式。 這使得可以從各種來源提取文本,包括 PDF 檔案和其他掃描圖像。 此外,OCR 功能不僅限於簡單的文字提取,還包括主要的圖像格式和 PDF 文件,將它們轉換為可搜索的 OCR 資料。
在 C# 中,開發人員可以通過各種函式庫利用 OCR 的強大功能,其中之一是來自 Iron Software 的強大函式庫 IronOCR。 在本教程中,我們將探索光學字符識別 (OCR) 的基本原理,並演示如何使用 IronOCR 在 C# 中高效執行字符識別。
在 Visual Studio 中建立一個全新的 C# 專案並命名該專案。
安裝 IronOCR .NET 程式庫並將其包含在專案資料夾中。
利用 IronOCR Tesseract 從圖片中讀取文字。
利用IronOCR進階功能讀取影像中的文字
IronOCR 是由 Iron Software 開發的 C# 程式庫,提供先進的 OCR 功能。 它提供了從圖像、PDF 和掃描文檔中準確提取文本的功能。 在我們進入程式碼之前,請確保您的專案已安裝 IronOCR。
IronOCR 提升了廣泛使用的 Tesseract OCR 引擎的能力,通過提高準確性和速度。 它作為一個強大的解決方案,用於從各種來源提取文本,包括圖像、PDF 和多種文件格式。
IronOCR 支援超過 127 種語言,能夠熟練處理多語言需求,成為要求語言多樣性的應用程式的理想選擇。
提取的文本可以方便地輸出為純文字或結構化數據,以便無縫整合到進一步的處理管道中。 此外,IronOCR 支援直接從影像輸入創建可搜尋的 PDF。
為了與 C#、F# 和 VB.NET 的兼容性而設計,IronOCR 能夠在各種 .NET 環境中無縫運行,包括版本 8、7、6、Core、Standard 和 Framework。
IronOCR 利用經過精心調整以便在 .NET 生態系統中獲得最佳性能的 Tesseract 5 的強大功能。
使用 IronOCR,用戶可以精確定義文檔中的特定區域,實現針對性的 OCR 處理。 此功能通過在最需要的地方集中處理能力來提高準確性和效率。
該庫提供一系列的圖像預處理功能,如校正歪斜和降噪。 這些工具即使在處理不完美的源圖像時也能確保卓越的結果,最終提升整體的OCR體驗。
現在,我們將開發一個演示應用程式,使用 IronOCR 從圖像中讀取文字。
Visual Studio:確保您已安裝Visual Studio或其他 C# 開發環境。
首先,我們使用 Visual Studio 創建一個新的控制台應用程式,如下所示。
在下方提供專案名稱和位置。
選擇專案所需的 .NET 版本。
單擊「Create」按鈕以創建新專案。
IronOCR 可在以下顯示的 NuGet 套件管理器控制台中找到。 使用提供的命令來安裝套件。
使用 Visual Studio NuGet 套件管理器,搜尋 IronOCR 並安裝到您的專案資料夾。
安裝完成後,應用程式就可以使用IronOCR來從圖片中讀取文字。
IronOCR 是唯一提供 Tesseract 5 OCR 功能的 .NET 庫。 目前,它被譽為所有程式語言中最先進的 Tesseract 5 函式庫。 IronOCR 無縫整合 Tesseract 5 到各種 .NET 環境,包括 Framework、Standard、Core、Xamarin 及 Mono,確保生態系統全面支持。
請考慮以下圖像文件作為輸入。 現在,讓我們看看如何讀取此圖像檔案中的文本
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
我們首先使用所需的配置創建 IronTesseract
然後,我們將顯示的範例圖像載入到OcrInput物件中。
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
PageSegmentationMode 決定了 Tesseract 如何分割輸入圖像。 選項包括 AutoOsd、SingleBlock、SingleLine 等。 例如:
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
您可以透過設定特定變量來微調 Tesseract。 例如,要禁用並行化:
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ("tessedit_parallelize") = False
使用 WhiteListCharacters 和 BlackListCharacters 來控制 Tesseract 可辨識的字符。 例如:
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë ^"
探索其他 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)
現在讓我們嘗試使用高級設定解碼相同的圖像
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
IronOCR 配置:創建 IronTesseract(主要的 IronOCR 類別)的一個實例,並將其分配給變數 ocrTesseract。
配置設定應用於ocrTesseract:
語言:指定用於 OCR 的語言(在此情況下為英文)。
配置:TesseractConfiguration 物件,允許進一步自訂:
ReadBarCodes:禁用讀取條碼。
BlackListCharacters:指定要列入黑名單的字符(不識別的字符)。
WhiteListCharacters:未指定白名單,允許所有字符。
PageSegmentationMode:設置頁面分割模式為 “AutoOsd”。
OCR 輸入及圖片載入: 使用區塊創建一個可處置的 ocrInput 物件,其類型為 OcrInput。 圖像文件“sample1.png”已添加到 ocrInput。
文字提取:在 ocrTesseract 上調用 Read 方法,傳入 ocrInput。
結果存儲在 ocrResult 變數中。
使用IronOCR時,您可以使用各種影像濾鏡來協助在執行OCR之前預處理影像。 這些過濾器優化圖像質量,提高可見性,並減少噪點或偽影。 它們有助於提高 OCR 操作的性能。
旋轉:
旋轉濾鏡允許您將圖像按指定的度數順時針旋轉。如需逆時針旋轉,請使用負數。
去偏斜:
Deskew 濾鏡校正圖像傾斜,確保文字直立且正交。 這對於光學字符識別特別有用,因為 Tesseract 在正確定向的掃描中表現最佳。
規模:
縮放過濾器按比例縮放OCR輸入頁面。
二值化:
Binarize 濾鏡將每個像素轉換為黑色或白色,沒有中間色調。 在文字與背景之間對比度極低的情況下,它可以提高OCR的效能。
ToGrayScale:將圖像轉換為灰階。
ToGrayScale 濾鏡將每個像素轉換為灰階色調。 雖然不太可能顯著提高 OCR 精確度,但可能會提升速度。
反轉:
反轉濾鏡會反轉顏色——白色變成黑色,黑色變成白色。
ReplaceColor:
ReplaceColor 濾鏡會在考慮特定閾值的情況下,將圖像中的特定顏色替換為另一種顏色。
對比:
對比濾鏡會自動增加對比度。它往往能在低對比度掃描中提高OCR的速度和準確性。
膨脹和侵蝕:
這些高級形態學過濾器可操控影像中的物體邊界。
侵蝕從物件邊界移除像素。
銳化濾鏡會銳化模糊的OCR文件,並將alpha通道展平為白色。
去噪濾鏡能消除數位噪音。在預期有噪音的情況下使用它。
當已知文件有極端背景噪聲時,應僅使用此重度背景噪聲消除濾波器。 它可能會降低對於乾淨文件的OCR準確性,而且會佔用大量的CPU資源。
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)
文件數位化:OCR被廣泛用於將掃描的紙質文件(如發票、收據、表單和合同)轉換為數位格式。 這個數位化過程簡化了文件的儲存、檢索和管理,減少了紙張的雜亂並提高了效率。
資料擷取:OCR 能夠從掃描文件、圖像和 PDF 中提取文字和數據。 此提取的資料可用於自動化資料輸入、內容分析、索引以及整合到資料庫或業務系統中。
影像中的文字辨識:OCR技術允許從印刷文件和影像中提取文字以進行索引和搜尋。 此功能被應用於各種應用程式中,包括擴增實境、基於圖像的搜尋引擎和翻譯服務。
自動車牌識別 (ALPR): ALPR 系統利用 OCR 從安裝在交通監控、停車管理、收費系統和執法應用中的相機所拍攝的影像或視頻流中讀取車牌號碼。
無障礙解決方案:OCR 在為視覺障礙人士創建無障礙內容方面扮演著至關重要的角色。 通過將圖像或文檔中的文字轉換為語音或盲文,OCR 幫助使資訊對殘疾人士更具可及性。
身份驗證:OCR技術應用於身份驗證過程中,例如掃描和處理護照、駕駛執照和身份證等身份文件。 這有助於驗證文件的真實性並提取相關資訊以進行身份驗證。
銀行和金融:OCR 被用於銀行和金融行業,執行諸如閱讀支票、處理發票、轉換現有 PDF 文件、從財務報表中提取數據、以及自動化文件基於文件的工作流程等任務,以提升金融業務的準確性和效率。
自動翻譯:OCR技術集成在翻譯工具和語言學習應用中,用於將打印文本從一種語言轉換為另一種語言。 使用者可以使用他們的設備捕捉文本,OCR能夠即時協助將其翻譯成所需語言。
IronOCR。 請提供以下詳細資訊,以將金鑰傳送至您的電子郵件 ID。
一旦通過購買或免費試用獲得密鑰,請按照以下步驟使用該密鑰。
設定您的授權金鑰:使用代碼設置您的IronOCR授權金鑰。 在使用IronOCR之前,將以下行添加到您的應用程式啟動中:
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
全域應用程式金鑰 (Web.Config 或 App.Config):若要在您的應用程式中全域使用金鑰,請使用配置檔案 (Web.Config 或 App.Config)。 將以下金鑰添加到您的 appSettings 中:
<configuration>
<!-- Other settings -->
<appSettings>
<add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
</appSettings>
</configuration>
使用 .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
測試您的授權金鑰:透過測試來驗證您的金鑰是否已正確安裝:
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")