フッターコンテンツにスキップ
OCRツール

Tesseractを使用して画像からテキストを取得する方法

IronOCRやTesseractのようなライブラリを活用することで、開発者は画像やスキャンした文書からテキスト情報を抽出するための高度なアルゴリズムや機械学習技術にアクセスできます。 このチュートリアルでは、画像からテキストを抽出するためのTesseractライブラリの使用方法を読者に示し、その後、IronOCRのユニークなアプローチを紹介します。

1. TesseractによるOCR

1.1. Tesseractのインストール

NuGetパッケージマネージャーコンソールで次のコマンドを入力します。

Install-Package Tesseract

または、NuGetパッケージマネージャーを介してパッケージをダウンロードします。

OCRテキスト認識の取得方法、図1:NuGetパッケージマネージャーでTesseractパッケージをインストール NuGetパッケージマネージャーでTesseractパッケージをインストール

NuGetパッケージのインストール後、プロジェクトフォルダに言語ファイルを手動でインストールして保存する必要があります。 これはこの特定のライブラリの短所と見なされるかもしれません。

言語ファイルをダウンロードするには、次のウェブサイトを訪問してください。 ダウンロード後、ファイルを解凍し、プロジェクトのデバッグフォルダに"tessdata"フォルダを追加します。

1.2. Tesseractの使用 (クイックスタート)

指定された画像でのOCRは以下のソースコードを使用して実行できます。

using Tesseract;

class Program
{
    static void Main()
    {
        // Initialize Tesseract engine with English language data
        using var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);

        // Load the image to be processed
        using var img = Pix.LoadFromFile("Demo.png");

        // Process the image to extract text
        using var res = ocrEngine.Process(img);

        // Output the recognized text
        Console.WriteLine(res.GetText());
        Console.ReadKey();
    }
}
using Tesseract;

class Program
{
    static void Main()
    {
        // Initialize Tesseract engine with English language data
        using var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);

        // Load the image to be processed
        using var img = Pix.LoadFromFile("Demo.png");

        // Process the image to extract text
        using var res = ocrEngine.Process(img);

        // Output the recognized text
        Console.WriteLine(res.GetText());
        Console.ReadKey();
    }
}
Imports Tesseract

Friend Class Program
	Shared Sub Main()
		' Initialize Tesseract engine with English language data
		Dim ocrEngine = New TesseractEngine("tessdata", "eng", EngineMode.Default)

		' Load the image to be processed
		Dim img = Pix.LoadFromFile("Demo.png")

		' Process the image to extract text
		Dim res = ocrEngine.Process(img)

		' Output the recognized text
		Console.WriteLine(res.GetText())
		Console.ReadKey()
	End Sub
End Class
$vbLabelText   $csharpLabel
  • まず、TesseractEngineオブジェクトを作成し、エンジンに言語データを読み込みます。
  • 次に、Pix.LoadFromFileを使用して所望の画像ファイルを読み込みます。
  • 画像はTesseractEngineに渡され、Processメソッドを使用してテキストを抽出します。
  • 認識されたテキストはGetTextメソッドで取得し、コンソールに出力します。

OCRテキスト認識の取得方法、図2:画像から抽出されたテキスト 画像から抽出されたテキスト

1.3 Tesseractに関する考慮事項

  1. Tesseractはバージョン3.00から出力テキストのフォーマット、OCR位置データ、およびページレイアウト分析をサポートしています。
  2. TesseractはWindows、Linux、MacOSで使用可能ですが、限定的な開発サポートのため、主にWindowsとUbuntuで意図した通りに動作することが確認されています。
  3. Tesseractはモノスペースと比例空間のテキストを区別できます。
  4. OCRopusのようなフロントエンドを利用することで、Tesseractはバックエンドとして最適であり、レイアウト分析のようなより難しいOCRジョブに利用できます。
  5. Tesseractのいくつかの欠点:
    • 最新のビルドはWindowsでのコンパイルを前提に設計されていない
    • TesseractのC# APIラッパーは頻繁にメンテナンスされておらず、新しいリリースとは数年遅れています

C#でTesseractについてもっと学ぶにはTesseractチュートリアルをご覧ください。

2. IronOCRによるOCR

2.1. IronOCRのインストール

NuGetパッケージマネージャーコンソールに次のコマンドを入力します。

Install-Package IronOcr

また、NuGetパッケージマネージャーを使用してIronOCRライブラリと他の言語用の追加パッケージをインストールできます。使いやすく便利です。

OCRテキスト認識の取得方法、図3:NuGetパッケージマネージャーを介してIronOcrと言語パッケージをインストール NuGetパッケージマネージャーを介してIronOcrと言語パッケージをインストール

2.2. IronOCRの使用

以下は、指定された画像からテキストを認識するサンプルコードです。

using IronOcr;

class Program
{
    static void Main()
    {
        // Create an IronTesseract instance with predefined settings
        var ocr = new IronTesseract()
        {
            Language = OcrLanguage.EnglishBest,
            Configuration = { TesseractVersion = TesseractVersion.Tesseract5 }
        };

        // Create an OcrInput instance for image processing
        using var input = new OcrInput();

        // Load the image to be processed
        input.AddImage("Demo.png");

        // Process the image and extract text
        var result = ocr.Read(input);

        // Output the recognized text
        Console.WriteLine(result.Text);
        Console.ReadKey();
    }
}
using IronOcr;

class Program
{
    static void Main()
    {
        // Create an IronTesseract instance with predefined settings
        var ocr = new IronTesseract()
        {
            Language = OcrLanguage.EnglishBest,
            Configuration = { TesseractVersion = TesseractVersion.Tesseract5 }
        };

        // Create an OcrInput instance for image processing
        using var input = new OcrInput();

        // Load the image to be processed
        input.AddImage("Demo.png");

        // Process the image and extract text
        var result = ocr.Read(input);

        // Output the recognized text
        Console.WriteLine(result.Text);
        Console.ReadKey();
    }
}
Imports IronOcr

Friend Class Program
	Shared Sub Main()
		' Create an IronTesseract instance with predefined settings
		Dim ocr = New IronTesseract() With {
			.Language = OcrLanguage.EnglishBest,
			.Configuration = { TesseractVersion = TesseractVersion.Tesseract5 }
		}

		' Create an OcrInput instance for image processing
		Dim input = New OcrInput()

		' Load the image to be processed
		input.AddImage("Demo.png")

		' Process the image and extract text
		Dim result = ocr.Read(input)

		' Output the recognized text
		Console.WriteLine(result.Text)
		Console.ReadKey()
	End Sub
End Class
$vbLabelText   $csharpLabel
  • このコードは、言語とTesseractバージョンを設定するIronTesseractオブジェクトを初期化します。
  • 次に、画像ファイルを読み込むためAddImageメソッドを使用してOcrInputオブジェクトを作成します。
  • IronTesseractReadメソッドが画像を処理し、抽出されたテキストがコンソールに出力されます。

OCRテキスト認識の取得方法、図4:IronOCRライブラリを使用した抽出テキスト出力 IronOCRライブラリを使用した抽出テキスト出力

2.3 IronOCRに関する考慮事項

  1. IronOCRはTesseractライブラリの拡張であり、より安定性が高く精度が向上しています。
  2. IronOCRはPDFや写真からテキストコンテンツを読むことができます。 また、20種以上の異なるバーコードおよびQRコードを読み取ることができます。
  3. 出力はプレーンテキスト、構造化データ、バーコード、QRコードとしてレンダリングすることができます。
  4. このライブラリは世界125カ国語を認識します。
  5. IronOCRは全ての.NET環境で柔軟に動作し(コンソール、Web、デスクトップなど)、Mono、Xamarin、Azure、MAUIなどの最新のモバイルフレームワークもサポートしています。
  6. IronOCRは無料試用を提供し、開発エディションはリーズナブルな価格です。 ライセンスについてさらに学びましょう。

詳細なIronOCRチュートリアルについては、この記事を参照して画像からC#でテキストを読み取ってください。

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