跳至頁尾內容
與其他組件相比

Tesseract 與 Microsoft OCR:正面對比

在 C# 中進行光學字元辨識 (OCR) 時,開發人員經常需要在 Tesseract OCR 工具和 Microsoft OCR 引擎之間做出選擇。 儘管功能、效率、整合性和易用性各不相同,但它們都是有效的 OCR 工具,可以從照片或掃描文件中提取文字。 本文將在 C# 開發框架內,深入探討 Tesseract 與 Microsoft OCR 等不同 OCR 工具的優點、缺點與適用性。

什麼是OCR?

光學字元辨識簡稱OCR。 這項技術可以將各種文件格式(如掃描影像文件、PDF 文件或數位相機照片)轉換為可編輯和可搜尋的資料。 為了將圖像的形狀和圖案轉換為機器可讀的文本,不同的 OCR 工具(例如 Google Cloud Vision 或 Google Vision OCR)會對圖像進行分析。 透過使用這種技術,使用者可以從照片中提取文本,並像編輯數位文件一樣編輯、搜尋和更改內容。

Tesseract OCR

Tesseract OCR是一個開源的光學字元辨識 (OCR) 引擎,有時簡稱為 Tesseract。 Tesseract 最初由惠普實驗室在 20 世紀 80 年代創建,現在由Google維護,是目前最受歡迎的 OCR 引擎之一。

Tesseract 的主要功能是識別圖片中包含的文字或處理掃描文檔,並將其轉換為機器可讀文字。 這使得文本可編輯、可搜尋和可操作,使用者可以從各種來源提取文本,包括掃描文件分析、照片和 PDF 文件。

Tesseract OCR 的主要特點

-開源: Tesseract 根據 Apache License 2.0 的條款,可供任何人免費使用、修改和分發。由於社群的貢獻,其開源設計極大地促進了其廣泛應用和持續改進。 -語言支援: Tesseract 除了支援多種語言外,還能辨識 100 多種不同的文字和字元集。 由於其多語言功能,它適用於各種語言和地理區域的各種 OCR 應用。 -準確性: Tesseract 以其出色的文字辨識準確性而聞名,尤其是在正確設定並使用相關資料進行訓練的情況下。 即使照片存在各種問題,例如角度扭曲、品質低劣和光線不足,它也能可靠地從照片中提取文字。 -選項: Tesseract 提供了大量的配置和自訂選項。 針對特定使用場景,使用者可以調整多個參數以最大限度地提高 OCR 效能。 此外,Tesseract 可以與各種平台和電腦語言(如 Java、C++、Python 和 C#)結合使用,使開發人員能夠在廣泛的應用程式中利用其功能。 Tesseract 會持續進行開發和維護,定期添加新功能以提高其準確性、效能和語言支援。 Tesseract 的開源社群支持其持續發展,保證它始終是一款最先進的 OCR 工具。

安裝適用於 .NET 的 Tesseract OCR

第一步是在您的電腦上安裝 Tesseract OCR。您可以從 Tesseract 官方 GitHub 程式碼庫取得 Tesseract 安裝程式:https://github.com/tesseract-ocr/tesseract

若要在您的電腦上安裝 Tesseract OCR,請依照特定於您的作業系統(Windows、macOS 或 Linux)的安裝說明進行操作。 安裝 Tesseract OCR 後,使用 Visual Studio 的 NuGet 套件管理器將 Tesseract.NET 包裝器新增至您的 C# 專案。

在 Visual Studio 中開啟 C# 專案後,導覽至"工具"->"NuGet 套件管理器"->"管理解決方案的 NuGet 套件"。 您可以透過在 NuGet 套件管理員中搜尋"Tesseract"來找到名為"Tesseract"或"Tesseract.NET"的套件。 若要將該軟體包新增至您的專案中,請選擇它並按一下"安裝"。

Tesseract 與 Microsoft OCR(OCR 功能比較):圖 1 - Tesseract

使用 C# 的 Tesseract OCR

請依照以下步驟在 C# 專案中使用 Tesseract:

using Tesseract;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the Tesseract engine with the path to your Tesseract installation and the desired language(s)
        using (var engine = new TesseractEngine(@"path_to_tesseract_folder", "eng", EngineMode.Default))
        {
            // Load the image from which to extract text
            using (var img = Pix.LoadFromFile("image.png"))
            {
                // Process the image and extract the text
                using (var page = engine.Process(img))
                {
                    // Get the extracted text
                    var text = page.GetText();
                    Console.WriteLine(text); // Print the extracted text
                }
            }
        }
    }
}
using Tesseract;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the Tesseract engine with the path to your Tesseract installation and the desired language(s)
        using (var engine = new TesseractEngine(@"path_to_tesseract_folder", "eng", EngineMode.Default))
        {
            // Load the image from which to extract text
            using (var img = Pix.LoadFromFile("image.png"))
            {
                // Process the image and extract the text
                using (var page = engine.Process(img))
                {
                    // Get the extracted text
                    var text = page.GetText();
                    Console.WriteLine(text); // Print the extracted text
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

為此,請提供 Tesseract 安裝目錄的位置以及您希望在 TesseractEngine 建構函式選項中使用的語言。 將"eng"替換為您想要使用的語言的語言程式碼(例如, "eng"代表英文),並將"path_to_tesseract_folder"替換為 Tesseract 安裝目錄的實際路徑。

在 C# 專案中設定好 Tesseract 後,您現在可以利用其 OCR 功能從圖片中提取文字。 TesseractEngine 實例可用於處理已載入的圖片,使用 Pix 類別提取文字或對圖像檔案執行 OCR,將"image.png"替換為圖像檔案的路徑。

什麼是微軟OCR?

微軟的認知服務套件包含Microsoft OCR ,有時也稱為 Microsoft 光學字元辨識。 Microsoft Azure 提供基於雲端的光學字元辨識 (OCR) 解決方案,能夠從文件和照片中提取文本,並具有增強的文本識別功能。 微軟 OCR 使用深度神經網路和機器學習技術,能夠以極高的準確率識別來自各種來源的文字。

主要特點

-與 Azure 認知服務整合: Microsoft OCR 功能與 Azure 認知服務協同工作,Azure 認知服務是一系列由 AI 驅動的 Microsoft Azure API 和服務。 透過這種連接,開發人員可以使用 REST API、SDK 和客戶端程式庫輕鬆地將 Microsoft OCR 功能整合到應用程式和工作流程中。 -高精度和高效能:由於其複雜的機器學習模型經過大量資料集的訓練,微軟 OCR 能夠提供高精度和高效能的文字辨識。 由於它能夠從具有複雜佈局和各種字體的照片中精確提取文本,因此適用於廣泛的 OCR 應用。 -可擴充性和可靠性: Microsoft OCR 是 Azure 認知服務的一個元件,它具有可擴展性和可靠性,因此適用於具有不同處理要求的應用程式。 它可以有效管理大量文件和同時處理多個請求,確保正常運作時間和穩定的效能。 -多語言支援: Microsoft OCR 與其他 OCR 程式一樣,支援多語言識別,使用戶能夠從照片中提取各種語言和字元集的文字。 由於支援多種語言,因此適用於滿足全球各種語言需求的應用。

要在 C# 專案中使用 Microsoft OCR,必須將其與 Azure 認知服務(更具體地說是電腦視覺 API)結合使用。 以下是開始的方法:

建立 Azure 帳戶

如果您還沒有 Azure 帳戶,則必須建立一個。 您可以建立一個免費的 Azure 帳戶,並在試用期內存取多項服務。

配置 Azure 認知服務

如果您擁有 Azure 帳戶,則必須設定 Azure 認知服務中的電腦視覺服務。

  • 開啟Azure 入口網站
  • 點選"建立資源"尋找"電腦視覺"。
  • 選擇電腦視覺服務後,按一下"建立"。
  • 若要設定服務,請依照指示選擇訂閱和價格等級。
  • 服務建置完成後,前往資源並儲存訂閱金鑰和端點 URL; 你需要它們來驗證你的查詢的真實性。

安裝 Azure 認知服務 SDK

利用微軟 Azure 是可行的。 若要在 C# 專案中與電腦視覺 API 通信,請使用 CognitiveServices.Vision.ComputerVision NuGet 套件。

在 Visual Studio 中開啟 C# 專案後,依序選擇"工具"->"NuGet 套件管理器"->"管理解決方案的 NuGet 套件"。

透過搜尋"Microsoft.Azure.CognitiveServices.Vision.ComputerVision"來安裝此軟體套件。

Tesseract 與 Microsoft OCR(OCR 功能比較):圖 2 - Microsoft.Azure.CognitiveServices.Vision.ComputerVision

使用 C# 的 Microsoft OCR

安裝 SDK 後,您可以使用電腦視覺 API 進行 OCR 操作。 下面提供了一個使用電腦視覺 API 對影像進行 OCR 識別的入門範例:

using System;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Set your endpoint and subscription key for authentication
        var endpoint = "YOUR_ENDPOINT";
        var subscriptionKey = "YOUR_SUBSCRIPTION_KEY";

        // Create a new instance of the ComputerVisionClient
        var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
        {
            Endpoint = endpoint
        };

        // Perform OCR on the specified image
        var result = await client.RecognizePrintedTextInStreamAsync(true, "image.png");

        // Iterate over the results and print the recognized text
        foreach (var region in result.Regions)
        {
            foreach (var line in region.Lines)
            {
                foreach (var word in line.Words)
                {
                    Console.WriteLine(word.Text);
                }
            }
        }
    }
}
using System;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Set your endpoint and subscription key for authentication
        var endpoint = "YOUR_ENDPOINT";
        var subscriptionKey = "YOUR_SUBSCRIPTION_KEY";

        // Create a new instance of the ComputerVisionClient
        var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
        {
            Endpoint = endpoint
        };

        // Perform OCR on the specified image
        var result = await client.RecognizePrintedTextInStreamAsync(true, "image.png");

        // Iterate over the results and print the recognized text
        foreach (var region in result.Regions)
        {
            foreach (var line in region.Lines)
            {
                foreach (var word in line.Words)
                {
                    Console.WriteLine(word.Text);
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

若要對影像檔案執行 OCR 識別,請將上述程式碼範例中的"image.png"替換為影像檔案的路徑。此程式碼會將圖像傳送到電腦視覺 API,從而檢索識別出的文字。 您在 Azure 認知服務中設定電腦視覺服務後收到的終點 URL 和訂閱金鑰應替換為"YOUR_ENDPOINT""YOUR_SUBSCRIPTION_KEY"

什麼是IronOCR?

開發人員可以使用 .NET OCR 庫 IronOCR 將文字辨識功能整合到他們的 C# 或 VB.NET 應用程式中。 它提供了一個用戶友好的 API,用於從 PDF、圖片和其他類型的媒體中提取文字。 Iron Software 是一家專門從事 .NET 元件和程式庫開發的軟體開發公司,該公司創建並維護 IronOCR。

IronOCR的主要特點

-簡單整合:您可以透過使用 NuGet 套件或直接在專案中存取程式庫,輕鬆地將 IronOCR 整合到您的 C# 或 VB.NET 專案中。 -多功能OCR: IronOCR可以識別來自各種來源的文本,例如螢幕截圖、掃描文件、PDF文件和照片。它能夠處理多種影像類型,包括BMP、TIFF、PNG和JPEG。 -精準的文字辨識: IronOCR 利用先進的 OCR 演算法,實現了卓越的文字辨識準確率。 使用此方法可以可靠地提取不同解析度、字體和背景的照片中的文字。 -支援多種語言: IronOCR 適用於多語言應用程序,因為它能夠識別多種語言。 它支援客製化語言培訓,並內建了常用語言的語言包。

  • PDF 文字擷取: IronOCR 可以擷取掃描的 PDF 和基於影像的 PDF 中的文字。 從 PDF 文件中刪除文字時,可以保持內容的原始格式和佈局。 -影像預處理:在 OCR 處理之前,IronOCR 可以透過影像預處理功能提高輸入影像的品質。 這包括諸如傾斜校正、對比度調整和降噪等任務。

IronOCR 使用 C

以下是一個使用 IronOCR 的基本 C# 範例:

// Create an instance of IronTesseract
var Ocr = new IronTesseract(); // nothing to configure
// Set the language and Tesseract version to be used for OCR
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;

// Prepare the image input and perform OCR
using (var Input = new OcrInput())
{
    // Add the image for OCR processing
    Input.AddImage(@"Demo.png");
    // Read the text from the image
    var Result = Ocr.Read(Input);
    // Print the recognized text
    Console.WriteLine(Result.Text);
    Console.ReadKey(); // Wait for user input before closing
}
// Create an instance of IronTesseract
var Ocr = new IronTesseract(); // nothing to configure
// Set the language and Tesseract version to be used for OCR
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;

// Prepare the image input and perform OCR
using (var Input = new OcrInput())
{
    // Add the image for OCR processing
    Input.AddImage(@"Demo.png");
    // Read the text from the image
    var Result = Ocr.Read(Input);
    // Print the recognized text
    Console.WriteLine(Result.Text);
    Console.ReadKey(); // Wait for user input before closing
}
$vbLabelText   $csharpLabel

我們可以使用上述程式碼從影像中提取數據,並獲得最高的 OCR 準確率。 此外,IronOCR 還有助於將從文件中提取的文字轉換為可編輯的文件格式,包括 Word 文件。 我們也可以將掃描文件轉換為可搜尋的 PDF 文件。 使用 IronOCR,結果可以儲存為各種 OCR 輸出格式。 要了解更多關於該代碼的信息,請參考這裡

圖片來源:

Tesseract 與 Microsoft OCR(OCR 功能比較):圖 3 - 輸入影像

結果:

Tesseract 與 Microsoft OCR(OCR 功能比較):圖 4 - 控制台輸出

結論

總之,Tesseract 和 Microsoft OCR 各有優缺點,都能為 C# 開發人員提供強大的 OCR 功能。 由於 Tesseract 提供客製化和靈活性,因此對於需要大量微調的應用來說,它是一個不錯的選擇。 然而,對於需要複雜文字辨識功能的 C# 應用程式而言,Microsoft OCR 是最佳選擇,因為它具有高精度、可擴充性和與 Azure 服務的無縫連接。 對於 C# 項目,開發人員在選擇 Tesseract 還是 Microsoft OCR 之前,應該權衡他們的個人需求、修改要求和財務限制。

最後,IronOCR 是一款卓越的 OCR 解決方案,具有出色的整合性、靈活性和準確性。 由於其無與倫比的準確性、先進的演算法以及識別各種文件類型的能力,IronOCR 是目前市場上最好的 OCR 解決方案。 由於 IronOCR 可以無縫整合到眾多文件和常用電腦語言中,因此它既能確保開發人員的可訪問性,又能保持直覺的介面。

您可以免費試用 IronOCR 的經濟實惠的開發版,如果您購買 IronOCR 套餐,您將獲得終身許可證。 IronOCR 套裝起價為$799 ,價格非常優惠,因為它只需一個價格即可在多個設備上使用。 要了解更多費用信息,請訪問 IronOCR網站。 點擊此連結了解更多關於Iron Software產品的資訊。

[{i:(Tesseract 和 Microsoft OCR 是其各自所有者的註冊商標。 本網站與 Tesseract 或 Microsoft OCR 沒有任何關聯,也未獲得其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 文中比較僅供參考,反映的是撰寫本文時公開可取得的資訊。

常見問題解答

Tesseract 和 Microsoft OCR 在語言支援上有何不同?

Tesseract 支援 100 多種語言,並提供豐富的語言資料自訂選項,使其用途非常廣泛。 Microsoft OCR 也透過 Azure 認知服務提供多語言支持,從而實現基於雲端的可擴展語言處理。

哪款 OCR 工具能更好地與 C# 專案整合?

Microsoft OCR 透過 Azure 認知服務與 C# 專案無縫集成,提供基於雲端的可擴充性。 Tesseract 可透過 Tesseract.NET 封裝器進行整合。此外,IronOCR 也可輕鬆與 C# 專案集成,並包含專為 .NET 開發人員量身打造的附加功能。

使用微軟OCR的主要優點是什麼?

微軟 OCR 透過其基於雲端的系統 Azure 認知服務提供高精度、可擴展性和多語言支持,該系統使用深度神經網路進行文字識別。

Tesseract OCR 有哪些適合客製化的優點?

Tesseract OCR 是開源軟體,提供豐富的自訂選項,使開發人員能夠根據各種專案需求進行調整。它支援自訂語言訓練和識別設定的微調。

與 Tesseract 和 Microsoft OCR 相比,IronOCR 能為 C# 專案帶來哪些改進?

IronOCR 提供易於整合、高精度和多語言支持,以及影像預處理和 PDF 文字擷取等高級功能。它專為在 .NET 應用程式中無縫使用而設計,並為開發人員提供直覺的介面。

選擇用於 C# 的 OCR 工具時應考慮哪些因素?

在為 C# 選擇 OCR 工具時,應考慮語言支援、整合便利性、自訂選項、可擴充性以及特定的專案需求等因素。 Tesseract 非常適合自訂,Microsoft OCR 則以雲端可擴充性著稱,而 IronOCR 則易於與 .NET 整合。

IronOCR 能否用於 C# 應用程式中的影像轉文字功能?

是的,IronOCR 可以用於在 C# 應用程式中將圖像轉換為文字。它支援多種圖像格式,並提供高精度的文字識別,是開發人員的可靠選擇。

坎納奧帕特·烏東潘特
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源專業的博士學位。在攻讀博士學位期間,他還加入了生物生產工程系下屬的車輛機器人實驗室。 2022 年,他憑藉 C# 技能加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。 Kannapat 非常珍惜這份工作,因為他可以直接向 IronPDF 大部分程式碼的編寫者學習。除了與同事學習之外,Kannapat 也享受在 Iron Software 工作的社交氛圍。工作之餘,Kannapat 通常會玩 PS5 遊戲或重溫《最後生還者》。