フッターコンテンツにスキップ
他のコンポーネントと比較する

Tesseract対Microsoft OCR:直接比較

開発者は、C#で光学文字認識(OCR)を行う際、Tesseract OCRツールとMicrosoft OCRエンジンのどちらを選ぶかを頻繁に考えなければなりません。 異なる機能、効率、統合、使いやすさを持ちながら、どちらも写真やスキャンしたドキュメントからテキストを抽出するための効果的なOCRツールです。 C#開発の枠組みの中で、この記事ではTesseract対Microsoft OCRのようなさまざまなOCRツールの利点、欠点、適用性を徹底的に検討します。

OCRとは?

光学文字認識はOCRと呼ばれます。 スキャンした画像ドキュメントやPDFファイル、デジタルカメラの写真など、さまざまなドキュメント形式を編集可能で検索可能なデータに変えることを可能にする技術です。 Google Cloud VisionやGoogle Vision OCRなどの異なるOCRツールが、画像を解析して機械で読み取り可能なテキストに変換します。 この技術を使用することで、ユーザーは写真からテキストを取得し、デジタル文書と同様に内容を編集、検索、変更することができます。

Tesseract OCR

Tesseract OCRは、オープンソースの光学文字認識(OCR)エンジンで、単にTesseractと呼ばれることもあります。 Tesseractは、1980年代にヒューレット・パッカード研究所によって最初に開発され、現在Googleによって維持されており、今日使用されている最も人気のあるOCRエンジンの1つです。

Tesseractの主な機能は、画像に含まれるテキストまたはスキャンしたドキュメントを処理し、それを機械で読み取り可能なテキストに変換することです。 これにより、スキャンされた文書解析、写真、PDFファイルなどのさまざまなソースからテキストを抽出し、テキストを編集、検索、操作可能にします。

Tesseract OCRの主な特徴

  • オープンソース: Tesseractは、Apache License 2.0の条件の下で、誰でも使用、変更、配布が自由にできるようになっています。このオープンソースの設計は、コミュニティの貢献のおかげで、大変広く普及し、継続的に改善されています。
  • 言語サポート: Tesseractは、言語に加えて、100以上の異なるスクリプトや文字セットを認識することができます。 多言語機能により、さまざまな言語や地理的地域での広範なOCRアプリケーションに適しています。
  • 精度: Tesseractは、特に正しく設定され、関連するデータで訓練された場合、その優れたテキスト認識精度で知られています。 角度の歪み、低品質、不十分な照明を含むさまざまな問題を持つ写真からも確実にテキストを抽出することができます。
  • オプション: Tesseractは、多くの設定およびカスタマイズのオプションを提供しています。 特定の使用ケースに対し、OCRの性能を最大化するためにいくつかのパラメータを調整することができます。 さらに、TesseractはJava、C++、Python、C#などのさまざまなプラットフォームおよびコンピューター言語と組み合わせることができ、開発者はさまざまなアプリケーションでその機能を活用できます。
  • Tesseractは、常に新機能を追加してその精度、性能、および言語サポートを向上させるために絶えず開発および保守されています。 Tesseractのオープンソースコミュニティは、その継続的な開発を支援し、常に最先端のOCRツールであることを保証しています。

Tesseract OCR For .NETのインストール

最初のステップとして、コンピュータにTesseract OCRをインストールします。公式のTesseract GitHubリポジトリは、Tesseractインストーラーを取得する場所です: https://github.com/tesseract-ocr/tesseract

コンピュータにTesseract OCRをインストールするには、お使いのオペレーティングシステム(Windows、macOS、またはLinux)に特化したセットアップ手順に従います。 Tesseract OCRをインストールした後、Visual StudioのNuGetパッケージマネージャーを使用して、C#プロジェクトにTesseract.NETラッパーを追加します。

Visual StudioでC#プロジェクトを開いた後、ツール -> NuGetパッケージマネージャー -> ソリューションのNuGetパッケージを管理に進みます。 NuGetパッケージマネージャーで"Tesseract"と検索することにより、"Tesseract"または"Tesseract.NET"という名前のパッケージを見つけることができるはずです。 プロジェクトにパッケージを含めるには、それを選択し、インストールをクリックします。

Tesseract vs 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
                }
            }
        }
    }
}
Imports Tesseract

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize the Tesseract engine with the path to your Tesseract installation and the desired language(s)
		Using engine = New TesseractEngine("path_to_tesseract_folder", "eng", EngineMode.Default)
			' Load the image from which to extract text
			Using img = Pix.LoadFromFile("image.png")
				' Process the image and extract the text
				Using page = engine.Process(img)
					' Get the extracted text
					Dim text = page.GetText()
					Console.WriteLine(text) ' Print the extracted text
				End Using
			End Using
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

これを達成するには、Tesseractインストールディレクトリの場所およびTesseractEngineコンストラクタオプションの中で使用したい言語を提供します。 "eng"を使用したい言語の言語コード(例:"eng"は英語)に、"path_to_tesseract_folder"を実際のTesseractインストールディレクトリのパスに置き換えます。

C#プロジェクトでTesseractセットアップが完了した後、今すぐ画像からテキストを抽出するためにそのOCR機能を利用することができます。 TesseractEngineのインスタンスは、画像ファイル上でOCRを実行するため、Pixクラスを使用してロードされた画像を処理するために使用でき、"image.png"を画像ファイルのパスで置き換えます。

Microsoft OCRとは?

MicrosoftのCognitive Servicesパッケージには、Microsoft OCRが含まれており、Microsoft Optical Character Recognitionと呼ばれることがあります。 Microsoft Azureは、強化されたテキスト認識機能を備えた、ドキュメントや写真からテキストを抽出するクラウドベースの光学文字認識(OCR)ソリューションを提供します。 Microsoft OCRは、さまざまなソースからテキストを高精度で識別するために、深層ニューラルネットワークと機械学習技術を使用しています。

主な機能

  • Azure Cognitive Servicesとの統合: Microsoft OCRは、AIを活用したMicrosoft AzureのAPIおよびサービスのコレクションであるAzure Cognitive Servicesと一体となって機能します。 この接続により、開発者はREST API、SDK、およびクライアントライブラリを使用して、簡単にMicrosoft OCRの機能をアプリケーションやワークフローに統合できます。
  • 高精度と性能: 大規模なデータセットでトレーニングされた高度な機械学習モデルのおかげで、Microsoft OCRは高精度と性能を伴うテキスト認識を提供します。 複雑なレイアウトや多様なフォントを持つ写真からテキストを正確に抽出する能力を持ち、広範なOCRアプリケーションに適しています。
  • スケーラビリティと信頼性: Azure Cognitive Servicesの一部であるMicrosoft OCRは、スケーラビリティと信頼性を提供し、さまざまな処理要件を持つアプリケーションに適しています。 大量のドキュメントや複数の要求を同時に効果的に管理でき、稼働時間と安定した性能を保証します。
  • 多言語サポート: 他のOCRプログラムのように、Microsoft OCRは多言語認識を可能にし、さまざまな言語や文字セットでの画像からのテキスト抽出を可能にします。 多言語サポートのおかげで、さまざまな言語ニーズを抱える世界的なアプリケーションに適しています。

C#プロジェクトで使用するためには、Microsoft OCRをAzure Cognitive Servicesと組み合わせる必要があります。具体的には、Computer Vision APIです。 ここから開始する方法です。

Azureアカウントを作成

既にAzureアカウントを持っていない場合は、アカウントを作成する必要があります。 無料のAzureアカウントを作成し、試用期間中にいくつかのサービスにアクセスできます。

Azure Cognitive Servicesを設定

Azureアカウントを取得したら、Azure Cognitive ServicesのComputer Visionサービスを設定する必要があります。

  • Azureポータルを開きます。
  • "リソースの作成"をクリックして"Computer Vision"を検索します。
  • Computer Visionサービスを選択し、"作成"をクリックします。
  • サービスを設定するには、プロンプトに従って、サブスクリプションと料金プランを選択します。
  • サービスが作成された後、リソースに移動してサブスクリプションキーとエンドポイントURLを保存します。 リクエストの本人確認に必要です。

Azure Cognitive Services SDKをインストール

Microsoft Azureを利用することが可能です。 C#プロジェクトでComputer Vision APIと通信するために、CognitiveServices.Vision.ComputerVision NuGetパッケージを使用します。

Visual StudioでC#プロジェクトを開いた後に、ツール -> NuGetパッケージマネージャ -> ソリューションのNuGetパッケージを管理に進みます。

"Microsoft.Azure.CognitiveServices.Vision.ComputerVision"と検索してパッケージをインストールします。

Tesseract vs Microsoft OCR(OCR機能の比較):図2 - Microsoft.Azure.CognitiveServices.Vision.ComputerVision

C#を使用したMicrosoft OCR

SDKをインストールした後、Computer Vision APIを使用してOCRを行うことができます。 画像にOCRを行うためのComputer Vision APIを使用する初歩的な例を以下に示します。

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);
                }
            }
        }
    }
}
Imports System
Imports Microsoft.Azure.CognitiveServices.Vision.ComputerVision
Imports Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Set your endpoint and subscription key for authentication
		Dim endpoint = "YOUR_ENDPOINT"
		Dim subscriptionKey = "YOUR_SUBSCRIPTION_KEY"

		' Create a new instance of the ComputerVisionClient
		Dim client = New ComputerVisionClient(New ApiKeyServiceClientCredentials(subscriptionKey)) With {.Endpoint = endpoint}

		' Perform OCR on the specified image
		Dim result = Await client.RecognizePrintedTextInStreamAsync(True, "image.png")

		' Iterate over the results and print the recognized text
		For Each region In result.Regions
			For Each line In region.Lines
				For Each word In line.Words
					Console.WriteLine(word.Text)
				Next word
			Next line
		Next region
	End Function
End Class
$vbLabelText   $csharpLabel

画像ファイルに対してOCRを実行するには、上記のコードサンプルの"image.png"を画像ファイルのパスに置き換えます。このコードは、認識されたテキストをComputer Vision APIに送信して取得します。 Azure Cognitive ServicesでComputer Visionサービスを設定した後に受け取ったエンドポイントURLとサブスクリプションキーを"YOUR_ENDPOINT"および"YOUR_SUBSCRIPTION_KEY"に置き換えます。

IronOCRとは?

開発者は、IronOCRという.NET OCRライブラリを使用して、自分のC#またはVB.NETアプリケーションにテキスト認識機能を組み込むことができます。 PDF、写真、および他の種類のメディアからテキストを抽出するためのユーザーフレンドリーなAPIを提供します。 IronOCRは、.NETコンポーネントとライブラリを専門とするソフトウェア開発企業、Iron Softwareによって作成および維持されています。

IronOCRの主な特徴

  • シンプルな統合: NuGetパッケージを使用するか、直接プロジェクト内でライブラリを利用することで、IronOCRをC#またはVB.NETプロジェクトに簡単に統合することができます。
  • 多様なOCR: IronOCRは、スクリーンショット、スキャンした文書、PDFファイル、そして写真などの幅広いソースからテキストを認識できます。BMP、TIFF、PNG、JPEGなど、いくつかの画像形式に対応しています。
  • 正確なテキスト認識: IronOCRは、先端のOCRアルゴリズムを使用することで、優れたテキスト認識精度を実現しています。 異なる解像度、フォント、背景を持つ画像から確実にテキストを抽出できます。
  • 複数言語のサポート: IronOCRは、複数の言語を認識することができるため、多言語アプリケーションに適しています。 カスタマイズされた言語トレーニングを可能にし、一般的な言語のためのビルトイン言語パックを備えています。
  • PDFテキスト抽出: IronOCRは、スキャンされたPDFと画像ベースのPDFの両方からテキストを抽出することができます。 PDFドキュメントからテキストを取り除く際、元のフォーマットとレイアウトを保持することができます。
  • 画像の前処理: IronOCRは、OCR処理の前に、画像の前処理機能を使って受信画像の品質を向上させることができます。 これにより、傾きの補正、コントラストの調整、ノイズの除去などが含まれます。

C#を使用したIronOCR

ここに、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
}
' Create an instance of IronTesseract
Dim 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 Input = New OcrInput()
	' Add the image for OCR processing
	Input.AddImage("Demo.png")
	' Read the text from the image
	Dim Result = Ocr.Read(Input)
	' Print the recognized text
	Console.WriteLine(Result.Text)
	Console.ReadKey() ' Wait for user input before closing
End Using
$vbLabelText   $csharpLabel

上記のコードを使用することで、最高のOCR精度で画像からデータを抽出することができます。 さらに、IronOCRは、文書から抽出したテキストを編集可能なファイル形式に変換することを支援します。Wordなどの形式です。 スキャンした文書を検索可能なPDFに変えることもできます。 IronOCRを使用して、結果をさまざまなOCR出力形式に保存できます。 コードに関してさらに詳しく知りたい場合は、こちらをご覧ください。

ソースイメージ:

Tesseract vs Microsoft OCR(OCR機能の比較):図3 - 入力イメージ

結果:

Tesseract vs Microsoft OCR(OCR機能の比較):図4 - コンソール出力

結論

結論として、TesseractとMicrosoft OCRの各々は、C#の開発者に強力なOCR機能を提供するユニークな利点と欠点を備えています。 Tesseractは、カスタマイズ性と柔軟性を提供するため、大幅な微調整を必要とするアプリケーションに適しています。 しかし、Microsoft OCRは、その高精度、スケーラビリティ、Azureサービスとのシームレスな連携のため、洗練されたテキスト認識機能が必要なC#アプリケーションに最適です。 開発者は、TesseractとMicrosoft OCRの間で決定を下す前に、個々のニーズ、変更要件、および財政的制約を検討するべきです。

最後に、IronOCRは、優れた統合性、柔軟性、および精度を提供する注目に値するOCRソリューションです。 比類なき精度、高度なアルゴリズム、多様なドキュメントタイプの認識能力を誇るIronOCRは、現在市場に出ている最高のOCRソリューションです。 IronOCRは多数のドキュメントと一般的なコンピューター言語にわたってスムーズに統合され、直感的なインターフェースを維持しながら、開発者のアクセスを保証します。

IronOCRのリーズナブルな開発エディションを無料で試してみることができ、IronOCRパッケージを購入すれば、永久ライセンスが得られます。 価格は$799からで、IronOCRバンドルは複数のデバイスに対して単一の価格を提供する素晴らしい価値があります。 価格について詳しく知るには、IronOCRのウェブサイトをご覧ください。 Iron Software製品についてさらに知りたい場合は、このリンクをクリックしてください。

ご注意TesseractおよびMicrosoft OCRは、それぞれの所有者の登録商標です。 このサイトは、TesseractまたはMicrosoft OCRとは提携しておらず、承認も支援もされていません。 すべての製品名、ロゴ、およびブランドは、それぞれの所有者の財産です。 比較は情報提供のみを目的としており、執筆時点で公開される情報に基づいています。

よくある質問

TesseractとMicrosoft OCRは言語サポートの観点からどのように比較されますか?

Tesseractは100以上の言語をサポートしており、言語データのカスタマイズオプションを広範に提供しているため、非常に汎用性があります。Microsoft OCRもAzure Cognitive Servicesを通じて多言語サポートを提供し、クラウドを介したスケーラブルな言語処理が可能です。

どのOCRツールがC#プロジェクトとより良い統合を提供しますか?

Microsoft OCRはAzure Cognitive Servicesを通じてC#プロジェクトとシームレスに統合され、クラウドベースのスケーラビリティを提供します。TesseractはTesseract.NETラッパーを使用して統合することができます。代わりに、IronOCRはC#プロジェクトと簡単に統合できるように提供され、.NET開発者向けに追加の機能が含まれています。

Microsoft OCRを使用する主な利点は何ですか?

Microsoft OCRは、そのクラウドベースのシステムであるAzure Cognitive Servicesを通じて、高い精度、スケーラビリティ、および多言語サポートを提供し、テキスト認識のために深層ニューラルネットワークを使用しています。

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#アプリケーションで画像をテキストに変換できます。それは複数の画像フォーマットをサポートし、テキスト認識において高い精度を提供するため、開発者にとって信頼できる選択肢です。

Kannaopat Udonpant
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、Kannapatは北海道大学で環境資源の博士号を修了しました。博士号を追求する間に、彼はバイオプロダクションエンジニアリング学科の一部である車両ロボティクスラボラトリーのメンバーになりました。2022年には、C#のスキルを活用してIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。Kannapatは、IronPDFの多くのコードを執筆している開発者から直接学んでいるため、この仕事を大切にしています。同僚から学びながら、Iron Softwareでの働く社会的側面も楽しんでいます。コードやドキュメントを書いていない時は、KannapatはPS5でゲームをしたり、『The Last of Us』を再視聴したりしていることが多いです。