フッターコンテンツにスキップ
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ラッパーは頻繁には更新されておらず、Tesseractの新しいリリースに数年遅れています

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
  • このコードはIronTesseractオブジェクトを初期化し、言語とTesseractのバージョンを設定します。
  • 次に、AddImageメソッドを使用して画像ファイルをロードするためにOcrInputオブジェクトを作成します。
  • IronTesseractReadメソッドが画像を処理しテキストを抽出し、その結果をコンソールに出力します。

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

2.3 IronOCRの考慮事項

  1. IronOCRはTesseractライブラリの拡張版であり、より安定性が高く、高精度を提供します。
  2. IronOCRは、PDFや写真からテキストコンテンツを読み取ることができます。 さらに、20を超える種類のバーコードやQRコードも読み取ることができます。
  3. 出力はプレーンテキスト、構造化データ、バーコード、QRコードとしてレンダリングできます。
  4. ライブラリは世界中で125の言語を認識します。
  5. IronOCR works in all .NET environments flexibly (console, Web, desktop, etc.), and also supports the latest mobile frameworks such as Mono, Xamarin, Azure, and MAUI.
  6. IronOCRは無料の試用版を提供しており、開発エディションはより低価格です。 ライセンスについて詳しくはこちらをご覧ください。

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

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