在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
光學字符識別技術(光學字符識別)允許將印刷或手寫的文字轉換成可讀取的數位格式。當文件被掃描時(例如發票或收據)當檔案被你的電腦保存為圖片檔案時,掃描圖片內的文字無法使用一般的文字編輯器來編輯、搜尋或計數。
然而,OCR 可以處理圖像,提取文本,並將其轉換為電腦可以讀取的文本格式。 這使得可以從各種來源提取文本,包括 PDF 檔案和其他掃描圖像。 此外,OCR 功能不僅限於簡單的文字提取,還包括主要的圖像格式和 PDF 文件,將它們轉換為可搜索的 OCR 資料。
在 C# 中,開發人員可以通過各種庫利用 OCR 的強大功能,其中之一就是強大的庫。IronOCR從Iron Software. 在本教程中,我們將探討 OCR 的基本知識並展示如何使用IronOCR在 C# 中高效地執行文字識別。
在 Visual Studio 中建立一個全新的 C# 專案並命名該專案。
安裝這個IronOCR將 .NET 庫包含在專案資料夾中。
利用IronOCRTesseract 用於從圖像中讀取文字。
利用IronOCR進階功能,可讀取圖像中的文字
IronOCR由開發的C#庫Iron Software是提供進階 OCR 功能的。 它提供了從圖像、PDF 和掃描文檔中準確提取文本的功能。 在我們進入程式碼之前,請確保您的專案已安裝 IronOCR。
IronOCR提升廣泛使用的Tesseract OCR引擎的功能,增強了準確性和速度。 它作為一個強大的解決方案,用於從各種來源提取文本,包括圖像、PDF 和多種文件格式。
IronOCR 支援超過 127 種語言,能夠熟練處理多語言需求,成為要求語言多樣性的應用程式的理想選擇。
提取的文本可以方便地輸出為純文字或結構化數據,以便無縫整合到進一步的處理管道中。 此外,IronOCR 支援直接從影像輸入創建可搜尋的 PDF。
為了與 C#、F# 和 VB.NET 的兼容性而設計,IronOCR 能夠在各種 .NET 環境中無縫運行,包括版本 8、7、6、Core、Standard 和 Framework。
IronOCR利用 Tesseract 5 的強大功能,專為 .NET 生態系統中的最佳性能量身定制。
使用 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 輸入和圖像加載: 一個 using 區塊創建了一個可處置的 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通道展平為白色。
去噪濾鏡能消除數位噪音。在預期有噪音的情況下使用它。
DeepCleanBackgroundNoise:
當已知文件有極端背景噪聲時,應僅使用此重度背景噪聲消除濾波器。 它可能會降低對於乾淨文件的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技術被整合到翻譯工具和語言學習應用中,用於將印刷文本從一種語言轉換為另一種語言。 使用者可以使用他們的設備捕捉文本,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>
<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>
使用 .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")