跳過到頁腳內容
使用 IRONOCR

Tesseract OCR 多語言開發者教學

光學字元識別(OCR)是一種技術,用於將不同性質的文件轉換為可編輯和可搜索的數據。 它將掃描的影像、PDF檔案和數位相機的照片轉換為可編輯和可搜索的數據。 這項技術廣泛用於將印刷文件轉變為可編輯、搜索和存儲的數位形式,減少文件佔用的物理空間。 OCR 在數據輸入自動化中發揮了巨大的作用,從而減少了人力資源的使用,為公司和組織節省了大量時間。

這是一個利用先進的機器學習技術和模式識別準確提取圖像中文本的過程。 與OCR相關的最新發展提高了其準確性,從而支持更多語言和複雜的文字,如阿拉伯文字。 在金融、健康、立法和教育領域非常必要,OCR已成為一種必不可少的工具,特別是在需要快速處理大量印刷文件的情況下。本文將使用Tesseract對多語言數據的影像進行OCR處理。

如何使用Tesseract OCR進行多語言處理

  1. 首先,在您的.NET專案中安裝IronOCR/Tesseract的NuGet封裝。
  2. 創建一個IronTesseract類的實例,這將初始化OCR引擎。
  3. 語言屬性支持多於一種語言。
  4. 指定您想要處理的影像檔案路徑,然後創建一個OcrInput對象。
  5. 現在,使用IronTesseract實例的Read函數對輸入影像進行OCR處理。
  6. 獲取結果並顯示識別出的文本。

什麼是Tesseract

Tesseract是一款由惠普開發,後來由谷歌維護的開放光學字元識別引擎。 它因高精確度和適應性而聞名,使其成為最突出的OCR之一。 Tesseract支持文字檢測,可以識別多種語言的文本,並能夠處理多語言; 因此,它通常用於需要多語言文檔和支持的項目。

Tesseract OCR引擎在圖像的任意單一像素中工作,根據描繪字符、單詞和句子的模式,最終轉換為機器可讀的文本。 它支持的多種影像檔案類型,如TIFF、JPEG和PNG,使得Tesseract能夠以純文本、HTML和可搜索的PDF等格式生成文本。

Tesseract的一個重大優勢是它可以被訓練以識別特定字體或新增的語言。 它還經常在各種應用程序中使用,從簡單的文本提取到數字化歷史文件、處理發票,甚至是能夠讓視障人士閱讀的輔助軟件中的複雜任務。

在 Visual Studio 中創建新專案

打開Visual Studio程式。 打開程序時,進入"文件菜單"。在"文件菜單"下,有"新建專案"選項。在"新建專案"下,點擊"控制台應用程序"。在這篇文章中,我們將使用控制台程序創建PDF文件。

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

在提供的文本框中輸入您的專案名稱和文件的位置。 然後,如下圖所示,點擊創建按鈕並選擇您需要的.NET Framework版本。

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

現在選擇了應用程式版本後,Visual Studio專案將創建其結構。 如果您選擇了控制台、Windows或網頁版本,它將打開program.cs文件,以便添加代碼和構建/運行應用程序。

安裝Tesseract OCR For .NET

第一步是在您的計算機上下載並安裝Tesseract OCR軟體。 這是Tesseract的官方GitHub庫,其中包括Tesseract安裝程序:https://github.com/tesseract-ocr/tesseract

最好根據您的作業系統的設定指令-無論是Windows、macOS還是Linux-將Tesseract OCR安裝到您的計算機上。 安裝完成後,通過Visual Studio的NuGet Package Manager將Tesseract.NET封裝添加到您的C#專案中。

從工具 -> NuGet包管理器 -> 為方案管理NuGet包中打開Visual Studio專案中的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 languages to the Tesseract 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 languages to the Tesseract 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 languages to the Tesseract 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
$vbLabelText   $csharpLabel

以上代碼解釋了Tesseract OCR如何檢測並提取含有多種語言的圖像中的文本。 它首先設置Tesseract語言數據文件的路徑。 需要的.traineddata文件應位於路徑中,用於每個相應的語言,如英語、西班牙語和法語。

多語言Tesseract OCR(開發者教程):圖4 - 範例輸入

它使用Pix.LoadFromFile方法加載由imagePath指定的影象。 更具體地說,預期影像包含英語、西班牙語和法語文本。 然後,將實例TesseractEngine初始化為語言數據文件路徑和感興趣的語言"eng+spa+fra",以識別文本。 該引擎將在默認模式下工作。

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

然後,使用引擎類的Process方法對影像進行處理,其中進行分析,提取文本內容,並存儲在變數text中。 提取的文本會在控制台中打印,創建一幅OCR的運作視覺化圖。

什麼是 IronOCR

IronOCR是一種專注於.NET的專有OCR庫。 它為.NET應用程式增加了OCR能力,並允許從影像、掃描文件、PDF以及所有其他可視化媒體中提取文本。 得益於非常成功的Tesseract引擎驅動最先進的文字識別,IronOCR還包括一些額外功能,使其適合用於企業應用程式。

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("Recognized 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("Recognized 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("Recognized Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

上述C#程序使用IronOCR庫對含有英文、西班牙文和法文字元的圖像進行光學字符識別。 程序首先匯入IronOCR所需的命名空間並宣告一個名為Program的類,類中包含應用程序的進入點Main方法。

在Main方法中,創建IronTesseract類的實例並賦值給變量OcrLanguage屬性設置為包含英語、西班牙語和法語,結合OcrLanguage.EnglishOcrLanguage.SpanishOcrLanguage.French。 這確保了OCR引擎能夠識別和處理任何這三種語言的文本。

使用變量inputFile設置輸入影像文件的路徑。 然後在using陳述句中使用OcrInput類的實例載入影像,以便正確的資源管理和釋放。 最後,調用IronTesseract實例的Read方法,通過輸入對象對影像執行OCR。

使用Console.WriteLine方法將識別的文本打印到控制台。 此程序展示了使用IronOCR的多語言功能從含有不同語言單詞的影像中提取文本的有效方法。

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

為什麼IronOCR比Tesseract更好?

IronOCR相比於Tesseract使用起來更友好并具有一些優勢。 首先,IronOCR提供了出色的語言支持,共有125種語言開箱即用,而Tesseract可能需要複雜的配置和額外的訓練以便在其支持的100種語言中獲得最優表現。 此外,IronOCR可輕鬆集成到.NET應用中,並附有完整的文檔。

IronOCR相對於Tesseract學習曲線較平緩,技術設置要求更少。 它還具備先進的影像預處理功能及定期更新,以改善複雜文件的準確性和可靠性。IronOCR是一個適合尋求堅實、多功能且易於應用的OCR解決方案的開發者的絕佳選擇。

結論

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

雖然Tesseract和IronOCR都是強大的OCR技術,但每一都有獨特的能力和長處。 Tesseract作為開源項目,對於尋找免費解決方案的人來說是可靠的,並擁有活躍的社區和持續的改進。

相比之下,IronOCR則是一個.NET Framework的專有庫,提供更佳的用戶體驗,易於整合,並支持大多數影像文件類型。特別是在識別低質量影像內容方面表現出色。 IronOCR完全支持多語言且具有額外的功能提高其用戶友好性。

IronOCR提供經濟適用的開發版,一經購買即提供終身許可。 IronOCR封裝始於一次性價格$liteLicense並覆蓋多系統,提供了良好的性價比以及24/7的線上工程師支持供註冊用戶使用。 更多資訊請參考IronOCR網站。

常見問題解答

如何在 .NET 項目中使用多語言 Tesseract OCR?

您可以使用 IronOCR 庫,這使得集成 Tesseract OCR 以處理含有多種語言文本的圖像變得更加簡單。在您的 .NET 項目中添加 IronOCR/Tesseract NuGet 包,並使用 IronTesseract 類的 Language 屬性配置語言。

IronOCR 比標準 Tesseract 提供了哪些優勢?

IronOCR 提供了更方便用戶的 API 用於 .NET 應用,支持超過 120 種語言的即用即用功能,並提供先進的圖像預處理技術以提高準確性。它無縫集成於 .NET 項目中,為開發人員提供了豐富的文檔和支持。

IronOCR 能否同時處理多種語言的文檔?

可以,IronOCR 可以通過在 Language 屬性中設置多種語言來處理多語言文檔。此功能特別適合於包含不同語言文本的文件的全球應用。

如何在 C# 項目中設置 IronOCR?

要在 C# 項目中設置 IronOCR,首先通過 Visual Studio 的 NuGet Package Manager 安裝 IronOCR/Tesseract NuGet 套件。然後,在您的代碼中創建 IronTesseract 類的實例,並使用其方法來處理包含文本的圖像。

IronOCR 如何提高 OCR 結果的準確性?

IronOCR 通過先進的圖像預處理技術提高準確性,這些技術在文本提取之前提升圖像質量。這一功能有助於從質量參差不齊的圖像中準確地識別文本。

IronOCR可處理哪些類型的文件?

IronOCR 可以處理各種文件類型,包括掃描的圖像、PDF 和數碼相機拍攝的照片。它將這些文件轉換為可編輯和可搜索的數據格式。

IronOCR 適合自動化數據輸入任務嗎?

是的,IronOCR 非常適合透過將打印文件轉換為數字文本來自動化數據輸入,減少人工勞力並節省時間。它被廣泛應用於金融、健康和教育等行業。

IronOCR 如何支持開發人員實施 OCR 技術?

IronOCR 提供豐富的文檔、易於使用的 API 和全天候在線工程師支持,使開發人員更容易在其 .NET 應用中實施 OCR 技術。

IronOCR 的主要應用場景有哪些?

IronOCR 用於數位化印刷文件、自動化數據輸入、處理發票和開發供視力受損用戶使用的輔助軟件。它適用於各個行業,包括金融、醫療保健和教育。

Kannaopat Udonpant
軟體工程師
在成為软件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人实验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因为他直接向编写大部分 IronPDF 使用的代码的开发者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代码或文档时,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。