AWS OCR対Azure OCR(OCR機能の比較)
Patagames Tesseract .NET SDKは、Windowsにしか対応しておらず、既に無料で利用できるエンジンに対して商用ライセンス料を請求する。この組み合わせこそが、2026年現在、販売が難しい理由である。無料のcharleswとtesseractocrラッパーを使えば、同じTesseractエンジン、同じtessdata管理ワークフロー、そして同じ前処理責任を、無料で利用できる。Patagamesは商用サポートとプリビルド済みのネイティブバイナリを追加する一方で、Linux、macOS、Docker、そしてあらゆるクラウド展開ターゲットを排除している。 すでにOCRに商用価格を支払っている場合、問題は、実際に商用レベルの機能を得ているのか、それとも単に無料で利用できる便利なバイナリ形式のソフトウェア配布物を得ているだけなのか、という点になります。
Patagames Tesseract .NET SDK の理解
Patagames Tesseract.NET SDK (NuGetパッケージ Tesseract.Net.SDK、名前空間 Patagames.Ocr) は、Patagames Software が製造したGoogleのオープンソースTesseract OCRエンジンをラップした商用.NETです。 本製品は、プリコンパイル済みのネイティブTesseractバイナリを同梱し、商用サポートを提供し、生のTesseractよりも簡素化されたAPIインターフェースを提供することで、無料のコミュニティ製ラッパーよりも優位な立場を確立しています。
ラッパーはOcrBitmapといったクラスを通じてTesseractのコア認識ループを公開します。 エンジンをtessdataパスおよび言語文字列で初期化し、ビットマップをロードしてGetTextFromImageを呼び出します。 これは基本的に、画像認識におけるOCRの全体像と言えるでしょう。
Patagames Tesseract .NET SDKの主なアーキテクチャ特性:
- Windows専用: SDKにはWindowsネイティブバイナリが同梱されています。 Linux、macOS、およびDocker環境でのデプロイメントはサポートされていません。 クロスプラットフォームのNuGetランタイムパッケージの分割はなく、Linux固有のネイティブバイナリもありません。 -基盤となるTesseractエンジン:認識精度はすべてオープンソースのTesseractエンジンによって実現されています。Patagamesは独自の認識モデルやニューラルネットワーク層を上に追加していません。
- 手動のtessdata管理:
.traineddataファイルで埋め尽くされた有効なtessdataディレクトリが必要です。 SDKは言語データを自動的に管理しません。 -前処理パイプラインなし:傾き補正、ノイズ除去、コントラスト補正、二値化などの操作は組み込まれていません。 画像をAPIに渡す前に、画質を向上させるのは完全にあなたの責任です。 - ネイティブのPDFサポートなし: PDFドキュメントは最初に外部で画像にレンダリングする必要があります。SDKは
System.Drawing.Bitmapオブジェクトを受け入れますが、PDFファイルパスは受け入れません。 -公開料金のない商用価格:ライセンスの種類(シングル開発者、チーム、Enterprise)については、営業担当者にお問い合わせください。 価格表は公開されていません。 System.Drawing依存: APIはSystem.Drawing.Bitmapと連携し、これはコードをWindows時代の描画インフラストラクチャに結びつけ、Windows以外のターゲットでは、基礎となるバイナリが利用可能であっても追加の摩擦を生じます。
Patagamesによる基本的なOCR
Patagames APIはSystem.Drawing.Bitmapを受け入れます。
// NuGet: Install-Package Tesseract.Net.SDK
using Patagames.Ocr;
using Patagames.Ocr.Enums;
using System.Drawing;
public class PatagamesOcrService
{
private const string TessDataPath = @"./tessdata"; // must exist and be populated
public string ExtractText(string imagePath)
{
using var api = OcrApi.Create();
api.Init(TessDataPath, "eng"); // tessdata path — breaks on deployment if path is wrong
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
}
public string MultiLanguageOcr(string imagePath)
{
using var api = OcrApi.Create();
api.Init(TessDataPath, "eng+fra+deu"); // language string must match tessdata files present
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
}
public string OcrWithSegmentation(string imagePath, PageSegmentationMode mode)
{
using var api = OcrApi.Create();
api.Init(TessDataPath, "eng");
api.SetVariable("tessedit_pageseg_mode", ((int)mode).ToString()); // raw Tesseract variable
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
}
}
// NuGet: Install-Package Tesseract.Net.SDK
using Patagames.Ocr;
using Patagames.Ocr.Enums;
using System.Drawing;
public class PatagamesOcrService
{
private const string TessDataPath = @"./tessdata"; // must exist and be populated
public string ExtractText(string imagePath)
{
using var api = OcrApi.Create();
api.Init(TessDataPath, "eng"); // tessdata path — breaks on deployment if path is wrong
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
}
public string MultiLanguageOcr(string imagePath)
{
using var api = OcrApi.Create();
api.Init(TessDataPath, "eng+fra+deu"); // language string must match tessdata files present
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
}
public string OcrWithSegmentation(string imagePath, PageSegmentationMode mode)
{
using var api = OcrApi.Create();
api.Init(TessDataPath, "eng");
api.SetVariable("tessedit_pageseg_mode", ((int)mode).ToString()); // raw Tesseract variable
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
}
}
Imports Patagames.Ocr
Imports Patagames.Ocr.Enums
Imports System.Drawing
Public Class PatagamesOcrService
Private Const TessDataPath As String = "./tessdata" ' must exist and be populated
Public Function ExtractText(imagePath As String) As String
Using api = OcrApi.Create()
api.Init(TessDataPath, "eng") ' tessdata path — breaks on deployment if path is wrong
Using bitmap = New Bitmap(imagePath)
Return api.GetTextFromImage(bitmap)
End Using
End Using
End Function
Public Function MultiLanguageOcr(imagePath As String) As String
Using api = OcrApi.Create()
api.Init(TessDataPath, "eng+fra+deu") ' language string must match tessdata files present
Using bitmap = New Bitmap(imagePath)
Return api.GetTextFromImage(bitmap)
End Using
End Using
End Function
Public Function OcrWithSegmentation(imagePath As String, mode As PageSegmentationMode) As String
Using api = OcrApi.Create()
api.Init(TessDataPath, "eng")
api.SetVariable("tessedit_pageseg_mode", CInt(mode).ToString()) ' raw Tesseract variable
Using bitmap = New Bitmap(imagePath)
Return api.GetTextFromImage(bitmap)
End Using
End Using
End Function
End Class
tessdataのパス文字列は、デプロイメントチームが最初に直面する問題です。 開発者用マシンでは動作します。 DockerコンテナまたはLinux CIランナーでは、パスが失敗するか、ランタイムがそもそも存在しません。 macOSでは、ネイティブのWindowsバイナリが全く読み込まれません。 セグメンテーションモードは、生のTesseract変数文字列を書き込むことで設定されます。この呼び出しをラップする厳密に型付けされた列挙型はありません。 これらは、商業的な装いの下に隠された、テッセラクトの生々しい本質が垣間見える部分である。
IronOCRを理解する
IronOCRは、最適化されたTesseract 5エンジンをベースに構築された商用.NET OCRライブラリで、完全な前処理パイプライン、ネイティブPDFサポート、クロスプラットフォーム展開機能が組み込まれています。 設計目標は、 NuGetパッケージのインストールからドキュメントから正確なテキストを抽出するまでの、あらゆる手動手順を排除することです。
IronOCRの主な特徴:
-最初からクロスプラットフォーム対応:ウィンドウズx64/x86、Linux x64、macOS、Docker、Azure App Service、AWS Lambdaはすべて、単一のNuGetパッケージでサポートされます。 個別のバイナリ配布は行っておらず、プラットフォームごとの条件も設けていません。
-自動前処理:傾き補正、ノイズ除去、コントラスト強調、二値化、解像度正規化が自動的に実行されます。 必要に応じて、OcrInputフィルターメソッドを通じて明示的な制御が可能です。
- ネイティブPDF入力: PDFファイルパスを直接
IronTesseract.Read()に渡します。 外部レンダラー不要、中間画像変換不要、外部ライブラリへの依存なし。 - 検索可能なPDF出力:
result.SaveAsSearchablePdf()は元の画像の上に不可視テキストレイヤーを持つPDF/A準拠のドキュメントを生成し、1回の呼び出しで使用可能です。 - Tessdataは見えません: 言語データはNuGetパッケージとして出荷します(
IronOcr.Languages.Frenchなど)。 設定すべきtessdataディレクトリはなく、環境間でファイルパスを間違える心配もありません。 - 構造化された結果:
.ParagraphsコレクションをX/Y座標と単語ごとの信頼度スコアとともに公開します。 - 公開の価格設定: $999 Lite / $1,499 Plus / $2,999 Professional / $5,999 Unlimited、すべて永続ライセンスで1年の更新が含まれています。
機能比較
| フィーチャー | Patagames Tesseract .NET SDK | IronOCR |
|---|---|---|
| プラットフォームのサポート | Windowsのみ | Windows、Linux、macOS、Docker |
| 価格設定モデル | 法人向け(お見積もりはお問い合わせください) | $5,999 永続(公開) |
| エンジン | Tesseract(オープンソース) | 最適化されたTesseract 5 |
| PDF入力 | サポートされていません | ネイティブ |
| 自動前処理 | None | 内蔵 |
| Tessdata管理 | 手動(ディレクトリパス) | NuGetパッケージ |
| 検索可能なPDF出力 | サポートされていません | 内蔵 |
詳細な機能比較
| フィーチャー | Patagames Tesseract .NET SDK | IronOCR |
|---|---|---|
| プラットフォームサポート | ||
| ウィンドウズ | はい | はい |
| Linux | なし | はい |
| macOS | なし | はい |
| Docker | なし | はい |
| Azure App Service | なし | はい |
| AWSラムダ | なし | はい |
| 価格設定とライセンス | ||
| 公的な価格設定 | いいえ(連絡は不要です) | はい($5,999) |
| 永久ライセンス | 不明 | はい |
| 取引ごとのコスト | None | None |
| 無料プラン | なし | 無料トライアル利用可能 |
| OCRエンジンと精度 | ||
| 基盤となるエンジン | Tesseract(オープンソース) | 最適化されたTesseract 5 |
| 自動前処理 | なし | はい |
| 手動前処理制御 | Tesseract変数を介して | はい(傾き補正、ノイズ除去、コントラスト調整、二値化、解像度向上) |
| 入力サポート | ||
| JPEG / PNG / TIFF | はい(System.Drawing.Bitmap経由) |
はい |
| PDF入力(ネイティブ) | なし | はい |
| パスワードで保護されたPDF | なし | はい |
| ストリーム入力 | なし | はい |
| URL入力 | なし | はい |
| 出力能力 | ||
| プレーンテキスト | はい | はい |
| 検索可能なPDF | なし | はい |
| hOCRエクスポート | なし | はい |
| 構造化された単語/行データ | 制限的 | はい(座標+信頼度) |
| 言語サポート | ||
| 言語数 | テセラクト tessdata | NuGetパック経由で125個以上 |
| 文書ごとに複数の言語 | はい(文字列連結) | はい(厳密に型指定された列挙型) |
| 言語分布 | 手動のtessdataファイル | dotnet add package |
| 高度な機能 | ||
| 地域ベースのOCR | なし | はい |
| OCR中のバーコード読み取り | なし | はい |
| 単語ごとの信頼度スコア | なし | はい |
| スレッドセーフティ | 標準的なテセラクトの制限 | 組み込みの並列処理 |
| デプロイメント | ||
| 自己完結型展開 | Windowsのみ | すべてのプラットフォーム |
| Dockerコンテナ | なし | はい |
| CI/CDパイプライン(Linux) | なし | はい |
プラットフォーム対応:Windows専用 vs クロスプラットフォーム
これは、両図書館間の建築上の最も重要な相違点である。
パタゲームズ・アプローチ
PatagamesはTesseractエンジンのWindowsネイティブバイナリを出荷しています。OcrApiクラスがWindows DLLをロードします。 LinuxやmacOSでは、読み込むものは何もありません。 System.Drawing.Bitmap依存関係がこの問題を複合化します: System.Drawingは.NET Coreおよび.NET 5+でLinuxではlibgdiplusを必要とし、MonoなしではmacOSでサポートされていません。これはさらに複雑さを加えます。
ASP.NET Coreアプリケーションを.NET 8で構築し、LinuxコンテナにデプロイするチームはPatagamesで2つの異なる壁にぶつかります: ネイティブTesseractバイナリがそのプラットフォームに存在しないことと、System.Drawing依存関係がたとえそれがあったとしても追加のネイティブパッケージを必要とすることです。 アプリケーションが全く起動しない。 代替手段も移行手段もなく、ライブラリを置き換える以外に方法はありません。
これが現代の典型的な.NET開発環境にとって何を意味するのか考えてみましょう。開発はWindowsまたはmacOS上で行われます。 CIはLinux上で動作します。 本番環境はKubernetes上のDockerコンテナです。 パタゲームズはそのパイプラインの第二段階で失敗する。
// Patagames:ウィンドウズruntime only
// This code path does not execute onLinuxor macOS
using var api = OcrApi.Create();
api.Init(@"./tessdata", "eng"); //ウィンドウズDLL load — fails silently or throws on Linux
using var bitmap = new Bitmap(imagePath); // System.Drawing — requires libgdiplus on Linux
return api.GetTextFromImage(bitmap);
// Patagames:ウィンドウズruntime only
// This code path does not execute onLinuxor macOS
using var api = OcrApi.Create();
api.Init(@"./tessdata", "eng"); //ウィンドウズDLL load — fails silently or throws on Linux
using var bitmap = new Bitmap(imagePath); // System.Drawing — requires libgdiplus on Linux
return api.GetTextFromImage(bitmap);
Imports System.Drawing
' Patagames: Windows runtime only
' This code path does not execute on Linux or macOS
Using api = OcrApi.Create()
api.Init("./tessdata", "eng") ' Windows DLL load — fails silently or throws on Linux
Using bitmap As New Bitmap(imagePath) ' System.Drawing — requires libgdiplus on Linux
Return api.GetTextFromImage(bitmap)
End Using
End Using
tessdataのパスは、別のデプロイメント上の問題も引き起こします。 コンテナ内では、tessdataディレクトリを明示的にイメージ内にコピーする必要があります。 パスが間違っている場合、Initの呼び出しは実行時に失敗します。ビルドパイプラインにはこれをキャッチするものがありません; それは制作過程で明らかになる。
IronOCRのアプローチ
IronOCRは、 NuGet依存関係グラフの一部として、プラットフォーム固有のランタイムパッケージを公開しています。 プロジェクトにIronOcrを追加することで、Windows x64、Windows x86、Linux x64、またはmacOSの正しいネイティブバイナリが自動的に解決されます。 手作業でのRuntimeIdentifierの操作やバイナリのコピーは不要です。
// IronOCR: same code on Windows, Linux, macOS, Docker
using IronOcr;
var text = new IronTesseract().Read("document.jpg").Text;
// IronOCR: same code on Windows, Linux, macOS, Docker
using IronOcr;
var text = new IronTesseract().Read("document.jpg").Text;
Imports IronOcr
Dim text As String = New IronTesseract().Read("document.jpg").Text
Linux環境でのDockerデプロイメントは、すぐに使用できる状態でドキュメント化され、サポートされています。 正確なDockerfileの設定については、 IronOCRのDockerデプロイメントガイドを参照してください。 Linux導入ガイドは、 DebianとAlpineの両方に対応しています。アプリケーション内でプラットフォーム固有のコード分岐は一切必要ありません。
言語データはNuGet経由で取得されます。 dotnet add package IronOcr.Languages.Frenchがフランス語のtessdataを追加します。 パッケージはビルド時に解決され、自動的に出力先にコピーされるため、パス設定なしで全ての展開環境で利用可能です。 IronOCRが複数の言語をどのように処理し、言語管理ワークフロー全体をどのように実現しているかをご覧ください。
無料エンジンの商用価格
2つ目の主要な視点は経済的なものです。 Patagamesは、無料で利用可能なオープンソースエンジンをベースに、独自の認識機能を一切追加しないソフトウェアに対して、商用料金を請求している。
Patagamesが無料の包装紙よりも優れている点
Patagamesは、無料のTesseractラッパーと比較して、商用サポート、簡素化されたAPI、事前に構築されたネイティブバイナリ、および管理されたtessdata処理という4つの利点をアピールしている。 それぞれ検討に値する。
商用サポートは確かに存在しますが、価格設定は困難です。お客様は、Patagamesが管理していないサードパーティ製のオープンソースエンジンであるTesseractに起因する問題に対するサポート契約料金をお支払いいただくことになります。 Tesseractが特定の画像タイプに対して誤った出力を生成する場合、Patagamesのサポートではエンジンの改善はできません。
簡略化されたAPIは、あまり意味がない。 api.Init(path, "eng")を実行するのは、charlesw/tesseractの生のTesseractインタロップ層よりもわずかにクリーンですが、両方とも同じ手動のtessdata管理と同じ事前処理の欠如を必要とします。
事前にビルドされたネイティブバイナリを使用することで、 Windows上でソースコードからTesseractをコンパイルするのに必要な1~2時間を節約できます。 これは2015年には意味のあるものでした。今日では、無料のtesseractocr NuGetパッケージ(NuGet.orgのTesseract)も事前にビルドされたネイティブバイナリを無償で出荷しています。
管理されたtessdata処理は、実際のAPIによって最も損なわれている主張である。 api.Init(TessDataPath, "eng")の呼び出しは依然としてパス文字列を受け取ります。 あなたは依然としてそのディレクトリにデータを入力します。 管理方法は、設定ファイルをフォルダに指定するのと比べて、ほんの少しだけ簡潔になる程度だ。
結果として、Patagamesは無料の代替ソフトでも提供されている利便性レイヤーに商用価格を課し、Tesseractの基本的な前処理とPDFに関する欠点を解決せず、無料の代替ソフトが保持しているクロスプラットフォームサポートを削除している。
IronOCRの商業的正当性
商用OCRライブラリがライセンス費用に見合う価値があるかどうかを評価する際の重要な点は、そのライブラリが無料の代替手段では解決できないどのような問題を解決できるか、という点です。 IronOCRの価格設定は、永続Liteライセンスとして$999から始まります。 その価格には、Tesseractのラッパー(無料版でも商用版でも)では提供されない機能が含まれています。
// PDF OCR: Patagames has no PDF support at all
// Free wrappers have no PDF support at all
// IronOCR: one line
using IronOcr;
var text = new IronTesseract().Read("scanned-invoice.pdf").Text;
// PDF OCR: Patagames has no PDF support at all
// Free wrappers have no PDF support at all
// IronOCR: one line
using IronOcr;
var text = new IronTesseract().Read("scanned-invoice.pdf").Text;
Imports IronOcr
' PDF OCR: Patagames has no PDF support at all
' Free wrappers have no PDF support at all
' IronOCR: one line
Dim text As String = New IronTesseract().Read("scanned-invoice.pdf").Text
PDF OCRワークフローについては、Patagamesは外部PDFレンダラー(PdfiumViewer、iTextなど)、各ページをGetTextFromImageに渡し、結果を連結することが必要です。 それは、30~50行の追加コード、追加のNuGet依存関係、そして新たな障害発生箇所を意味します。 IronOCRはそれを1回の呼び出しで処理します。
// 検索可能なPDF output: not available in Patagames, not available in free wrappers
// IronOCR: two lines
var result = new IronTesseract().Read("scanned-document.pdf");
result.SaveAsSearchablePdf("searchable-output.pdf");
// 検索可能なPDF output: not available in Patagames, not available in free wrappers
// IronOCR: two lines
var result = new IronTesseract().Read("scanned-document.pdf");
result.SaveAsSearchablePdf("searchable-output.pdf");
' 検索可能なPDF output: not available in Patagames, not available in free wrappers
' IronOCR: two lines
Dim result = New IronTesseract().Read("scanned-document.pdf")
result.SaveAsSearchablePdf("searchable-output.pdf")
検索可能なPDF出力機能(元の文書をCtrl+Fで検索可能にする、目に見えないテキストレイヤーを含むPDFを生成する機能)を実現するには、 IronOCRを使用するか、外部ツールを使用した複雑なhOCRからPDFへのパイプラインを構築する必要があります。 Tesseractのラッパーには、無料版、商用版を問わず、これを単一のメソッド呼び出しで実現できるものは存在しない。
前処理でも同じことが言える。 回転していたり、ノイズが多かったり、コントラストが低かったりといった低品質のスキャン画像は、前処理を行わないとTesseractの出力結果が悪くなります。 Patagamesには前処理がありません。 System.DrawingやImageSharpなどを使って、前処理コードを自分で記述します。
// IronOCR: built-in preprocessing pipeline for poor quality images
using IronOcr;
using var input = new OcrInput();
input.LoadImage("rotated-noisy-scan.jpg");
input.Deskew(); // correct rotation
input.DeNoise(); // remove scan noise
input.Contrast(); // improve contrast
input.Binarize(); // convert to black/white optimal for OCR
input.EnhanceResolution(300); // normalize DPI
var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
// IronOCR: built-in preprocessing pipeline for poor quality images
using IronOcr;
using var input = new OcrInput();
input.LoadImage("rotated-noisy-scan.jpg");
input.Deskew(); // correct rotation
input.DeNoise(); // remove scan noise
input.Contrast(); // improve contrast
input.Binarize(); // convert to black/white optimal for OCR
input.EnhanceResolution(300); // normalize DPI
var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr
Dim input As New OcrInput()
Using input
input.LoadImage("rotated-noisy-scan.jpg")
input.Deskew() ' correct rotation
input.DeNoise() ' remove scan noise
input.Contrast() ' improve contrast
input.Binarize() ' convert to black/white optimal for OCR
input.EnhanceResolution(300) ' normalize DPI
Dim result = New IronTesseract().Read(input)
Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
画像品質補正ガイドでは、利用可能なフィルターの全種類と、それぞれのフィルターを適用するタイミングについて解説しています。 色に特化した前処理については、画像の色補正ガイドにさらに詳しいオプションが記載されています。 Patagamesでは、購入したライセンスの種類に関わらず、これらの機能は一切利用できません。
無料テセラクトラッパーよりも価値のあるもの
ここで具体的に比較するのは、Patagames(商用)と無料のNuGetラッパーであるtesseractocrです。どちらもTesseractをラップし、どちらもtessdataを必要とし、どちらも前処理機能がなく、どちらもPDFをサポートしていません。 問題は、パタゲームズが無料版よりも有料版の価格に見合うだけの付加価値を何を提供しているかということだ。
パタゲームズによる言語構成へのアプローチ
Patagamesは、多言語OCRのためにパス文字列と言語連結文字列を使用します。
// Patagames multi-language: manual tessdata, string concatenation
using Patagames.Ocr;
using var api = OcrApi.Create();
api.Init(@"./tessdata", "eng+fra+deu"); // tessdata folder must contain eng.traineddata, fra.traineddata, deu.traineddata
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
// Patagames multi-language: manual tessdata, string concatenation
using Patagames.Ocr;
using var api = OcrApi.Create();
api.Init(@"./tessdata", "eng+fra+deu"); // tessdata folder must contain eng.traineddata, fra.traineddata, deu.traineddata
using var bitmap = new Bitmap(imagePath);
return api.GetTextFromImage(bitmap);
Imports Patagames.Ocr
Using api = OcrApi.Create()
api.Init("./tessdata", "eng+fra+deu") ' tessdata folder must contain eng.traineddata, fra.traineddata, deu.traineddata
Using bitmap As New Bitmap(imagePath)
Return api.GetTextFromImage(bitmap)
End Using
End Using
これは、無料のcharlesw/tesseractラッパーの多言語構文と機能的に同一です。 tessdataファイルは手動でダウンロードし、正しいディレクトリにコピーして、コード文字列で参照する必要があります。 商用ライセンスには、そのワークフローの自動化機能は含まれていません。
IronOCRの言語設定アプローチ
IronOCRは、厳密に型指定されたAPIを備えたNuGetパッケージとして言語データを管理します。
// IronOCR multi-language: NuGet packages, strongly typed
// dotnet add package IronOcr.Languages.French
// dotnet add package IronOcr.Languages.German
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
ocr.AddSecondaryLanguage(OcrLanguage.German);
var result = ocr.Read(imagePath);
// IronOCR multi-language: NuGet packages, strongly typed
// dotnet add package IronOcr.Languages.French
// dotnet add package IronOcr.Languages.German
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
ocr.AddSecondaryLanguage(OcrLanguage.German);
var result = ocr.Read(imagePath);
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
ocr.AddSecondaryLanguage(OcrLanguage.French)
ocr.AddSecondaryLanguage(OcrLanguage.German)
Dim result = ocr.Read(imagePath)
NuGetによる言語管理とは、CIパイプラインが他の依存関係を解決するのと同じ方法で言語データを解決することを意味します。 Dockerイメージにコピーするtessdataディレクトリはなく、"tessdataが存在することを確認する"というデプロイチェックリスト項目もなく、言語コード文字列を手入力することによるタイプミスのリスクもありません。 利用可能な125種類以上の言語パックはすべて同じ方法でインストールできます。
Patagamesと無料ラッパーの価格差はわずかで、商用版の価格が主なメリットとなるのは、Windowsバイナリの利便性である。 PatagamesとIronOCRの間には大きな差がある。商用版では、ネイティブPDFサポート、自動前処理、検索可能なPDF出力、クロスプラットフォーム展開、構造化された結果データといった機能が利用できる。
APIマッピングリファレンス
| Patagames Tesseract .NET SDK | IronOCR相当値 |
|---|---|
Tesseract.Net.SDK (NuGet) |
IronOcr (NuGet) |
Patagames.Ocr (名前空間) |
IronOcr (名前空間) |
OcrApi.Create() |
new IronTesseract() |
api.Init(tessDataPath, "eng") |
ocr.Language = OcrLanguage.English (パス不要) |
api.Init(path, "eng+fra") |
ocr.AddSecondaryLanguage(OcrLanguage.French) |
api.GetTextFromImage(bitmap) |
ocr.Read(imagePath).Text |
api.SetVariable("tessedit_pageseg_mode", ...) |
ocr.Configuration.PageSegmentationMode = ... |
OcrBitmap.FromFile(path) |
input.LoadImage(path) |
| PDFはサポートされていません | ocr.Read("document.pdf").Text |
| 検索可能なPDFはありません | result.SaveAsSearchablePdf("output.pdf") |
| 前処理なし | input.Deskew(), input.DeNoise(), input.Contrast()など |
| リージョンOCRなし | input.LoadImage(path, new CropRectangle(...)) |
| バーコードが読み取れません | ocr.Configuration.ReadBarCodes = true |
| 構造化された出力はありません | result.Words, result.Lines, result.Pages |
PageSegmentationMode 列挙型 |
TesseractPageSegmentationMode 列挙型 |
IronOCR API の全機能については、 IronTesseract API リファレンスおよびOcrResult API リファレンスを参照してください。
チームがPatagames Tesseract .NET SDKからIronOCRへの移行を検討する場合
Linuxコンテナのデプロイ
最も一般的な強制的な機能は、Windows ServerからLinuxコンテナへの移行です。 Windows上で社内文書処理ツールを構築し、OCRにPatagamesを使用していたチームは、クラウド移行プロジェクト中に、そのライブラリがAmazon ECSやAzure Container Instances上のDockerコンテナでは動作しないことを発見した。 Windows専用のネイティブバイナリには、Linux版は存在しない。 移行オプションとしては、OCR専用のWindowsコンピューティングインスタンスを別途維持する(高価でアーキテクチャ的に扱いにくい)か、OCRライブラリを置き換えるかのどちらかです。 IronOCRはAPIの観点から見るとそのまま置き換え可能で、Patagamesの複数ステップからなる初期化シーケンスは単一の読み取り呼び出しに集約され、Linux上でも他の変更なしで動作します。 IronOCRのDockerガイドでは、本番環境におけるコンテナ展開のためのDockerfileの具体的な構成方法を解説しています。
PDF処理要件
文書管理アプリケーションは、多くの場合、画像OCRから始まり、製品の進化に伴ってPDF処理の要件を追加していく。 PatagamesでPDFをサポートするには、外部のPDFレンダリングライブラリを統合し、レンダリングループを作成し、ページごとの画像バッファを管理する必要があります。 このラッパーコードを作成したチームは、その脆弱性に気づいている。PDFのレンダリング品質にばらつきがあり、ページ回転の処理には追加のロジックが必要で、パスワード保護されたPDFのサポートを追加するには別の外部依存関係が必要となる。 IronOCRはそれらすべてをネイティブに処理します。 PDF入力ガイドでは、単一ページ、複数ページ、およびパスワードで保護されたPDFについて説明しています。 この移行により、外部のPDFレンダラーへの依存関係と、それをPatagamesに接続するために記述されたすべてのコードが不要になります。
価格透明性の問題
Patagamesはライセンス価格を公表していません。 新規プロジェクト向けにOCRライブラリを評価するチームは、営業プロセスを経ずにPatagamesの予算を組むことはできません。 IronOCRの価格設定は、1人の開発者向けの永続Liteライセンスで$999から始まり、1トランザクションあたりのコストはかかりません。小規模チームは、営業電話なしでビルド対購入の決断を賢明に行うことができます。 以前、商用が無料よりも優れていると仮定してPatagamesを選択したチームにとって、IronOCRが$999で永続的に始まり、公開価格設定されているのに対し、Patagamesが未公表の商用レートであることを発見することは、評価を完全に再構成することがよくあります。 各ティアの詳細については、 IronOCRのライセンスページをご覧ください。
スキャン品質の問題
請求書処理、フォームOCR、スキャン文書のアーカイブ化などでは、いずれも前処理が必要な画像が生成されます。 これらのワークフローに対応するPatagamesベースのパイプラインでは、System.Drawingまたはサードパーティの画像ライブラリで前処理コードを記述し、しきい値を手動で調整し、入力品質の変化に応じてそのコードを保守する必要があります。 このインフラを構築した経験のあるチームは、正しく構築するには20~40時間かかることを知っている。 IronOCRに組み込まれた前処理機能により、そのような投資は不要になります。傾き補正、ノイズ除去、コントラスト補正、二値化は単一のメソッド呼び出しで実行でき、実際のスキャン画像でOCRの精度問題を引き起こすほとんどのケースに対応します。 低品質のスキャン例は、劣化画像において前処理が精度にどれほどの違いをもたらすかを示しています。
検索可能なPDFアーカイブの要件
コンプライアンス、法務、および記録管理アプリケーションでは、検索可能なPDF出力が必要です。 スキャンした文書にはテキストレイヤーが必要です。そうすることで、ユーザーはAcrobatやその他のPDFビューアでコンテンツを検索、コピー、ハイライト表示できるようになります。 Patagamesには、検索可能なPDFを作成する機能はありません。 無料のTesseractラッパーは、サードパーティ製のツールを使用してテキストレイヤーに変換できるhOCR出力を生成しますが、そのパイプラインには複数の構成要素があります。 IronOCRは、外部ツールや中間的なhOCR変換ステップを必要とせず、単一のメソッド呼び出しでパイプライン全体を処理します。アーカイブシステムを構築するチームは、この機能のギャップを早期に発見しますが、回避策によってPatagamesにこの機能を追加できることはほとんどなく、ライブラリの置き換えが必要となります。
一般的な移行の考慮事項
tessdataディレクトリをNuGetパッケージに置き換える
Patagamesはそれぞれの言語用に.traineddataファイルで埋め尽くされたtessdataディレクトリを必要とします。 IronOCRへの移行により、この問題は完全に解消されます。 言語データはNuGetパッケージとしてインストールされます。
dotnet add package IronOcr.Languages.English, IronOcr.Languages.French
その後、言語は強く型付けされたOcrLanguage列挙型を通じて参照されます。 パス設定なし、デプロイメントチェックリストなし、tessdataの欠落による本番環境のインシデントなし。
OcrApi初期化パターンの移行
Patagames OcrApi.Create() / api.Init()パターンは、IronOCRに直接対応するものがあります。 移行は機械的に行われる。
// Patagames: before
using var api = OcrApi.Create();
api.Init(@"./tessdata", "eng");
using var bitmap = new Bitmap(imagePath);
var text = api.GetTextFromImage(bitmap);
// IronOCR: after
var text = new IronTesseract().Read(imagePath).Text;
// Patagames: before
using var api = OcrApi.Create();
api.Init(@"./tessdata", "eng");
using var bitmap = new Bitmap(imagePath);
var text = api.GetTextFromImage(bitmap);
// IronOCR: after
var text = new IronTesseract().Read(imagePath).Text;
Imports Patagames.Ocr
Imports System.Drawing
' Patagames: before
Using api = OcrApi.Create()
api.Init("./tessdata", "eng")
Using bitmap As New Bitmap(imagePath)
Dim text = api.GetTextFromImage(bitmap)
End Using
End Using
' IronOCR: after
Dim text = New IronTesseract().Read(imagePath).Text
マルチ言語設定の場合、AddSecondaryLanguage呼び出しになります。 Patagames ocr.Configuration.PageSegmentationModeにマッピングされ、これは強く型付けされ、IntelliSenseを通じて発見可能です。
System.Drawing の依存関係の削除
PatagamesはSystem.Drawing.Bitmapに依存しています。 IronOCRはファイルパス、バイト配列、ストリーム、URL、およびSystem.Drawingを全く必要としません。 Patagamesから移行するチームは、OCR APIに渡すためにSystem.Drawing依存関係を削除することができます。 これにより、Windows以外のプラットフォームにおけるnull許容エラーの警告が解消され、MicrosoftがWindows以外のターゲットでの新規開発には推奨しないと正式に定めた依存関係が削除されます。 画像入力ガイドには、サポートされているすべての入力タイプが記載されています。
既存のワークフローに前処理を追加する
既存の Patagames の実装に System.Drawing または ImageSharp で記述された前処理ステップが含まれている場合、 IronOCRに切り替える際にそのコードを完全に削除できることがよくあります。 最初に事前処理せずにIronOCRの出力をテストしてください。自動事前処理が不十分な画像に対しては、OcrInputを通して明示的なフィルタを適用します:
using var input = new OcrInput();
input.LoadImage(imagePath);
input.Deskew();
input.DeNoise();
var result = new IronTesseract().Read(input);
using var input = new OcrInput();
input.LoadImage(imagePath);
input.Deskew();
input.DeNoise();
var result = new IronTesseract().Read(input);
Imports IronOcr
Using input As New OcrInput()
input.LoadImage(imagePath)
input.Deskew()
input.DeNoise()
Dim result = New IronTesseract().Read(input)
End Using
画像方向補正ガイドでは、傾きと回転の検出について詳しく解説しています。 ほとんどの場合、IronOCRの自動前処理は、手動で調整したSystem.Drawingの前処理パイプラインよりも優れた出力を生成します。
IronOCRの追加機能
IronOCRは、主要な比較ポイント以外にも、上記のセクションでは触れられていない機能を提供しています。
-スキャン文書処理: TIFFスタックや複数ページのPDFを含む複数ページのスキャン文書を、単一の入力ロードで自動的に処理します。 -非同期OCR : ASP.NET Coreワークロード向けのネイティブ非同期サポートにより、OCR処理中にリクエストスレッドを解放します。 -速度最適化設定:スループットがドキュメントごとの精度よりも重要なバッチ処理ワークロードにおいて、速度と精度のトレードオフを明示的に制御します。 -特殊な文書タイプ:パスポート、ナンバープレート、MICRチェック行、手書き文字、表抽出など、Patagamesの範囲外の文書専用のガイドと最適化された構成。 -信頼度に基づくフィルタリング:単語ごと、ページごとの信頼度スコアにより、プログラムによる品質ゲートが実現します。手動レビューなしで、信頼度の低い結果を拒否またはフラグ付けできます。 -画像の色補正:カラーチャンネルの分離と反転フィルターにより、背景色が色付きであったり、コントラストが反転しているテキストを含む文書の認識精度が向上します。
.NETの互換性と将来の準備
IronOCRは、.NET 6、 .NET 7、 .NET 8、および.NET 9を積極的にサポートしており、さらにメンテナンス中 for .NET Frameworkプロジェクトとの互換性のために.NET Standard 2.0もサポートしています。 ライブラリはNuGet依存関係グラフの一部としてクロスプラットフォームランタイム識別子(win-x64、win-x86、linux-x64、osx-x64、osx-arm64)を出荷し、ターゲットランタイムに対してdotnet publishが追加の構成なしで自己完結型のデプロイメントを生成することを保証しています。 Patagames Tesseract .NET SDKはLinuxまたはmacOSのランタイム識別子を公開していないため、 .NET 6以降が基盤としているクロスプラットフォーム展開モデルに参加することはできません。 .NET Framework 4.xのワークロードが.NET 8に移行し、チームがLinuxベースのクラウドインフラストラクチャを採用するにつれて、Windowsのみという制約は、些細な制限ではなく、むしろ大きな障害となる。 IronOCRの開発サイクルは.NETのリリースサイクルに準拠しており、各新.NETバージョンがリリースされる際に、互換性に関するドキュメントが提供されます。
結論
Patagames Tesseract .NET SDKは、難しい市場ポジションに置かれている。無料で利用できるオープンソースエンジンであるTesseractを商用価格で提供する一方で、無料のラッパーが保持しているクロスプラットフォーム機能を削除しているからだ。 TesseractをWindows向けに開発するのが本当に複雑だった頃は、商用サポート、プリビルド済みバイナリ、簡素化されたAPIといった価値提案は、より魅力的だった。 2026年には、tesseractocrのような無料のラッパーもWindows用のビルド済みバイナリを同梱するようになり、生のTesseractの上に構築された"簡略化されたAPI"は薄いレイヤーとなり、tessdataのパス管理や生の変数文字列が依然として公開されるようになる。
Windows専用という制約こそが、Patagamesを再検討すべき最も明確な理由である。 最新 for .NET開発ワークフローでは、CIはLinux上で実行され、デプロイはLinuxコンテナで行われ、開発者のマシンはますますmacOSをターゲットとするようになっている。 Windowsでしか読み込めないライブラリは、些細な不便さではなく、OCRコンポーネントをWindows専用のサービス上でホストすることを強制し、デプロイメントの複雑さを増し、将来的な柔軟性を制限するアーキテクチャ上の制約となる。 Patagamesは、その境界を越える必要があるチーム向けの移行パスを提供していません。
IronOCRの商業的正当性は具体的かつ測定可能である。 ネイティブPDFサポート、自動前処理、検索可能なPDF出力、クロスプラットフォーム展開、構造化された結果データを提供します。これらは、ライセンスレベルに関わらず、Patagamesには存在しない機能です。 価格設定が公開されており(1人の開発者向けに$999の永続ライセンス)、無料のTesseractラッパーを超えた能力が文書化され具体化されており、デプロイメントのストーリーは、ターゲットがWindows Server、LinuxのDocker、またはARM Macであるかに関係なく同じです。
現在Windowsのみの環境でPatagamesを使用しており、サポート体制に満足しているチームにとって、切り替えにはコストがかかります。しかし、現在様々な選択肢を検討しているチーム、特にクラウド移行、コンテナ化、クロスプラットフォーム対応を計画しているチームにとって、Windowsへの依存と、無料エンジンのラッパーに対する不透明な商用価格設定の組み合わせは、Tesseractラッパーでは本来解決できない問題をIronOCRが解決できる場合、Patagamesを選択する理由を正当化するのが難しいものとなります。
よくある質問
Patagames Tesseract.Net SDKとは?
Patagames Tesseract.Net SDKは、開発者や企業が画像や文書からテキストを抽出するために使用するOCRソリューションです。.NETアプリケーション開発においてIronOCRと共に評価されるいくつかのOCRオプションのひとつです。
IronOCRとPatagames Tesseract.Net SDK for .NET開発者との比較は?
IronOCRはNuGetネイティブ for .NET OCRライブラリで、IronTesseractをコアエンジンとして使用しています。Patagames Tesseract.Net SDKと比較して、よりシンプルなデプロイメント(SDKインストーラーなし)、定額制の価格設定、COMインターオプやクラウド依存のないクリーンなC# APIを提供します。
IronOCRはPatagames Tesseract.Net SDKよりもセットアップが簡単ですか?
IronOCRは単一のNuGetパッケージでインストールされます。SDKインストーラー、ライセンスファイルのコピー、COMコンポーネントの登録、ランタイムバイナリの管理は必要ありません。OCRエンジン全体がパッケージにバンドルされています。
Patagames Tesseract.Net SDKとIronOCRにはどのような精度の違いがありますか?
IronOCRは、標準的なビジネス文書、請求書、領収書、スキャンしたフォームに対して高い認識精度を達成します。高度に劣化した文書や一般的でないスクリプトの場合、精度はソースの品質によって異なります。IronOCRは低品質入力の認識を向上させる画像前処理フィルターを含んでいます。
IronOCRはPDFテキスト抽出をサポートしていますか?
IronOCRは、ネイティブPDFとスキャンしたPDFイメージの両方から、一回の呼び出しでテキストを抽出します。また、複数ページのTIFFファイル、画像、ストリームもサポートします。スキャンしたPDFの場合、OCRはページごとに適用され、ページごとの結果オブジェクトを持ちます。
Patagames Tesseract.Net SDKのライセンスはIronOCRと比較してどうですか?
IronOCRは、定額制の永久ライセンスで、ページ毎やスキャン毎の課金はありません。大量のドキュメントを処理する組織は、ボリュームに関係なく同じライセンス費用を支払います。詳しくはIronOCRライセンスページをご覧ください。
IronOCR はどの言語をサポートしていますか?
IronOCRは個別のNuGet言語パックにより127言語をサポートしています。言語を追加するには'dotnet add package IronOcr.Languages.{Language}'コマンドを実行するだけです。手動でのファイル配置やパス設定は必要ありません。
.NETプロジェクトにIronOCRをインストールするにはどうすればよいですか?
NuGet経由でインストールします:パッケージマネージャーコンソールで'Install-Package IronOcr'、またはCLIで'dotnet add package IronOcr'。追加の言語パックも同様にインストールされます。ネイティブSDKインストーラーは必要ありません。
IronOcrは、Patagames Tesseractとは異なり、Dockerやコンテナでのデプロイに適していますか?
IronOCRはNuGetパッケージによってDockerコンテナで動作します。ライセンスキーは環境変数で設定します。OCRエンジン自体にはライセンスファイル、SDKパス、ボリュームマウントは必要ありません。
PatagamesのTesseractと比較して、購入前にIronOCRを試すことはできますか?
IronOCRのトライアルモードでは、ドキュメントを処理し、出力に透かしをオーバーレイしたOCR結果を返します。ライセンスを購入する前に、ご自身の文書で精度を確認することができます。
IronOCRはテキスト抽出とバーコード読み取りをサポートしていますか?
IronOCRはテキスト抽出とOCRに重点を置いています。バーコード読み取りについては、Iron SoftwareはIronBarcodeをコンパニオンライブラリとして提供しています。どちらも個別に、あるいはIron Suiteのバンドルとして提供されています。
Patagames Tesseract.Net SDKからIronOCRへの移行は簡単ですか?
Patagames Tesseract.Net SDKからIronOCRへの移行は、通常初期化シーケンスをIronTesseractのインスタンス化に置き換え、COMライフサイクル管理を削除し、APIコールを更新します。ほとんどの移行はコードの複雑さを大幅に軽減します。

