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

どのTesseract OCRライブラリを選択すべきか? トップ3つのオプションを開発者が比較

.NETプロジェクト向けの光学文字認識(OCR)ソリューションを選択するのは、ラッパー、バインディング、トレードオフが入り混じった迷路をさまようようなものだと感じるかもしれません。 Tesseractは世界で最も広く知られているオープンソースのOCRエンジンですが、開発者が実際にTesseractを使用する方法は、その上に構築されるライブラリによって大きく異なります。

この記事では、Tesseract OCRライブラリの3つの異なるオプション、すなわちオリジナルのTesseract OCRコマンドラインプログラム、Patagames社のTesseract .NET SDK、およびIron Software社のIronOCRを比較し、実際のプロジェクト要件に基づいて最適な選択肢を明確にします。

IronOCRの無料トライアルで、契約前にプロ仕様のOCR機能を実際に体験してみましょう

これら3つのOCRライブラリをひと目で比較するとどう違うのか?

以下の表は、アーキテクチャ、機能、ライセンス、サポートに関する最も重要な違いをまとめたものです。 これは、続くセクションでより詳細な分析を行う前に、手早く参照できる情報を提供するものです。

カテゴリ Tesseract OCR(オープンソース) Tesseract .NET SDK (Patagames) IronOCR (Iron Software)
コアアーキテクチャ C/C++コマンドラインプログラム。 .NETの外部バインディングが必要です Tesseractネイティブバイナリ for .NETラッパー カスタム構築された Tesseract 5 エンジンを搭載したマネージド.NETライブラリ
プラットフォームサポート Windows、Linux、macOS(ソースコードまたはパッケージマネージャーからコンパイル) Windows中心。 クロスプラットフォーム対応は限定的 Windows、macOS、Linux、Docker、Azure、AWS
言語サポート 100以上の言語に対応。 トレーニング済みデータファイルが必要です バンドルデータによる120以上の言語 専用のNuGet言語パックを通じて125以上の言語に対応
出力フォーマット プレーンテキスト、hOCR(HTML)、PDF、TSV、ALTO PDF、hOCR、プレーンテキスト、UNLV プレーンテキスト、検索可能なPDF、バーコードデータ、構造化OCR結果
画像の前処理 手動(ImageMagickなどの外部ツール) 内蔵フィルター(傾き補正、二値化、コントラスト調整) 自動傾き補正、ノイズ除去、解像度向上
PDF入力対応 PDF入力機能はネイティブではありません。 画像のみ PDFページのレンダリングに対応しています。 ネイティブPDF入力と組み込みレンダリング
Unicodeサポート 完全なUTF-8 Unicode 完全なUnicode 文字認識を最適化した完全なUnicode対応
APIの複雑さ CLIベース。 ネイティブの.NET APIはありません 適度; 実行時依存関係が必要 シンプルで使いやすいAPI。 NuGetインストールのみ
ライセンス Apacheライセンス2.0(無料、オープンソース) 商用(定期購読更新) 商用利用(永久ライセンス、749ドルから)
サポート コミュニティフォーラム、 GitHub Issues 有効なライセンスをお持ちの方のメールサポート 直接的なエンジニアリングサポート、ドキュメント、ライブチャット
最適 スクリプト、調査、CLIベースのパイプライン 予算重視の.NETプロジェクトで、迅速なラッパーが必要な場合 正確性、速度、およびサポートが求められる本番環境向け.NETアプリケーション

Tesseract OCRとは何か、そしてその起源は?

Tesseractは、輝かしい歴史を持つ強力な光学文字認識(OCR)エンジンです。 このソフトウェアは、もともと1985年から1994年にかけてヒューレット・パッカード研究所(英国ブリストルおよび米国コロラド州グリーリー)で開発されました。1996年にWindowsへの移植のためにさらなる変更が加えられ、1998年にはC++のリファクタリングが行われた後、プロジェクトはほぼ休止状態となり、2005年にヒューレット・パッカードがApacheライセンスの下でオープンソースとして公開するまで続きました。

進化とバージョン管理

Tesseract OCRライブラリの進化は、まさに現代のオープンソース光学文字認識の歴史と言える。 2006年以来、Googleはその開発を支援しており、レイ・スミスが2017年まで主任開発者を務めていた。

-バージョン2:英語に加えて、6つの西欧言語への対応を拡大。 フランス語、イタリア語、ドイツ語、スペイン語、ブラジルポルトガル語、オランダ語。 -バージョン3:ページレイアウト分析、他の言語(中国語や日本語などの表意文字を含む)のサポート、hOCRやPDFなどのさまざまな出力形式を導入しました。 -最新バージョン(v5):線認識に特化したLSTMベースのニューラルネットワークに切り替えました。 しかし、文字認識に文字パターンを利用するTesseract 3の旧来のTesseract OCRエンジンは依然として維持されている。

技術アーキテクチャ

現在でもTesseractは本質的にはコマンドラインプログラムであるが、PythonやLinux環境のパッケージとして頻繁に利用されている。

-入力と処理: Leptonicaライブラリを介して、入力画像(PNG、JPEG、TIFFなど)を受け入れます。 品質と精度を確保するため、エンジンはグレースケールまたは特定のパラメータを使用して画像を処理する場合があります。 -出力形式:プレーンテキスト、HTML、PDF、TSV、TXT (txt) 形式で出力できます。 -高度な機能:完全なUnicode(UTF-8)をサポートし、学習済みの辞書を使用してデフォルトで100以上の言語を認識できます。 スクリプト検出が可能で、新しい文字列や未知の文字を認識するように学習させることができます。 -開発者向けリソース:ドキュメントはGitHub上の Doxygen によって生成されます。 ウェブ開発者にとって、純粋なJavaScriptで記述された多言語OCRポートであるTesseract.jsは、 .NET開発とは別個のものであるものの、エンジンの適用範囲を拡大する。

Tesseractは、マネージド型の.NET OCRエンジンと比べてどうですか?

Tesseract OCRは正確で強力なOCRエンジンですが、ネイティブライブラリを使用する場合と比べて、C#のドキュメントワークフローに統合するにはいくつかの課題があります。 Tesseractエンジンをそのまま使用するということは、C++をマネージド.NETにブリッジする必要があり、その過程でユーザーにとって煩雑な作業が生じることを意味します。

導入における課題

-手動構成:開発者は、プラットフォーム固有のバイナリ、Visual C++ ランタイム、および 32 ビットと 64 ビットの互換性を管理する必要があります。 -データ管理: 各言語ごとに traineddata ファイルを手動でダウンロードする必要があります。 -入力制限:このエンジンにはPDF入力のサポートが組み込まれていません。 PDFをスキャンするには、まず各ページを画像に変換する工程が必要です。 -粒度:高品質のデータを抽出するために、開発者はバウンディングボックスを管理して、特定の単語、文、または図内の特定のボックスのテキストを抽出する必要があります。

注:変換されたスキャン結果からデータを印刷または抽出しようとしたユーザーであれば、手動での記述と設定のレベルは、無料のOCRソフトウェアと管理された.NETパッケージとの間のトレードオフの一般的な例です。

charlesw .NETラッパーを使用してTesseractでOCRを実行します

最も一般的なオープンソースの方法は、 charlesw/tesseract NuGetパッケージを使用することです。 以下は、PNG画像からテキストを抽出する方法を示す例です。

// Extract text from an image using the Tesseract .NET wrapper
using Tesseract;
using var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default);
using var img = Pix.LoadFromFile("invoice.png");
using var page = engine.Process(img);
string extractedText = page.GetText();
Console.WriteLine(extractedText);
// Note: tessdata folder with trained language files must be managed manually
// Bounding box data is available through page.GetIterator()
// Extract text from an image using the Tesseract .NET wrapper
using Tesseract;
using var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default);
using var img = Pix.LoadFromFile("invoice.png");
using var page = engine.Process(img);
string extractedText = page.GetText();
Console.WriteLine(extractedText);
// Note: tessdata folder with trained language files must be managed manually
// Bounding box data is available through page.GetIterator()
Imports Tesseract

' Extract text from an image using the Tesseract .NET wrapper
Using engine As New TesseractEngine("./tessdata", "eng", EngineMode.Default)
    Using img As Pix = Pix.LoadFromFile("invoice.png")
        Using page As Page = engine.Process(img)
            Dim extractedText As String = page.GetText()
            Console.WriteLine(extractedText)
        End Using
    End Using
End Using
' Note: tessdata folder with trained language files must be managed manually
' Bounding box data is available through page.GetIterator()
$vbLabelText   $csharpLabel

Tesseract OCRの出力

どの Tesseract OCR ライブラリを選択すべきですか? 開発者による上位3つのオプションの比較:画像1 - Tesseractの出力例

このコードは動作しますが、要件に注意してください。指定されたパスに、トレーニング済みデータファイルの正しいバージョンを含むフォルダーが存在する必要があり、ネイティブの Tesseract および Leptonica DLL がターゲット プラットフォームと一致している必要があり、Visual Studio 2019 ランタイムが存在する必要があります。 バウンディング ボックス、信頼度スコア、または単語レベルのデータを取得するには、ResultIterator を使用して認識結果を反復処理する必要があります。これは機能的ですが、冗長です。

Tesseract .NET SDK の使用 (Patagames)

Patagamesは、Tesseractエンジンをより洗練された.NET APIと画像用の組み込み入力フィルターでラップした商用版Tesseract .NET SDKを提供しています。 120以上の言語に対応しており、傾き補正、二値化、コントラスト正規化などの前処理機能も備えています。 しかし、そのライセンスはサブスクリプション更新モデル(年間約220ドルから)で運用されており、Windows以外のプラットフォームでのクロスサポートは限られている。

IronOCRを使えば簡単にテキストを抽出できます

IronOCRは根本的に異なるアプローチを採用している。 Tesseractのネイティブバイナリをラップするのではなく、カスタム構築され、パフォーマンスが最適化されたTesseract 5エンジンを、完全に管理された.NETライブラリとして提供します。 インストールする外部ソフトウェアはなく、管理する traineddata フォルダーもなく、トラブルシューティングするネイティブ依存関係もありません。 同じコードがWindows、macOS、Linux、Docker、およびクラウド環境で動作し、スキャンした請求書、撮影した文書、またはスクリーンショットからの画像処理を同様に容易に行うことができます。

// Extract text from images and PDFs using IronOCR
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("invoice.png");     // Load a PNG image directly
input.LoadPdf("report.pdf");        // Native PDF support — no conversion needed
OcrResult result = ocr.Read(input);
// Access recognized text as a single string
string fullText = result.Text;
Console.WriteLine(fullText);
// Structured output: paragraphs, words, characters with bounding boxes
foreach (var line in result.Lines)
{
    Console.WriteLine($"Line: {line.Text} 
 Confidence: {line.Confidence}");
}
// Extract text from images and PDFs using IronOCR
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("invoice.png");     // Load a PNG image directly
input.LoadPdf("report.pdf");        // Native PDF support — no conversion needed
OcrResult result = ocr.Read(input);
// Access recognized text as a single string
string fullText = result.Text;
Console.WriteLine(fullText);
// Structured output: paragraphs, words, characters with bounding boxes
foreach (var line in result.Lines)
{
    Console.WriteLine($"Line: {line.Text} 
 Confidence: {line.Confidence}");
}
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadImage("invoice.png") ' Load a PNG image directly
    input.LoadPdf("report.pdf") ' Native PDF support — no conversion needed
    Dim result As OcrResult = ocr.Read(input)
    ' Access recognized text as a single string
    Dim fullText As String = result.Text
    Console.WriteLine(fullText)
    ' Structured output: paragraphs, words, characters with bounding boxes
    For Each line In result.Lines
        Console.WriteLine($"Line: {line.Text} 
 Confidence: {line.Confidence}")
    Next
End Using
$vbLabelText   $csharpLabel

IronOCRの出力

どの Tesseract OCR ライブラリを選択すべきですか? 開発者による上位3つのオプションの比較:画像2 - IronOCRの出力例

IronOCRによって返される OcrResult オブジェクトは、構造化データ、段落、行、単語、および個々の文字を提供し、それぞれに信頼度スコア、境界ボックス、および位置情報が含まれています。 Tesseractの生のラッパーを使用する場合に必要な手動による反復作業と比較して、この構造化された出力は下流の処理にすぐに役立ちます。 IronOCRは、回転した入力画像の傾き補正、ノイズ除去、低品質スキャン画像の解像度向上など、画像の前処理も自動的に行います。

グレースケール画像、色あせた印刷物、または古いスキャナーからの低解像度画像を処理する必要のあるプロジェクトでは、これらの組み込みフィルターを使用することで、カスタムの前処理コードを記述することなく、認識精度を大幅に向上させることができます。 開発者は、認識したテキストをコンソールに直接出力したり、文字列として保存したり、ページ上の画像の特定領域からテキストを読み取ったりすることができます。 IronOCRは、OCR処理中に画像に埋め込まれたバーコードやQRコードをスキャンすることもできます。

どのOCRエンジンが複数の言語と出力フォーマットをより適切に処理できるか?

これら3つのソリューションはいずれも多言語光学文字認識に対応しているが、開発者の使い勝手は大きく異なる。 Raw Tesseract では、各言語の .traineddata ファイルを手動でダウンロードし、正しいディレクトリに配置し、言語コードをパラメータとして渡す必要があります。 ファイル配置の誤りやバージョン不一致は、知らず知らずのうちに精度を低下させる。 pytesseract を使用する Python 開発者は、同じ traineddata 管理上の課題に直面し、Python ラッパーであっても、複数のスクリプトでドキュメントをスキャンするために Tesseract パラメータを正しく構成するという根本的な複雑さを回避することはできません。

Tesseract .NET SDKは120以上の言語に対応した学習済みデータをバンドルしており、こうした複雑さの一部を処理しますが、新しい言語を追加したり、カスタム学習データを追加したりするには、依然として手動でのファイル管理が必要です。

IronOCR は、各言語を個別のNuGetパッケージとして配布します (例: IronOcr.Languages.German または IronOcr.Languages.ChineseSimplified)。 このアプローチは標準の.NETパッケージ管理とスムーズに統合され、他の言語のサポートを追加するには、設定を1行変更するだけで済みます。

// Recognize text in multiple languages simultaneously
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
ocr.AddSecondaryLanguage(OcrLanguage.English);
using var input = new OcrInput();
input.LoadImage(@"OCR_lang.png");
OcrResult result = ocr.Read(input);
// Save recognized sentences and characters to a text file
result.SaveAsTextFile("output.txt");
// Or export as a searchable PDF document
result.SaveAsSearchablePdf("searchable-output.pdf");
// Recognize text in multiple languages simultaneously
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
ocr.AddSecondaryLanguage(OcrLanguage.English);
using var input = new OcrInput();
input.LoadImage(@"OCR_lang.png");
OcrResult result = ocr.Read(input);
// Save recognized sentences and characters to a text file
result.SaveAsTextFile("output.txt");
// Or export as a searchable PDF document
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronOcr

' Recognize text in multiple languages simultaneously
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.German
ocr.AddSecondaryLanguage(OcrLanguage.English)

Using input As New OcrInput()
    input.LoadImage("OCR_lang.png")
    Dim result As OcrResult = ocr.Read(input)
    ' Save recognized sentences and characters to a text file
    result.SaveAsTextFile("output.txt")
    ' Or export as a searchable PDF document
    result.SaveAsSearchablePdf("searchable-output.pdf")
End Using
$vbLabelText   $csharpLabel

バイリンガル画像出力

どの Tesseract OCR ライブラリを選択すべきですか? 開発者による上位 3 つのオプションの比較: 画像 3 - 複数の言語を含む画像の出力例

出力形式に関して:Tesseractは、プレーンテキスト、hOCR(HTML)、PDF、不可視テキストのみのPDF、TSV、およびALTO XMLをネイティブにサポートしています。 これらの多様な出力形式は、ほとんどの研究およびアーカイブ用途を十分にカバーしています。たとえば、PythonスクリプトからTesseractを呼び出してスキャンジョブのバッチ処理を行い、結果をTXTファイルに出力したり、検索可能なPDFを生成したりできます。

IronOCRは、OcrResultクラスを通じて構造化データとして出力します。このクラスでは、変換された画像やPDFページから段落、行、単語、および境界ボックス付きの個々の文字が生成され、ページのどの領域が重要かが特定され、APIは認識されたすべての要素の空間座標を提供します。 これは、ユーザーが文書の特定の部分を処理する必要があるフォームからデータを抽出する場合に特に役立ちます。 スキャンしたファイルから直接検索可能なPDFを生成する機能は、よく要望される機能であり、 IronOCRはこれを標準機能として提供しています。

ライセンス、サポート、長期メンテナンスについてはどうでしょうか?

Tesseract OCRはApacheライセンス2.0の下でリリースされており、商用利用、非商用利用を問わず完全に無料で利用できます。 これが最大の利点であり、ライセンス費用は一切かかりません。ただし、サポートはコミュニティフォーラム、 GitHub Issues、メーリングリストに完全に依存しています。 応答時間は予測不可能であり、Googleがスポンサーシップを縮小して以来、プロジェクトの開発ペースは鈍化しています。Tesseractのドキュメントは包括的ではありますが、Doxygenで生成されているため、ソフトウェアの使用経験がない初心者には理解しにくい場合があることに注意してください。

Patagames社のTesseract .NET SDKは、開発者1人あたり年間約220ドルからのサブスクリプションライセンスを採用しています。 メールサポートは含まれていますが、更新制のため、継続的な費用が発生します。 ユーザー数が少ないため、コミュニティ主導のトラブルシューティングリソースが限られている。

IronOCRは、開発者1名につき749ドルから始まる永久ライセンスモデルで運営されています。 これは、一度購入すれば更新義務はなく、サポートや製品アップデートは任意で延長できることを意味します。 すべてのライセンスには、製品を開発したエンジニアリングチームへの直接アクセス、包括的なドキュメント、および一般的な使用例を網羅したコード例が含まれています。 大規模チーム向けには、 Iron Suiteというバンドルプランがあり、 Iron Softwareの全10製品( IronPDF 、 IronXL、 IronBarcodeなどを含む)が大幅な割引価格で提供されます。

ファクター Tesseract OCR Tesseract .NET SDK IronOCR
ライセンスの種類 Apacheライセンス2.0(オープンソース) 商用購読 商用永久
入場料 無料 年間約220ドル 749ドル
サポートチャネル コミュニティ限定 メール エンジニアリングチーム、ライブチャット、ドキュメント
更新内容 コミュニティ主導型、不定期 サブスクリプションに紐づいています 定期リリース。 アップデートのための任意更新

どの図書館が最適でしょうか?

普遍的に"最良"なTesseractベースのソリューションは存在しない。 最適な選択は、プロジェクトの制約条件によって異なります。 Raw Tesseractは、コマンドラインインターフェースが自然に組み合わさり、Apacheライセンスが必須条件となるような、研究、スクリプト作成、Pythonベースのパイプラインに最適なOCRエンジンです。 オープンソースプロジェクトや学術研究においては、依然としてデフォルトの選択肢となっている。

Tesseract .NET SDKは、相互運用コードをゼロから構築することなくマネージドラッパーを必要とする開発者、そしてそのサブスクリプションライセンスモデルに抵抗のない開発者にとって、妥当な中間的な選択肢と言えるでしょう。

IronOCRは、 .NETソフトウェアの実運用向けに特化して設計されています。 その管理されたアーキテクチャは、ネイティブ依存関係による問題を解消し、自動画像前処理は(クリーンで高解像度のテスト画像だけでなく)実際の文書に対しても正確な結果を提供し、単語レベルの信頼度スコアと境界ボックスを含む構造化された出力は、高度な文書処理ワークフローをサポートします。 永久ライセンスと直接的なエンジニアリングサポートにより、言語、ファイル形式、展開環境を問わず、テキストを確実に認識する必要のある商用アプリケーションを開発するチームにとって、最も実用的な選択肢となります。

実際のプロジェクトでその違いを実感してみませんか? IronOCRのライセンスオプションを検討して最適なものを見つけるか、無料トライアルを開始してすべての機能を実際に試してみてください。

今IronOCRを始めましょう。
green arrow pointer

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね