フッターコンテンツにスキップ
OCRツール
オープンソースライブラリを使用してC#でOCRを実装する方法

C#オープンソースのOCR(開発者向けリスト)

OCR(光学文字認識)は、スキャンされたドキュメントの使用法を完全に変革する革新的な技術です。 コンピュータは、スキャンされたPDFドキュメントを含むさまざまなソースからテキストを認識して抽出することができます。これにより、PDFドキュメントを効果的に編集および操作できます。 光学式文字認識 (OCR) プログラムの1つであるAdobe Acrobatは、スキャンされたドキュメントからテキストを迅速に抽出し、編集可能なPDFや検索可能な画像PDFに変換することができます。

開発者は、TesseractやIronOCRのようなOCRライブラリを利用して、先進的なアルゴリズムや機械学習手法を活用する強力なツールやAPIにアクセスできます。 これらのライブラリは正確なテキスト認識を可能にし、スキャン済みのドキュメントや新規のドキュメントから有用な情報を管理し取得するのを容易にします。 OCRはシームレスなコンテンツ分析を可能にし、スキャン文書やページ画像を最大限に活用することで、企業や個人の生産性を最大化します。 OCRは、紙ベースの記録をデジタル化したり、請求書からデータを抽出したり、文書のアクセシビリティを向上させたりするのに、現在の技術において重要なツールです。

Tesseract

最も有名なオープンソースのOCRエンジンはTesseractであり、最初はヒューレット・パッカードによって開発されました。 2006年以降、Googleがこの無料ソフトウェアプロジェクトを支援しており、Apacheライセンスの下でリリースされています。

最も正確なオープンソースおよび無料システムの1つは、Tesseract OCRエンジンです。Tesseractの最新の安定版4.1.1はLSTMに基づいており、116の言語をサポートしています。

Tesseractはコマンドラインインターフェースから実行する場合、自身の組み込みインターフェースを持たないため、別のGUI(グラフィカルユーザーインターフェース)からのサポートが必要です。 ニューラルネットワークを使用して新しい情報を学習することができ、先進的な画像前処理パイプラインを備えています。.NETアプリケーションにOCR機能を追加する最も効果的な方法は、Tesseract .NET SDKです。これはテキスト認識機能を提供するための最良のソリューションの1つです。 Tesseractは間違いなく現在市販されている最高のOCRライブラリです。

GOCR

GNU Public Licenseを使用して作成されたOCR(光学文字認識)プログラムであるGOCR。 それはテキストファイルをドキュメントのスキャン画像に戻します。 プログラムを開始し、開発チームをSFで管理したJoerg Schulenburgは、今日も(非常に)低時間ベースでパッケージを扱っています。

GOCRは複数のフロントエンドで使用できるため、他のオペレーティングシステム、ネットワークアプリケーション、アーキテクチャに移植するのが比較的簡単です。 多種多様な画像ファイルタイプを読み取ることができ、2010年まではその品質はコンスタントに向上しました。

GOCRによれば、幅が20〜60ピクセルの一列のサンセリフ書体を扱うことができます。 ラテン文字以外のアルファベットで書かれたテキスト、セリフフォント、重なり合う文字、さまざまな書体、ノイズのある写真、過度の傾斜角度に課題があると報告しています。 GOCRはまた、バーコードを翻訳することができます。

CuneiForm

CuneiFormは、無料のオープンソース技術であり、今や「Cognitive OpenOCR」としても知られています。組み込みの出力とデータベースがあります。 23の異なる言語をカバーし、テキストフォーマットスキャン、文書レイアウト分析、および識別などのタスクも実行します。

Cognitive TechnologiesはOpenOCRのライセンスを開発し、それはフリーウェアおよびBSDです。 クロスプラットフォームの使用をサポートする一方で、Linuxユーザーにはグラフィカルインターフェイスを提供していません。

文字認識作業を単純化するために、いかなるDot NET Framework 2.0またはそれ以降のアプリケーションでも、ラッパーライブラリPuma Dot NETが使用されます。 データを処理する際に辞書チェックを実行し、認識の質を向上させます。

CuneiFormは、電子形式の文書や画像ファイルを自動または半自動で編集可能なフォームに変換するための技術であり、構造や元の文書フォントに影響を与えません。 システムは、バッチで電子文書を処理する部分と、1つのドキュメントを一度に処理する部分の二部で構成されています。さらに、システムはロシア語と英語の組み合わせをサポートしています。 2009年にAndrei Borovskyによって作成されたブランチのみが、他のハイブリッド言語の認識をサポートしています。 各言語はdatファイルに関連付けられているため、システムに他の言語を認識させることは難しいです。その構造と作成プロセスは開発者によって非公開です。

Kraken

KrakenはOcropusの問題に対処するために開発されましたが、他の機能には影響を与えません。 CLSTMニューラルネットワークライブラリを利用し、以前のプロジェクトから得られた貴重な経験を新しいデータと共に活用します。 異なるプラットフォームで効果的に機能するために、特定の外部ライブラリの使用が必要です。 保存された情報を活用して、潜在的なデータ検証問題に関するより正確な予測を行うことができます。 さらに、その作業手法は、新しいモデルの展開とトレーニングを容易にします。

A9T9

A9T9は無料のOCRソフトウェアで、画像ファイルからテキストを抽出し、画像とPDFドキュメントを変換するために使用できます。 Tesseract OCRエンジン用のグラフィカルユーザーインターフェース(GUI)を提供しています。

プログラムは簡単に設定できます。最も重要なのは、完全に無料でオープンソースです。 スパイウェアやアドウェアはありません。

PDFファイルや画像を開くことができ、ソースファイルの内容が左ウィンドウに表示されます。 ドキュメントに複数のページがある場合、またはマルチページのドキュメントである場合は、ページ下部の矢印を使用してページ間を移動できます。

OCRプロセスを開始するには、緑色のOCRボタンをクリックするだけで、出力が右側の第2のペインに表示されます。 出力テキストをテキストファイルおよびWordドキュメントの両方として保存するオプションがあります。

IronOCRの概要

標準のTesseractライブラリとは対照的に、IronOCRはTesseractを拡張し、高い精度、改善されたパフォーマンス、強化された安定性のネイティブC#のOCRライブラリを提供します。 IronOCRは.NETプログラムおよびWebサイトで使用して、PDFや画像からテキストを抽出できます。 広範な外国語をサポートし、プレーンテキストまたは構造化データの出力を生成できます。 埋め込まれたテキストのあるバーコードや画像をスキャンすることができます。 ライブラリは、コンソール、Web、MVC、デスクトップで開発された.NETアプリケーションで利用できます。開発チームは商用導入のライセンスプロセスを直接サポートします。 IronOCRは最新のVisual Studioとの互換性があります。

IronOCRの利点

  • 最新のTesseract 5エンジンを使用して、IronOCRはさまざまな画像またはPDFファイルから紙文書、バーコード、QRコードを正確に読み取ることができます。 このパッケージは、デスクトップ、コンソール、WebアプリケーションへのOCRの組み込みを簡素化します。
  • IronOCRはOCRの実行を可能にし、スキャンPDFを検索可能なPDFに変換することができます。
  • 単語リストやカスタム言語に加えて、IronOCRは世界中の125の異なる言語をサポートしています。
  • IronOCRは20以上の異なる種類のバーコードおよびQRコードをスキャンすることができます。
  • IronOCRはプレーンテキストだけでなく、バーコードデータの出力も提供できます。 開発者は、代替の構造化データオブジェクトパラダイムを使用して、システムへの直接入力のためにすべてのコンテンツを取得できます。 これには、Webアプリケーション内で構造化されたヘディング、段落、行、単語、文字が含まれます。

以下は与えられた画像からテキストコンテンツを認識し、テキストに変換するために使用するサンプルコードです。

using IronOcr;

// Instantiate an IronTesseract object to utilize its OCR capabilities
var Ocr = new IronTesseract();

// Set the language to English for better accuracy
Ocr.Language = OcrLanguage.EnglishBest;

// Optionally specify the Tesseract version to ensure compatibility
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;

// Create an OcrInput object to add images for OCR processing
using (var Input = new OcrInput())
{
    // Add the image to be processed; specify the image's path
    Input.AddImage(@"Demo.png");

    // Perform the OCR and store the result
    var Result = Ocr.Read(Input);

    // Output the extracted text to the console
    Console.WriteLine(Result.Text);

    // Pause the console to keep it open
    Console.ReadKey();
}
using IronOcr;

// Instantiate an IronTesseract object to utilize its OCR capabilities
var Ocr = new IronTesseract();

// Set the language to English for better accuracy
Ocr.Language = OcrLanguage.EnglishBest;

// Optionally specify the Tesseract version to ensure compatibility
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;

// Create an OcrInput object to add images for OCR processing
using (var Input = new OcrInput())
{
    // Add the image to be processed; specify the image's path
    Input.AddImage(@"Demo.png");

    // Perform the OCR and store the result
    var Result = Ocr.Read(Input);

    // Output the extracted text to the console
    Console.WriteLine(Result.Text);

    // Pause the console to keep it open
    Console.ReadKey();
}
Imports IronOcr

' Instantiate an IronTesseract object to utilize its OCR capabilities
Private Ocr = New IronTesseract()

' Set the language to English for better accuracy
Ocr.Language = OcrLanguage.EnglishBest

' Optionally specify the Tesseract version to ensure compatibility
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5

' Create an OcrInput object to add images for OCR processing
Using Input = New OcrInput()
	' Add the image to be processed; specify the image's path
	Input.AddImage("Demo.png")

	' Perform the OCR and store the result
	Dim Result = Ocr.Read(Input)

	' Output the extracted text to the console
	Console.WriteLine(Result.Text)

	' Pause the console to keep it open
	Console.ReadKey()
End Using
$vbLabelText   $csharpLabel

上記のコードスニペットでは、IronTesseractを使用して機能を開発しています。 まず、新しいOcrInputオブジェクトをインスタンス化して、1つ以上の画像ファイルの追加を可能にします。 AddImageメソッドを使用して各画像のパスを指定することにより、希望の数だけ画像を追加できます。 イメージを追加した後、提供された入力にOCRを実行するためにIronTesseractオブジェクトでReadメソッドを呼び出します。 結果として得られたテキストはコンソールを介して抽出され表示されます。

下の出力は、以前に提供された画像から抽出されたテキストを示しており、画像からテキストが正常に抽出されたことを示しています。

OCR C# Open Source (List For Developers) Figure 1 - Output

詳しいIronOCRの指示については、こちらの投稿を参照してください。

結論

OCRのオープンソースツールを使用すると、ソースコードを使用して独自のプログラムを構築できます。 ただし、いくつかのツールには公式のライブラリやコーディングの問題が発生した場合にサポートを提供する専用のチームがありません。 Tesseractのドキュメントも、一般的な使用シナリオのサンプルコードやチュートリアルが含まれていないため、初心者がコードやライブラリを理解するのは困難です。

IronOCRは、.NET Framework Standard 2、.NET Framework 4.5、および.NET Core 2、3、5などのさまざまな.NETプロジェクトをサポートしています。Mono、Xamarin、Azureなどの最新技術でも動作します。 IronOCR技術を活用することで、Tesseractの結果を向上させ、不正確にスキャンされた文書や画像を修正することができます。 複雑なTesseract辞書システムは、NuGetパッケージを通じて管理されています。 Iron OCRライブラリを利用してOCRツールを開発します。

IronOCRを使用すると、追加の設定なしでプログラムを使用でき、PDFファイル、マルチフレームTIFF、すべての一般的な画像形式をサポートしています。 また、バーコード認識機能を提供し、画像からバーコードデータを抽出し、バーコード値を読むことができます。 IronOCRは無料トライアル付きの費用対効果の高い開発版を提供しており、ライフタイムライセンスがIronOCRバンドルに追加料金なしで含まれています。IronOCRバンドルは、単一の支払いで複数のプラットフォームをカバーしています。 IronOCRの価格についての詳細は、このページを参照してください。

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