IRONSOFTWAREHOME
他のコンポーネントと比較する

IronOCRと LLM ベースの OCR: .NET開発者はどちらを選択すべきでしょうか?

Kannaopat Udonpant
Kannapat Udonpant
Updated: 2026年6月28日

モデルファイル4点。 RapidOCR .NETが文字を認識する前にまず必要とするのは、検出モデル、方向分類器、認識モデル、文字辞書です。これらはそれぞれGitHubのリリースページから個別にダウンロードされ、明示的なパス設定によって相互に接続されます。 最初の.csprojにMSBuildコピー規則を追加し、ONNX Runtimeのネイティブバイナリがデプロイメントターゲットにマッチしていることを確認しました。 実運用向けにOCRオプションを評価するチームにとって、そのセットアップ手順こそがRapidOCR .NETの全貌を物語っていると言えるでしょう。

RapidOCR .NETについて理解する

RapidOCR .NETは、RapidOCRプロジェクトをラップしたコミュニティ主導 for .NETライブラリです。RapidOCRプロジェクト自体は、BaiduのPaddleOCRディープラーニングモデルをONNX形式に最適化してCPU向けに移植したものです。 NuGetパッケージ(RapidOcrNet)はGitHubのBobLdがApache 2.0ライセンスの下で管理しています。 系譜が重要であることを理解してください。このライブラリは、元のテクノロジーから3つの抽象化レイヤーを隔てたところに位置しています。Baidu PaddlePaddle、PaddleOCR、コミュニティによるRapidOCR ONNX変換、そして.NETラッパーです。

主な建築上の特徴:

  • 4ファイルモデル要件: 検出(keys.txt)はエンジンの初期化前に設定されたパスに全て存在する必要があります。
  • ONNX Runtime依存性: Microsoft.ML.OnnxRuntime.Gpu(CUDA)が必要であり、アプリケーションのフットプリントを30〜50 MB増加させます。 ランタイムバイナリは、デプロイ先のプラットフォームと一致している必要があります。 -**言語制約:**モデルは主に中国語と英語で学習されています。 ヨーロッパ言語(スペイン語、フランス語、ドイツ語)、キリル文字(ロシア語、ウクライナ語)、アラビア語、ヘブライ語、およびインド系文字はサポートされていません。 日本と韓国には、コミュニティから提供された実験モデルが限られている。 -画像のみの入力: RapidOCR .NETはネイティブの PDF サポートを持っていません。 PDFを処理するには、ページを画像に変換し、各画像を個別にOCR処理し、結果を手作業で再構成するための外部レンダリングライブラリが必要です。 -**コールドスタート時の遅延:**モデルの読み込みには初回実行時に2~5秒かかり、実行時に300~500MBのメモリを消費します。 -**コミュニティ規模:**このプロジェクトはStack Overflowでの存在感が限られており、README以外のドキュメントは最小限で、商用サポートやメンテナンスのSLAもありません。 -**検索可能なPDF出力はありません:**このライブラリは画像からテキストを抽出します。 OCRの結果を、検索可能なテキストレイヤーとしてPDFに書き戻すことはできません。

4モデル構成のオーバーヘッド

RapidOCR .NETアプリケーションは、複雑さに関わらず、すべてこの初期化ブロックから始まります。

// RapidOcrNet: 4 paths required — any missing file throws at runtime
var engine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = "./models/det.onnx",      // ~3 MB download
    ClsModelPath = "./models/cls.onnx",      // ~1 MB download
    RecModelPath = "./models/rec_en.onnx",   // ~2–10 MB depending on language
    KeysPath     = "./models/en_keys.txt"    // ~100 KB character dictionary
});

// Text blocks returned — must be sorted and joined manually
var result = engine.Run(imagePath);
var text = string.Join("\n", result.TextBlocks
    .OrderBy(b => b.BoundingBox.Top)
    .ThenBy(b => b.BoundingBox.Left)
    .Select(b => b.Text));

中国語OCRへの切り替えは構成の変更ではなく、ファイルの置き換えです。英語認識モデル(en_rec.onnx / ch_rec.onnx / ch_keys.txt)は別のダウンロードです。 文書に中国語とスペイン語の両方のテキストが含まれている場合、先に進む方法はありません。RapidOCRのモデルカタログにはスペイン語のモデルが全く存在しないためです。

.csprojは、ビルドで4つのファイル全てをコピーするための明示的なMSBuildエントリも必要とします。

<ItemGroup>
  <Content Include="models\**\*.*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>
XML

その手順を省略すると、実行時にパスが解決されず、本番環境へのデプロイが静かに失敗します。

IronOCRを理解する

IronOCRは、最適化されたTesseract 5エンジンをベースに構築された商用.NET OCRライブラリであり、外部モデルファイル、tessdata管理、ネイティブバイナリ構成を必要とせず、単一のNuGetパッケージから動作するように設計されています。 これは、Windows、Linux、macOS、およびARM上で、 ASP.NET Webアプリケーション、コンソールバッチプロセッサ、WPFデスクトップツール、Azure Functions、AWS Lambda、Dockerコンテナ、MAUIモバイルアプリなど、あらゆる.NET開発シナリオを対象としています。

主な特徴:

  • 単一パッケージの展開: dotnet add package IronOcrが完全なインストールです。 エンジンバイナリ、デフォルト(英語)設定用の言語データ、および前処理アルゴリズムはすべてパッケージ内に含まれています。 -**自動前処理パイプライン:**必要に応じて、画像の傾き補正、ノイズ除去、コントラスト強調、二値化、解像度正規化が自動的に実行されます。 必要に応じて、手動フィルター適用も可能です。
  • ネイティブPDFサポート: PDFsは変換ステップなしに直接Passwordパラメータを受け取ります。 検索可能なPDF出力は、結果に対する単一のメソッド呼び出しで実現されます。
  • NuGet経由で125以上の言語: 各言語パック(IronOcr.Languages.French, IronOcr.Languages.Arabicなど)はNuGet依存関係としてインストールされます。 言語の切り替えはプロパティの割り当てであり、ファイルのダウンロードではありません。
  • 構造化された結果モデル: .Pages, .Paragraphs, .Lines, .Words, およびバウンディングボックス座標と単語ごとの信頼度スコアを公開します。
  • スレッドセーフでステートレス: 複数のIronTesseractインスタンスがロックや共有状態なしで並行して動作します。
  • 商業サポート: メールサポートとアクティブメンテナンスのバージョンAPI付きで$999(Lite)からの永続ライセンス。

機能比較

フィーチャーRapidOCR.NETIronOCR
インストールNuGet + 4つのマニュアルモデルのダウンロード単一のNuGetパッケージ
言語サポート~5 (CJK + 英語のみ)NuGet言語パック経由で125種類以上
ネイティブPDF入力なしはい
検索可能なPDF出力なしはい
組み込みの前処理なしはい(自動フィルター+手動フィルター)
商用サポートなし(コミュニティ)はい(ライセンスに含まれています)

詳細な機能比較

カテゴリー/機能RapidOCR.NETIronOCR
セットアップとインストール
NuGetインストールはいはい
外部モデルのダウンロードが必要ですはい(4ファイル)なし
パス構成が必要ですはいなし
MSBuild のコピー ルールが必要ですはいなし
NuGetインストール後すぐに動作しますなしはい
言語サポート
英語はいはい
中国語(簡体字/繁体字)はい(主な焦点)はい
日本語実験段階のみはい
韓国語実験段階のみはい
ヨーロッパ言語(スペイン語、フランス語、ドイツ語など)なしはい(30歳以上)
キリル文字(ロシア語、ウクライナ語など)なしはい(15歳以上)
アラビア語/ヘブライ語なしはい
インド系文字(ヒンディー語、ベンガル語、タミル語)なしはい(10歳以上)
多言語同時OCRなしはい
サポートされている言語の総数~5125+
入力フォーマット
JPEG / PNG / BMP / TIFFはいはい
PDF(ネイティブ形式、変換なし)なしはい
パスワードで保護されたPDFなしはい
ストリーム/バイト配列制限的はい
URL入力なしはい
出力
プレーンテキストはいはい
テキストブロックの境界ボックスはいはい
構造化された単語/行/段落部分的(ブロックのみ)はい
単語ごとの信頼度スコアはい(ブロックごと)はい
検索可能なPDFなしはい
hOCRエクスポートなしはい
前処理
自動前処理なしはい
デスキューなしはい
ノイズ除去なしはい
コントラスト/二値化なしはい
解像度の向上なしはい
デプロイメント
自己完結型の単一パッケージいいえ(外部ファイルが4つ以上)はい
Dockerサポート取扱説明書のコピーが必要ですはい(箱から出してすぐに)
LinuxサポートONNXランタイムネイティブバイナリが必要ですはい
macOS対応ONNXランタイムネイティブバイナリが必要ですはい
サポートとメンテナンス
商用サポート/SLAなしはい
企業による積極的なメンテナンスいいえ(単一のコミュニティ開発者)はい
ライセンスの種類アパッチ2.0(無料)永続商業($999+)

ONNXモデル管理とゼロコンフィギュレーションの比較

RapidOCR .NETとIronOCRの運用上の最大の相違点は、精度ではなく、アプリケーションが関わるすべての環境で4つの外部モデルファイルを管理するための継続的なコストです。

RapidOCR .NETアプローチ

モデルファイルはNuGetパッケージには同梱されていません。 それらはRapidOCRプロジェクトのGitHubリリースページにあり、別途ダウンロードし、手動でバージョン管理を行い、アプリケーションとともにデプロイする必要があります。 RapidOCRプロジェクトが精度向上のために更新されたモデルをリリースした場合、ダウンロード手順を繰り返して、デプロイメント内のファイルを置き換えます。

CI/CDパイプラインでは、モデルファイルはリポジトリにコミットされるか(Git履歴に15〜25 MBのバイナリデータが追加されます)、カスタムスクリプトでビルドステップ中に取得される必要があります。Dockerコンテナでは、各言語のモデルセットが専用のCOPY命令と非自明なレイヤーを追加します。 Kubernetesのデプロイメントでは、モデルファイルは通常、マウントされたボリュームに格納されるか、イメージに組み込まれますが、どちらの場合も、更新がどのように伝播されるかに関するポリシーが必要です。

ソースファイル内の検証ロジックが、その脆弱性を具体的に示している。

// RapidOcrNet: Runtime validation needed because any missing file crashes the engine
public static bool ValidateModelFiles()
{
    var requiredFiles = new[]
    {
        Path.Combine(ModelDirectory, "det.onnx"),
        Path.Combine(ModelDirectory, "cls.onnx"),
        Path.Combine(ModelDirectory, "rec_en.onnx"),
        Path.Combine(ModelDirectory, "en_keys.txt")
    };

    var missingFiles = requiredFiles.Where(f => !File.Exists(f)).ToList();

    if (missingFiles.Any())
    {
        Console.WriteLine("ERROR: Missing required model files:");
        foreach (var file in missingFiles)
            Console.WriteLine($"  - {file}");
        return false;
    }

    return true;
}

RapidOCR .NETを使用する実稼働アプリケーションでは、モデルファイルが見つからない場合、パッケージのインストール時に明確なエラーが発生しないため、このような起動検証が日常的に含まれています。モデルファイルが見つからないと、エンジンが最初に初期化されるときに実行時クラッシュが発生します。 その不具合は開発段階ではなく、本番環境で顕在化する。

IronOCRのアプローチ

管理すべきモデルファイルはありません。 dotnet add package IronOcrの後、エンジンは準備が整います:

// IronOCR: no model downloads, no path configuration, no validation boilerplate
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read("document.jpg").Text;

IronTesseractのセットアップガイドには、完全なインストールパスが記載されています。 英語以外の言語パックはNuGetパッケージです— dotnet add package IronOcr.Languages.French — そして、復元ステップがすべてを処理し、既にNuGet依存関係を復元するCI/CDパイプラインでも対応。 バイナリモデルファイルに関する.gitignoreの決定はなく、Dockerfileにコピー層もなく、起動時の検証スクリプトもありません。

Dockerにデプロイするチーム向けに、IronOCR Dockerガイドが、必要なシステム依存関係(Debian/Ubuntuベースのイメージ上のlibgdiplus)とそれ以上何もカバーしていません。

言語サポート

RapidOCR .NETアプローチ

RapidOCR.NETの対応言語は、その起源を反映している。 PaddleOCRは、中国語のインターネット検索サービスを提供するためにBaiduによって開発されました。 そのモデルは、中国語簡体字と中国語繁体字の両方に最適です。 英語サポートは含まれていますが、主要な設計目標ではありませんでした。 日本語版と韓国語版には、実験的モデルとしてマークされたコミュニティ提供モデルが存在する。 それ以外の言語、つまりスペイン語、フランス語、ドイツ語、ロシア語、アラビア語、ヒンディー語、ポルトガル語、その他100以上の言語には、利用可能なモデルが存在しない。

対応言語を切り替えるには、異なるモデルファイルをダウンロードする必要があります。

// RapidOcrNet: 英語 engine
var englishEngine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = Path.Combine(modelPath, "det.onnx"),
    ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    RecModelPath = Path.Combine(modelPath, "en_rec.onnx"),   // English-specific
    KeysPath     = Path.Combine(modelPath, "en_keys.txt")    // English-specific
});

// RapidOcrNet: Chinese engine — different rec and keys files required
var chineseEngine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = Path.Combine(modelPath, "det.onnx"),
    ClsModelPath = Path.Combine(modelPath, "cls.onnx"),
    RecModelPath = Path.Combine(modelPath, "ch_rec.onnx"),   // Different download
    KeysPath     = Path.Combine(modelPath, "ch_keys.txt")    // Different download
});

// Spanish? NotSupportedException — no model exists
C#

同じキューから英語、中国語、スペイン語の文書を処理する必要があるアプリケーションの場合、RapidOCR .NETではスペイン語文書を処理するための有効な方法がありません。

IronOCRのアプローチ

IronOCRは125以上の言語をサポートしており、各言語はNuGet言語パックとして利用可能です。 切り替えはIronTesseractインスタンスのenumプロパティ割り当てです — ファイルダウンロードなしで、エンジンの再作成なし:

// IronOCR: language switching is a property change, not a file swap
var ocr = new IronTesseract();

// English
ocr.Language = OcrLanguage.English;

// Chinese Simplified
ocr.Language = OcrLanguage.ChineseSimplified;

// Spanish — no model download needed
ocr.Language = OcrLanguage.Spanish;

// Arabic — just works
ocr.Language = OcrLanguage.Arabic;

// Russian — just works
ocr.Language = OcrLanguage.Russian;

var result = ocr.Read("document.jpg");

多言語文書はAddSecondaryLanguageを使用します:

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
ocr.AddSecondaryLanguage(OcrLanguage.English);
var result = ocr.Read("mixed-document.jpg");

複数の言語に関する手順国際言語の例では、言語パックのインストールとセカンダリ言語の設定について詳しく説明しています。

PDF処理および出力機能

RapidOCR .NETアプローチ

RapidOCR .NETは画像を処理します。 PDFファイルは画像ではありません。 このライブラリには、PDFレンダリング機能、PDF書き込み機能、および検索可能なPDF出力を生成する仕組みがありません。 RapidOCR .NETを使用してスキャンされたPDFからテキストを抽出するには、少なくとも3つの独立したコンポーネントが必要です。

// RapidOcrNet: PDF processing requires external library + manual assembly
public async Task<string> ExtractTextFromPdf(string pdfPath)
{
    // Step 1: Requires PdfPig, Docotic, or similar external library
    var pageImages = await RenderPdfToImages(pdfPath);

    // Step 2: Initialize RapidOcr with 4 model files (must already be downloaded)
    using var engine = new RapidOcrEngine(new RapidOcrOptions
    {
        DetModelPath = "models/det.onnx",
        ClsModelPath = "models/cls.onnx",
        RecModelPath = "models/rec_en.onnx",
        KeysPath     = "models/en_keys.txt"
    });

    // Step 3: OCR each image individually
    var results = new List<string>();
    foreach (var pageImage in pageImages)
    {
        var result = engine.Run(pageImage);
        results.Add(string.Join("\n", result.TextBlocks.Select(b => b.Text)));
    }

    // Step 4: Combine manually — page structure not preserved
    return string.Join("\n\n", results);
}

これにより、 NuGetの依存関係が1つ増え、学習すべきAPIの範囲も増え、大きなドキュメントの場合、ページレンダリングされたビットマップをメモリに保持することによるメモリ負荷も増加します。 検索可能なPDF出力(認識されたテキストを元のスキャン画像の上に隠しOCRレイヤーとして書き戻す機能)は、この処理パイプラインのどの段階でも実現できません。

IronOCRのアプローチ

IronOCRはPDFをネイティブに読み取ります。 同じIronTesseract.Read()メソッドが画像パスとPDFパスの両方を受け付けます:

// IronOCR: direct PDF OCR — no conversion, no external library
var text = new IronTesseract().Read("scanned-document.pdf").Text;

// パスワードで保護されたPDF — one parameter
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);

// 検索可能なPDF — one method call on the result
var result = new IronTesseract().Read("scanned.pdf");
result.SaveAsSearchablePdf("searchable-output.pdf");
C#

PDF入力に関する手順書では、ページ選択、パスワード処理、複数ページ処理について説明しています。 検索可能なPDF形式のハウツーガイドでは、元のスキャン画像と視覚的に同一でありながら、全文検索レイヤーを追加した、コンプライアンス基準を満たす出力を作成する方法を解説しています。 文書アーカイブパイプラインを構築するチームにとって、その出力形式は最終目標であり、 IronOCRパッケージ自体以外に一切の依存関係を必要としません。

生産準備状況とコミュニティの成熟度

RapidOCR .NETアプローチ

RapidOCR .NETは比較的新しいプロジェクトです。 そのGitHubリポジトリは、既存 for .NET OCRライブラリと比較して、スター数や貢献活動が限られている。 Stack Overflowのカバー範囲は最小限です。 本番環境で特殊なケース(通常とは異なる画像方向、特定の文字セット、ONNXランタイムのバージョン競合、GPUモード構成など)が発生した場合、主なリソースはGitHubの課題追跡システムです。 商用サポートのティアはなく、メンテナンスに関するSLAも、応答時間の保証もありません。

依存関係の連鎖は、さらなるリスクをもたらす。 RapidOCR .NETは、RapidOCRプロジェクトのモデルリリースに依存しています。 RapidOCRプロジェクトは、PaddleOCRのモデルアーキテクチャに依存している。 そのチェーンのどの層であれ、互換性を損なう変更が発生した場合、ユーザーがアップデートを行う前に.NETラッパーのメンテナーが対応する必要がある。しかも、そのラッパーは組織的な支援を受けていない、たった一人のコミュニティ開発者によって維持されている。

導入によって、ONNXランタイムのバージョン管理に関する問題も明らかになった。 Microsoft.ML.OnnxRuntimeパッケージには、マイナーバージョン間での互換性のない変更があり、それと共に出荷されるネイティブバイナリはプラットフォーム固有です。 linux/arm64上に構築されたものと同じONNX Runtimeバイナリを使用できません。 各展開対象には検証が必要です。

IronOCRのアプローチ

IronOCRは10年以上にわたり、活発な商業開発が続けられてきた。 このライブラリは、バージョン管理されたAPIで提供され、互換性のない変更点が文書化されており、 .NET SDKのリリースに合わせた定期的なリリースが行われ、すべての商用ライセンスにメールサポートが含まれています。 本番環境構築チームは、一人の開発者が空き時間に監視するGitHubの課題キューではなく、直接的なサポートを受けることができます。

単一パッケージ設計により、導入検証ループが完全に不要になります。 NuGetの復元手順は決定論的です。同じパッケージバージョンを使用すれば、プラットフォーム固有のネイティブバイナリ管理を行うことなく、Windows、Linux、macOSのいずれのプラットフォームでも同じように動作するインストール環境を構築できます。 AWS LambdaおよびAzureへのデプロイの場合、関数バンドルには公開されたアプリケーションのみが含まれており、モデルファイルサイドカー、ボリュームマウント、起動検証ロジックは含まれていません。

低品質スキャンの例画像品質補正の手順では、 ONNXベースのパイプラインでカスタムコードが必要となることが多い前処理シナリオ(傾いたスキャン、ノイズの多い背景、低コントラストの文書など)を、適切なフィルタ方法を選択するだけで、コードを一切記述することなく処理する方法を解説しています。

APIマッピングリファレンス

RapidOCR.NETIronOCR相当値
new RapidOcrEngine(new RapidOcrOptions { ... })new IronTesseract()
RapidOcrOptions.DetModelPath不要 — バンドル済み
RapidOcrOptions.ClsModelPath不要 — バンドル済み
RapidOcrOptions.RecModelPath不要 — バンドル済み
RapidOcrOptions.KeysPath不要 — バンドル済み
RapidOcrOptions.UseGpu直接的な同等機能はありません(内部的にCPU最適化されています)
RapidOcrOptions.NumThreadsIronTesseract(スレッドセーフ; Parallel.ForEachを使用)
engine.Run(imagePath)new IronTesseract().Read(imagePath)
result.TextBlocksresult.Words / result.Lines / result.Paragraphs
result.TextBlocks[i].Textresult.Words[i].Text
result.TextBlocks[i].Confidenceresult.Words[i].Confidence
result.TextBlocks[i].BoundingBoxresult.Words[i].X, .Y, .Width, .Height
string.Join("\n", result.TextBlocks.Select(b => b.Text))result.Text
手動言語ファイル交換ocr.Language = OcrLanguage.French
PDFから画像への変換 + engine.Run()new IronTesseract().Read("doc.pdf")
不可result.SaveAsSearchablePdf("output.pdf")
不可result.SaveAsHocrFile("output.hocr")
engine.Dispose()using var ocr = new IronTesseract()

チームがRapidOCR .NETからIronOCRへの移行を検討する際

モデルファイル管理がデプロイメントのボトルネックになる場合

RapidOCR .NETをプロトタイプ開発に使用したチームは、本番環境への移行を試みる際に、モデルファイルの管理という壁にぶつかることがよくあります。4 つのモデルファイルは、バージョン管理、追跡、ビルド時のコピー、CI アーティファクトへの組み込み、ステージング環境へのデプロイ、そして本番環境へのデプロイといった作業を、 NuGet の依存関係グラフとは別に行う必要があります。 小規模チームの場合、そうした運用上の諸経費は一度負担すれば、その後は忘れ去られる。 複数のサービス、複数の環境、複数のCIパイプラインを維持するチームでは、モデルファイル分配に関するカスタムスクリプティングが意味のあるメンテナンスコストに蓄積されます。チームメイトが"なぜリポジトリにこのmodels/フォルダがあり、それを削除するとどうなるのか?"と尋ね、答えが5分の説明を必要とする場合、それは通常評価が始まる時です。 IronOCRはモデル管理のあらゆる側面を排除します。別途ダウンロードする必要も、CIにコピーする必要も、起動時に検証する必要もありません。

サポートされていない言語で文書が届いた場合

言語対応のギャップは、設定の問題ではなく、絶対的な制約です。 組織がドイツ語の契約書、フランス語の請求書、ロシア語の発注書、またはアラビア語の通信文書を受け取った場合、RapidOCR .NETはそれらの文書を処理する手段を提供しません。"精度が限定的"というわけではなく、モデルも結果も提供されないのです。 当初CJKに特化したユースケースのためにRapidOCR .NETを選択したチームは、その範囲外の文書を処理する必要が生じた際に、この限界に気づくことになる。 IronOCRの言語機能は、 NuGet経由でインストール可能な125以上の言語をカバーしているため、アプリケーションコードに手を加えることなく、OCRパイプラインが処理できる範囲を拡大できます。言語パックを追加し、列挙型プロパティを変更するだけで済みます。

アプリケーションがPDFの入力または出力を必要とする場合

ビジネス文書OCRの重要なカテゴリーの一つにPDFファイルがあります。スキャンされた契約書、アーカイブされた請求書、複合機でPDFに変換されたファックス送信フォームなどです。 RapidOCR .NETは、別途PDFレンダリングライブラリ、カスタム変換コード、およびページサイズのビットマップのメモリ管理がなければ、これらのファイルを読み取ることができません。 ドキュメント取り込みパイプラインを構築するチームは、RapidOCR for .NETスタックには少なくとも2つのライブラリ(PDFレンダリング用とOCR用)が必要であり、それぞれに独自のアップグレードサイクルと互換性があることにすぐに気づくでしょう。 IronOCRは、これら両方を単一のパッケージで処理します。 検索可能な PDF を生成する機能、つまりスキャンされたアーカイブを検索可能なインデックスに変換する機能は、RapidOCR .NETの範囲外であり、 IronOCRの単一のメソッド呼び出しで実現できます。 コンプライアンス要件を満たす文書管理アプリケーションを開発するチームは、検索可能なPDF出力機能を決定的な機能として挙げることが多い。

サポートパスがないまま本番環境でインシデントが発生した場合

コミュニティプロジェクトは、貢献者の都合に合わせて運営されます。 RapidOCR .NETの運用環境で、特定のONNXランタイムバージョンの競合、通常とは異なる画像フォーマットでのモデル推論の失敗、持続的な負荷下でのメモリリークなど、これまで経験したことのないエッジケースが発生した場合、サポートの手順はGitHubに問題を報告して対応を待つことになります。 SLA(サービスレベル契約)の義務を負うチームや、業務上重要な文書処理パイプラインを運用するチームにとって、それは実行可能なインシデント対応モデルではありません。 IronOCRの商用ライセンスには、直接メールによるサポートが含まれており、月曜日の締め切り前の金曜日の夜に何か問題が発生した場合でも、チームは実際に連絡を取ることができます。

プロジェクトがプロトタイプの想定を超える規模になったとき

RapidOCR .NETは、実験的な概念実証には妥当な選択肢です。無料であり、ライセンス交渉も不要で、モデル設定後もインストールは迅速です。しかし、その概念実証が製品版の機能になると、ラボ環境では許容範囲だった制約(PDF非対応、対応言語範囲の狭さ、手動モデル管理、商用サポートなしなど)が障害となります。 RapidOCR .NETからIronOCRへの移行手順は機械的です。パッケージを削除し、モデルディレクトリを削除し、MSBuild のコピールールを削除し、エンジン初期化ブロックを引数なしの単一の OCR エンジンコンストラクタに置き換え、PDF 入力、125 言語対応、自動前処理、検索可能な出力を同時に有効化します。

一般的な移行の考慮事項

エンジン初期化の置き換え

最も直接的なコード変更は、IronTesseractインスタンス化に置き換えることです。 4つのパスを持つ構成オブジェクトが完全に消滅します。

// Before: RapidOcrNet — engine needs all 4 paths populated
var engine = new RapidOcrEngine(new RapidOcrOptions
{
    DetModelPath = "models/det.onnx",
    ClsModelPath = "models/cls.onnx",
    RecModelPath = "models/rec_en.onnx",
    KeysPath     = "models/en_keys.txt"
});
var result = engine.Run(imagePath);
var text = string.Join("\n", result.TextBlocks
    .OrderBy(b => b.BoundingBox.Top)
    .Select(b => b.Text));

// After: IronOCR — no configuration required
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read(imagePath).Text;

手動のresult.Textに収まります。 result.Words結果の読み方ハウツーで文書化された構造化APIを通じて同じ単語ごとの座標と信頼度を公開します。

モデルファイルインフラストラクチャの削除

コードを置き換えた後、models/ディレクトリを削除し、ビルド時にモデルファイルをコピーしたMSBuild <Content>エントリを削除し、欠落ファイルを確認した起動時検証ロジックを削除します。 これらは不要です。IronOCRはデータを内部的に送信します。 CI/CDパイプラインでは、モデルファイルを取得またはキャッシュするステップをすべて削除してください。 この画像入力に関するハウツーガイドでは、既存のRapidOCR .NETコードでよく使用される一般的なファイルパス、ストリーム、バイト配列といったシナリオにおける入力処理パターンについて説明します。

低品質画像の取り扱い

RapidOCR.NETのONNXモデルは推論時に内部的に前処理を行いますが、ライブラリは呼び出し元に対して前処理APIを公開していません。 既存のコードがengine.Run()に渡す前に画像操作を適用する場合、そのコードは別の画像ライブラリに対して書かれました。 IronOCRはOcrInputで直接前処理APIを公開します:

using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew();           // Correct skewed scans
input.DeNoise();          // Remove scanner noise
input.Contrast();         // Enhance contrast
input.Binarize();         // Convert to black/white
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");

画像方向補正の方法DPI設定の方法について解説します。これらは、スキャンした文書の精度に最も影響を与える2つの前処理上の問題点です。 信頼度スコアはresult.Words[i].Confidenceを通じて単語ごとに利用可能です。

PDFサポートを追加

engine.Run()を呼び出す前にPDFから画像への変換を行ったコードはすべて完璧に削除できます。 IronTesseract.Read()はPDFパスを直接受け入れます。 PDFレンダリングライブラリへの依存関係と変換パイプラインコードを削除します。これは依存関係の追加ではなく、純粋な削減となります。

IronOCRの追加機能

比較セクションで説明した機能以外にも、 IronOCRはRapidOCR .NETにはない機能を提供しています。

-**領域ベースのOCR:**ページ全体を処理することなく、画像の特定領域からテキストを抽出します。 地域ベースのOCRハウツークロップ長方形の例は、請求書ヘッダー抽出、フォームフィールドターゲッティング、類似の部分ドキュメントシナリオに関するCropRectangle使用について説明しています。

  • OCR中のバーコード読み取り: バーコード値をテキストとともに単一のパスで抽出するためにocr.Configuration.ReadBarCodes = trueを設定します。 バーコードOCRハウツーバーコードOCR例は、result.Barcodesが標準OCR出力と統合する方法を示しています。 -特殊な文書タイプ: IronOCR は、パスポートナンバープレート手書き文字表の抽出に関するテスト済みのガイダンスを提供します。 -非同期OCR:非同期OCRのハウツーでは、 ASP.NETリクエストハンドラーとバックグラウンドサービスにおけるノンブロッキング処理パターンを紹介します。
  • hOCRと構造化エクスポート: IronOCRはOCR結果をhOCR XMLとして保存でき、単語レベルのバウンディングボックスを、下流の文書処理ツールと互換性のある標準形式で保持します。 hOCRのエクスポート方法については、出力フォーマットのオプションを説明しています。

.NETの互換性と将来の準備

IronOCRは、.NET 8、 .NET 9、 .NET Standard 2.0、および.NET Framework 4.6.2以降を対象としており、現在のEnterprise.NET環境のあらゆる範囲を網羅しています。 ライブラリは、Windows x64/x86、Linux x64、macOS x64、およびmacOS ARM(Apple Silicon)のクロスプラットフォームバイナリを提供し、コンテナ画像は標準のmcr.microsoft.com/dotnet/aspnetベース画像に対してテストされています。 RapidOCR.NETの互換性は、プラットフォーム固有のNuGetパッケージ選択(CPU用Microsoft.ML.OnnxRuntime.Gpu)が必要であり、同じバイナリインパッケージのシンプルさを保証しないONNX Runtimeのプラットフォームサポートマトリックスに制限されています。 IronOCRは、積極的なリリースサイクルを通じて.NET 10(2026年11月リリース予定)との互換性を維持しており、SDKのアップデート時にアプリケーションコードの変更は一切必要ありません。

結論

RapidOCR .NETは、特定の課題をうまく解決します。それは、Pythonのエコシステム全体を必要とせずに、CPUに最適化されたPaddleOCRモデルを.NETで実行することです。 モデルファイルを手動で管理できる管理された環境で、中国語または英語の画像のみを処理するチームにとっては、無料で十分な精度が得られます。 それが、その製品における使用事例の範囲です。

モデル管理のオーバーヘッドが決定的な制約となる。 外部のGitHubリポジトリから取得した4つの別々のファイルは、アプリケーションと同時にデプロイされ、実行時に検証され、上流プロジェクトが新しい重みをリリースするたびに手動で更新されます。これはプロトタイプでは問題になりません。 CI/CDパイプライン、複数環境へのデプロイ、複数の開発者を抱える本番サービスにとって、これはエンジニアリングの四半期を通して何時間もの時間を静かに浪費する、一種の運用上の摩擦である。 言語対応範囲の上限が問題をさらに悪化させている。ビジネス要件にCJK以外の言語が加わった途端、RapidOCR .NETは完全に機能しなくなってしまうのだ。

IronOCRは、RapidOCR.NETの限界が始まるところから始まる。 NuGetパッケージ1つ、外部ファイル不要、125以上の言語に対応、ネイティブPDF入力と検索可能なPDF出力、自動前処理、構造化された結果抽出、バージョン管理されたAPIによる商用サポート。 $999 Liteライセンスは、トランザクションごとのメーターや更新の必要なく一度限りの費用です。 モデル管理、PDF変換の回避策、サポート対象外言語に関するエスカレーションに費やされるエンジニアリング時間を算出したチームは、一貫して、無料の代替手段よりも商用ライブラリの方が経済的に有利であることを発見している。

現在RapidOCR .NETを本番環境で運用しているチーム、または新規プロジェクトでRapidOCR .NETを評価しているチームにとって、 IronOCRのチュートリアルハブとハウツーガイドは実践的な出発点となります。 移行は機械的で、コードはよりシンプルになり、操作対象は単一のパッケージ参照に縮小されます。

ご注意: Bitmiracle Docotic.Pdf、PaddleOCR、PdfPig、RapidOCR、および Tesseract は、それぞれの所有者の登録商標です。 このサイトは、Baidu、Bit Miracle、Google、PaddlePaddle、RapidOCR、または UglyToad と提携、承認、スポンサーシップを受けているわけではありません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。