OCRツール

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

Kannaopat Udonpant
カンナパット・ウドンパント
2023年6月6日
更新済み 2024年1月28日
共有:

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;

var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);
var img = Pix.LoadFromFile("Demo.png");
var res = ocrEngine.Process(img);
Console.WriteLine(res.GetText());
Console.ReadKey();
using Tesseract;

var ocrEngine = new TesseractEngine(@"tessdata", "eng", EngineMode.Default);
var img = Pix.LoadFromFile("Demo.png");
var res = ocrEngine.Process(img);
Console.WriteLine(res.GetText());
Console.ReadKey();
Imports Tesseract

Private ocrEngine = New TesseractEngine("tessdata", "eng", EngineMode.Default)
Private img = Pix.LoadFromFile("Demo.png")
Private res = ocrEngine.Process(img)
Console.WriteLine(res.GetText())
Console.ReadKey()
$vbLabelText   $csharpLabel

まず、TerreractEngineオブジェクトを作成し、エンジンに言語データをロードする必要があります。その後、Tesseract Pixの助けを借りて、目的の画像ファイルをロードします。 その後、この画像はTerreractEngineに渡され、TesseractEngineで利用可能なGetTextメソッドを使用して、正しく認識されたテキストを抽出します。 これはコードからの出力です。

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

画像から抽出されたテキスト

テッセラクトに関する考慮事項

  1. Tesseractは、バージョン3.00からテキストのフォーマット出力、OCRの位置データ、およびページレイアウト分析をサポートしています。

  2. TesseractはWindows、Linux、Mac OS Xで利用可能です。 しかし、Tesseractは限られた開発サポートのため、WindowsおよびUbuntuでのみ意図したとおりに動作することが確認されています。

  3. テッセラクトはモノスペーステキストとプロポーショナルスペーステキストを区別することができます。

  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の使用

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

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var input = new OcrInput())      
{          
    input.LoadImage(@"Demo.png");
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var input = new OcrInput())      
{          
    input.LoadImage(@"Demo.png");
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
Dim ocr = New IronTesseract()
ocr.Language = OcrLanguage.EnglishBest
ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using input = New OcrInput()
	input.LoadImage("Demo.png")
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
	Console.ReadKey()
End Using
$vbLabelText   $csharpLabel

上記のコードはIronTesseractオブジェクトをインスタンス化します。 さらに、ローカルファイルパスを持つ画像ファイルを1つ以上追加するために、OcrInputオブジェクトが作成されており、LoadImageメソッドで行われます。 好きなだけ写真をアップロードできます。 機能 Read はオブジェクト IronTesseract 内で画像ファイルを解析し、結果をOCRの結果として抽出します。

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

IronOCRライブラリを使用した抽出テキスト出力

2.3 IronOCRの考慮事項

  1. IronOCRは、Tesseractライブラリの拡張であり、より高い安定性と精度を提供します。

  2. IronOCRは、PDFや写真からテキストコンテンツを読み取ることができます。また、IronOCRは20種類以上のバーコードやQRコードを読み取ることもできます。

  3. 出力はプレーンテキスト、構造化データ、バーコード、またはQRコードとしてレンダリングすることができます。

  4. ライブラリは世界中で127の言語を認識します。

  5. IronOCRは、すべての.NET環境(コンソール、Web、デスクトップなど)で柔軟に動作し、Mono、Xamarin、Azure、およびMAUIといった最新のモバイルフレームワークもサポートしています。

  6. IronOCRは無料トライアルを提供しており、より低価格な開発版があります。 ライセンスについて詳細を学ぶ

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

Kannaopat Udonpant
カンナパット・ウドンパント
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、カンナパットは日本の北海道大学から環境資源学の博士号を取得しました。学位を取得する過程で、カンナパットはバイオプロダクション工学部に所属する車両ロボティクス研究所のメンバーにもなりました。2022年には、C#のスキルを活かしてIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。カンナパットは、IronPDFで使用されているコードの大部分を作成した開発者から直接学べることに価値を見いだしています。同僚との学び合いに加えて、Iron Softwareで働くことの社会的側面も楽しんでいます。コードやドキュメントを書いていない時には、カンナパットは通常、PS5でゲームをしたり、『The Last of Us』を再視聴したりしています。
< 以前
OCR C# オープンソース(開発者向けリスト)
次へ >
ベストOCR API (最新リストの比較)