使用 IRONOCR

多語言 Tesseract OCR(開發者教學)

發佈 2024年9月29日
分享:

介紹

OCR 是一種技術,用於將性質不同的文件轉換為可編輯和可搜尋的數據。 它將掃描的圖像、PDF 文件和數碼相機照片轉換為可以編輯和搜索的數據。 這項技術廣泛用於將印刷文件轉換為數位形式,以便進行編輯、搜尋和存儲,從而減少文件佔用的實體空間。 光學字符識別 在資料輸入自動化中扮演著重要角色,從而通過減少人力資源使用的勞動力為公司和組織節省大量時間。

這是一個使用先進的機器學習技術和模式識別從圖像中準確提取文本的過程。 有關 OCR 的最新發展提高了其準確性,從而支援更多語言和複雜文字,例如阿拉伯文字。 在金融、健康、立法和教育領域,OCR(光學字符識別)已成為不可或缺的工具,因為快速處理多份印刷文件是必備條件。本文將使用 Tesseract 來對多語言數據的圖像進行 OCR 處理。

如何使用 Tesseract OCR 支援多種語言

  1. 首先,在您的 .NET 專案中安裝 IronOCR/Tesseract NuGet 套件。

  2. 將會建立一個IronTesseract類別實例,進一步初始化OCR引擎。

  3. 它的設計使語言屬性支持超過一種語言。

  4. 指定要處理的圖像檔案路徑,然後創建一個 OcrInput 對象。

  5. 現在,使用 IronTesseract 實例的 Read 函數對輸入圖像執行 OCR。

  6. 顯示辨識後的文字結果。

什麼是 Tesseract?

Tesseract 是由惠普開發,後來由 Google 維護的開源光學字符識別引擎。 它以高準確性和適應性而聞名,使其成為最突出的 OCR 之一。 Tesseract支持腳本檢測,可以識別多種語言的文本,並能處理多種語言; 因此,它通常用於需要多語文件和支持的專案。

Tesseract OCR 引擎處理影像中每個像素中的資訊,根據顯示字符、單詞和句子的模式,最終轉換為機器可讀的文本。 它支援多種圖像文件類型,例如 TIFF、JPEG 和 PNG,使得 Tesseract 能夠生成純文本、HTML 和可搜索的 PDF 等格式的文字。

Tesseract 的一個顯著優勢是,它可以被訓練以對特定的字體或新增的語言敏感。 它也經常用於各種應用程式,從簡單的文字擷取到數位化歷史文件、處理發票,甚至是為視障人士提供閱讀功能的輔助軟體等複雜任務。

在 Visual Studio 中建立新專案

打開程式 Visual Studio。 打開程式後,進入“檔案選單”。在“檔案選單”下,有“新專案”選項。在“新專案”下,點擊“主控台應用程式”。在這篇文章中,我們將使用主控台程式建立 PDF 文件。

多語言的 Tesseract OCR(開發者教程):圖 1 - 建立一個新專案

輸入專案的名稱和檔案的位置到提供的文字框中。 然後,如下圖所示,點擊「Create」按鈕並選擇您需要的 .NET Framework。

Tesseract OCR 多語言開發者教程:圖 2 - 選擇 .NET Framework 並提供專案和儲存位置。

現在已選擇應用程式版本,Visual Studio 專案將建立其結構。 如果您選擇了控制台、Windows或網頁版本,它將打開程式的.cs文件來添加程式碼並構建/運行應用程式。

安裝 Tesseract OCR For .NET

第一步是在您的電腦上下載並安裝 Tesseract OCR 軟體。 以下是官方 Tesseract GitHub 存儲庫,包括 Tesseract 安裝程式:https://github.com/tesseract-ocr/tesseract

最好按照適合您的操作系統(無論是 Windows、macOS 還是 Linux)的設置說明將 Tesseract OCR 安裝到您的電腦上。 安裝後,使用 Visual Studio 的 NuGet 包管理器將 Tesseract.NET 套件添加到您的 C# 專案中。

在您的 Visual Studio 專案中,從工具 -> NuGet 套件管理員 -> 管理解決方案的 NuGet 套件開啟 NuGet 套件管理員。 之後,在 NuGet 套件管理器中搜尋 "Tesseract" 以獲得 "Tesseract" 或 "Tesseract.NET" 套件。 選擇這個套件,然後點擊安裝按鈕將其安裝到您的專案中。

多語言的 Tesseract OCR(開發者教程):圖 3 - 在瀏覽標籤中搜尋 Tesseract

使用 C# 的 Tesseract OCR

在安裝 Tesseract.NET 包裝器後,您必須在 C# 專案中設定 Tesseract,以指定 Tesseract OCR 可執行檔及語言資料檔案的位置。 這是個例子:

using System;
using System.Drawing;
using Tesseract;
class Program
{
    static void Main()
    {
        // Set the path to the Tesseract data files (traineddata files)
        string tessDataPath = @"./tessdata"; // Ensure this directory contains the language data files
        // Load the image
        string imagePath = @"path_to_your_image.png";
        using (var img = Pix.LoadFromFile(imagePath))
        {
            // Add tesseract languages into engine
            using (var engine = new TesseractEngine(tessDataPath,  "eng+spa+fra", EngineMode.Default))
            {
                using (var page = engine.Process(img))
                {
                    // Extract the text
                    string text = page.GetText();
                    Console.WriteLine("Recognized Text:");
                    Console.WriteLine(text);
                }
            }
        }
    }
}
using System;
using System.Drawing;
using Tesseract;
class Program
{
    static void Main()
    {
        // Set the path to the Tesseract data files (traineddata files)
        string tessDataPath = @"./tessdata"; // Ensure this directory contains the language data files
        // Load the image
        string imagePath = @"path_to_your_image.png";
        using (var img = Pix.LoadFromFile(imagePath))
        {
            // Add tesseract languages into engine
            using (var engine = new TesseractEngine(tessDataPath,  "eng+spa+fra", EngineMode.Default))
            {
                using (var page = engine.Process(img))
                {
                    // Extract the text
                    string text = page.GetText();
                    Console.WriteLine("Recognized Text:");
                    Console.WriteLine(text);
                }
            }
        }
    }
}
Imports System
Imports System.Drawing
Imports Tesseract
Friend Class Program
	Shared Sub Main()
		' Set the path to the Tesseract data files (traineddata files)
		Dim tessDataPath As String = "./tessdata" ' Ensure this directory contains the language data files
		' Load the image
		Dim imagePath As String = "path_to_your_image.png"
		Using img = Pix.LoadFromFile(imagePath)
			' Add tesseract languages into engine
			Using engine = New TesseractEngine(tessDataPath, "eng+spa+fra", EngineMode.Default)
				Using page = engine.Process(img)
					' Extract the text
					Dim text As String = page.GetText()
					Console.WriteLine("Recognized Text:")
					Console.WriteLine(text)
				End Using
			End Using
		End Using
	End Sub
End Class
VB   C#

上述程式碼說明了 Tesseract OCR 如何從包含多種語言的圖像中檢測和提取文字。 它最初設定了 Tesseract 語言資料檔案的路徑。 應在路徑中存在每個相應語言所需的訓練 .traineddata 文件,例如英語、西班牙語和法語。

Tesseract OCR 多語言支援(開發人員教程):圖 4 - 範例輸入

它將 imagePath 指定的圖像加載到 Pix.LoadFromFile 方法中。 更具體地說,可以預期圖像上會有英文、西班牙文和法文文字。 接著,將使用語言數據文件路徑和感興趣的語言 "eng+spa+fra" 初始化 TesseractEngine 實例以識別文本。 引擎將在默認模式下運行。

多語言 Tesseract OCR(開發者教程):圖 5 - 範例控制台輸出

然後,圖像將被傳入引擎類的 Process 方法,該方法將分析圖像,提取文本內容,並存儲在變量 text 中。 最後,提取的文本將被打印到控制台中,從而創建一個OCR工作原理的可視化。

什麼是 IronOCR

IronOCR 是一個專有的 OCR 庫,專注於 Dot NET。 它為 .NET 應用程式添加 OCR 功能,並允許從影像、掃描文件、PDF 及所有其他視覺媒體中提取文字。 IronOCR 採用極為成功的 Tesseract 引擎,驅動尖端的文字辨識技術,同時還包括多種附加功能,使其適合用於企業應用程式。

這使得IronOCR非常出色——其強大的語言支持——超過120種語言,並支持自動語言檢測及同時處理包含多種語言的文件。 反過來,這使得IronOCR非常多功能,並且可以在全球範圍內部署,其中多語言文件處理至關重要。

Tesseract OCR 多語言使用開發者教程:圖 6 - IronOCR:C# OCR 庫

另一方面,IronOCR 仍然強調使用和整合的簡單性。 其極易使用的 API 附有詳細的文檔和一套範例專案,這將幫助任何開發人員快速啟動並運行。 它支援多種影像格式和 PDF 文件。 內建的高級圖像預處理、降噪和錯誤校正功能提高了OCR的準確性和性能。

安裝 IronOCR

您可以使用 Visual Studio 的 NuGet 套件管理工具將套件直接安裝到您的解決方案中。 下圖顯示如何開啟 NuGet 套件管理器。

Tesseract OCR 多語言支援 (開發者教程):圖 7 - 如何通過 Visual Studio 進入 NuGet 套件管理器

它有一個內嵌搜尋框,需要顯示來自 NuGet 網站的套件列表。如下圖所示,我們將在套件管理中搜尋短語 IronOCR:

多語言的 Tesseract OCR(開發者教程):圖 8 - 在方案資源管理器中搜尋 IronOCR

上面的圖可能提供了一份有效搜尋詞的清單。 我們需要選擇安裝解決方案包所需的內容。

此外,請逐一安裝所需的Tesseract語言包,例如以下這個語言包。

在此範例中,我們將使用西班牙語、法語和英語的語言代碼。 英文是預設的語言包,因此不需要安裝。

Tesseract OCR 支援多語言(開發者教程):圖9 - 安裝法文語言包

從 NuGet 套件安裝西班牙語。

Tesseract OCR 多語言支援(開發者教程):圖 10 - 安裝西班牙語語言包

使用 IronOCR 的 Tesseract 引擎讀取多種語言

以下示例演示如何使用 C# 和 IronOCR 及 Tesseract 引擎從圖像中識別多語言文本。

using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();
        // Add multiple languages
        Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French;
        // Path to the image
        var inputFile = @"path\to\your\image.png";
        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);
            // Display the result
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();
        // Add multiple languages
        Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French;
        // Path to the image
        var inputFile = @"path\to\your\image.png";
        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);
            // Display the result
            Console.WriteLine("Text:");
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize IronTesseract engine
		Dim Ocr = New IronTesseract()
		' Add multiple languages
		Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French
		' Path to the image
		Dim inputFile = "path\to\your\image.png"
		' Read the image and perform OCR
		Using input = New OcrInput(inputFile)
			' Perform OCR
			Dim result = Ocr.Read(input)
			' Display the result
			Console.WriteLine("Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
VB   C#

上述 C# 程式是使用 IronOCR 程式庫來對包含英文、西班牙文和法文字符的圖像進行光學字符識別的範例。 此範例首先匯入 IronOCR 所需的命名空間,接著宣告一個名為 program 的類別,其中包含 Main 方法,這是應用程式的進入點。

首先,在 Main 方法中,實例化 IronTesseract 類的一個實例。 此實例將被指派給變數 Ocr。 然後,這個 語言屬性 此實例通過結合 OcrLanguage.English、OcrLanguage.Spanish 和 OcrLanguage.French 設置為包括英語、西班牙語和法語。 這一切將確保OCR引擎能夠識別和處理這三種語言中的文本。

首先,使用 inputFile 變數設定圖像文件的輸入路徑。 在下一行中,將此圖像加載到 OcrInput 類的語句中,以便進行聲音資源管理和處置。 最後,使用輸入對象調用 IronTesseract 實例的 Read 方法並執行 圖像上的OCR。

最後,結果將被檢查以確認識別的文本,並在控制台輸出。 這些 Console.WriteLine 陳述式將輸出檢測到的文本,讓使用者可以看到 OCR 結果。 該程式展示了一種有效的方法來使用IronOCR的多語言功能,從不同語言的文字圖像中提取文本。

多語言 Tesseract OCR(開發者教程):圖 11 - 識別文本輸出

為什麼 IronOCR 優於 Tesseract?

與 Tesseract 相比,它相當友好且具有一些優勢。 首先,IronOCR 提供出色的語言支援。 該引擎開箱即用支持127種語言,而Tesseract據報支持約100種語言; 然而,通常需要複雜的配置和額外的訓練以達到最佳效能。 此外,IronOCR 更容易使用,因為它可以輕鬆整合到 .NET 應用程序中並完成文檔。

相比於 Tesseract,IronOCR 使用起來更加簡單,學習曲線不那麼陡峭,技術設置也較少。不僅如此,IronOCR 配備了先進的圖像預處理功能,並定期進行功能更新,以提高對於複雜和多樣化文件的準確性和可靠性。IronOCR 對於任何尋求堅固、多功能且易於應用的 OCR 解決方案的開發人員來說是更好的選擇。

結論

多語言 Tesseract OCR (開發者教程):圖12 - IronOCR 授權頁面

雖然 Tesseract 和 IronOCR 代表了非常強大的 OCR 技術,但每種技術都有其獨特的功能和優勢。 此外,由於 Tesseract 是開源的,被廣泛使用,並且在語言可用性和靈活性方面處於領先地位,因此它尤為突出。 對於任何尋求擁有活躍社群和持續改進的免費解決方案的人來說,這是可靠的選擇。

相比之下,IronOCR 是一個 .NET Framework 的專有庫,通過更簡便的整合和對大多數圖像文件類型的卓越支持來提升用戶體驗。它還具備出色的文字識別性能,其中一個亮點是能處理低質量的圖像內容。 IronOCR 完全支援多種語言,並且具備一些額外功能,使其對於尋求簡易性和完整支援的開發者更為友好和全面。

IronOCR 提供具成本效益的開發版。 當您購買 IronOCR 套件時,您將獲得終身許可證。 由於IronOCR的價格從749美元起,一次性費用可用於多個系統,這提供了極佳的性價比。 它為IronOCR授權用戶提供24*7的在線工程師支持。 請參考 IronOCR 網站以了解更多關於費用的資訊; 如需了解有關 Iron Software 產品的更多信息,請參見 這裡.

下一個 >
如何在C#中創建OCR軟體示範

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

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