IronOCRとSyncfusion OCRの比較
Aspose.OCRは開発者ごとに毎年$783の料金を請求し、永続オプションはありません。つまり、チームが支払いを止めると、新しいデプロイメントはすべてコンプライアンスに違反します。 複数年にわたる大規模なチームにとっては、サブスクリプション料金が大幅に累積します。 IronOCRは10人の開発者チームを$2,999で一度きりカバーします。 料金差を超えて、Aspose.OCRでは各認識呼び出しの前にすべての前処理フィルタを手動で宣言する必要がありますが、IronOCRは単一の.Read()で騒がしい傾きのあるスキャンを読み取り、内部で修正を処理します。 この記事では、価格モデル、前処理アーキテクチャ、PDFサポート、APIの冗長性といった観点から両ライブラリを検証し、具体的な数値に基づいた意思決定ができるように支援します。
Aspose.OCRについて理解する
Aspose.OCRは、Word、Excel、PDF、画像フォーマットに対応したドキュメント処理SDKで知られるAspose社が提供する、商用オンプレミス型OCRライブラリです。 Aspose.OCRは、その製品ポートフォリオを光学文字認識(OCR)分野に拡張し、既に他のAspose製品を使用しているEnterprise顧客を対象としています。
Aspose.OCRの主なアーキテクチャ特性:
-サブスクリプションのみのライセンス:永久ライセンスのオプションはありません。 Developer Small Businessトライは開発者ごとに$783/年です。 Site Small BusinessとOEMライセンスティアの現在の価格についてはAsposeにお問い合わせください。
- 手動の前処理パイプライン: ライブラリは
PreprocessingFilterコレクションを公開します。 これにPreprocessingFilter.Median()などを明示的に入力します。 ライブラリはこれらを自動的に適用しません。 - 別個のPDFライセンス依存関係: Aspose.OCRは
RecognizePdf()を通じて標準PDFを読むことができます。 パスワードで保護されたPDFファイルには、Aspose.PDFという別製品が必要で、これは別途年間サブスクリプションが必要です。 これは彼らの独自のコードサンプルにthrow new NotSupportedException("Aspose.OCR requires Aspose.PDF (additional license) to handle password-protected PDFs")で文書化されています。 AsposeOcrをメインのエンジンクラスとして: 認識結果は.Average()が必要です。 -メインパッケージには130以上の言語が含まれています。言語データは個別のダウンロードではなく、 NuGetパッケージに同梱されています。- PDF入力用の
DocumentRecognitionSettings: PDF特有の設定はStartPage(0ベース) およびPagesNumberパラメータを持つ別個の設定クラスを使用します。
手動前処理モデル
Aspose.OCRの基本的な設計上の選択は、特定の画像に必要な補正を把握するのはユーザーの責任であるという点です。 適切なフィルタを指定せずに、歪んだノイズの多いスキャンデータを入力すると、エンジンはそれをそのまま処理します。
// Aspose.OCR: developer decides which corrections to apply
var api = new AsposeOcr();
var filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
// Every filter must be declared explicitly
filters.Add(PreprocessingFilter.AutoSkew());
filters.Add(PreprocessingFilter.AutoDenoising());
filters.Add(PreprocessingFilter.ContrastCorrectionFilter());
filters.Add(PreprocessingFilter.Threshold(128)); // must tune the threshold value
var settings = new RecognitionSettings
{
PreprocessingFilters = filters,
Language = Language.Eng
};
var result = api.RecognizeImage("poor-quality-scan.jpg", settings);
return result.RecognitionText;
// Aspose.OCR: developer decides which corrections to apply
var api = new AsposeOcr();
var filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
// Every filter must be declared explicitly
filters.Add(PreprocessingFilter.AutoSkew());
filters.Add(PreprocessingFilter.AutoDenoising());
filters.Add(PreprocessingFilter.ContrastCorrectionFilter());
filters.Add(PreprocessingFilter.Threshold(128)); // must tune the threshold value
var settings = new RecognitionSettings
{
PreprocessingFilters = filters,
Language = Language.Eng
};
var result = api.RecognizeImage("poor-quality-scan.jpg", settings);
return result.RecognitionText;
Imports Aspose.OCR
Imports Aspose.OCR.Models.PreprocessingFilters
' Aspose.OCR: developer decides which corrections to apply
Dim api As New AsposeOcr()
Dim filters As New PreprocessingFilter()
' Every filter must be declared explicitly
filters.Add(PreprocessingFilter.AutoSkew())
filters.Add(PreprocessingFilter.AutoDenoising())
filters.Add(PreprocessingFilter.ContrastCorrectionFilter())
filters.Add(PreprocessingFilter.Threshold(128)) ' must tune the threshold value
Dim settings As New RecognitionSettings With {
.PreprocessingFilters = filters,
.Language = Language.Eng
}
Dim result = api.RecognizeImage("poor-quality-scan.jpg", settings)
Return result.RecognitionText
しきい値を間違えると、テキストがぼやけてしまう。 塩と胡椒のスキャンでAutoDenoisingを忘れると精度が落ちます。 図書館は画像の分析や修正案の提示は行いません。画像の分析はすべて利用者の責任となります。 また、フィルターの順序が適切かどうかを検証する組み込みのメカニズムもありません。 順序は重要であり、ドキュメントにはすべての操作が網羅されているわけではありません。
IronOCRを理解する
IronOCRは、 Iron Software社が提供する商用.NET OCRライブラリで、最適化されたTesseract 5エンジンをベースに構築されています。単一のNuGetパッケージとして提供され、外部API呼び出しを一切行わずに、ドキュメントを完全にオンプレミスで処理します。 この設計は、設定の手間を最小限に抑えつつ、生産レベルの精度を実現することに重点を置いています。
IronOCRの主な特徴:
- 一度きりの支払いによる永続ライセンス: $999 Lite (1開発者、1プロジェクト)、$1,499 Plus (3開発者、3プロジェクト)、$2,999 Professional (10開発者、10プロジェクト)、$5,999 Unlimited。 各プランには1年間のアップデートが含まれており、購入後は無期限にご利用いただけます。
- デフォルトでの自動前処理:
new IronTesseract().Read("document.jpg")呼び出しにより、画像特性に基づいて回転検出、ノイズ除去、コントラスト正規化、二値化を内部的に適用します。 必要に応じて、明示的な前処理が可能です。 - パスワード保護されたファイルを含むネイティブPDFサポート: 標準化されたPDFと暗号化されたPDFの両方が追加の製品ライセンスを必要とせず、同じ
OcrInputクラスを通じてロードされます。 IronTesseractをメインのエンジンクラスとして: 結果は.Charactersコレクションがあります。- NuGetパッケージとして 125 以上の言語が利用可能:コア英語も含まれています。 追加の言語は
dotnet add package IronOcr.Languages.Frenchなどでインストールされます。 -スレッドセーフかつクロスプラットフォーム: Windows、Linux、macOS、Docker、Azure、AWSで動作し、プラットフォーム固有の設定は不要です。
機能比較
| フィーチャー | Aspose.OCR | IronOCR |
|---|---|---|
| 価格設定モデル | 年間サブスクリプション ($783+/年/開発者) | 一度きりの永続 ($999+) |
| PDFサポート | 標準PDFはネイティブで、暗号化にはAspose.PDFが必要です。 | 暗号化されたものを含むすべてのPDFネイティブ |
| 前処理 | 手動フィルター宣言が必要です | オプションの明示的制御による自動制御 |
| プライマリAPIクラス | AsposeOcr |
IronTesseract |
| 言語数 | 130以上(パッケージに含まれています) | 125以上( NuGetパック経由) |
| 検索可能なPDF出力 | SaveMultipageDocument(..., SaveFormat.Pdf, ...) |
result.SaveAsSearchablePdf(path) |
| プラットフォームのサポート | .NET Standard 2.0以降、 .NET 6/7/8、 .NET Framework 4.6.1以降 | .NET Standard 2.0以降、 .NET 6/7/8、 .NET Framework 4.6.2以降 |
詳細な機能比較
| フィーチャー | Aspose.OCR | IronOCR |
|---|---|---|
| ライセンスについて | ||
| ライセンスモデル | 年間サブスクリプション | 永久一回限り |
| 1-開発者コスト | $783/年 | $999 一度きり |
| 永久オプション | なし | はい |
| PDF処理 | ||
| 標準PDF OCR | はい (RecognizePdf) |
はい (LoadPdf) |
| パスワードで保護されたPDF | Aspose.PDFが必要です(追加ライセンスが必要です)。 | 組み込み (Password: パラメータ) |
| 特定のページ選択 | はい (0ベースのStartPage + PagesNumber) |
はい (1ベースのLoadPdfPages) |
| 連続していないページの選択 | 複数回の通話が必要です | はい(ページ番号の配列) |
| 検索可能なPDF出力 | SaveMultipageDocument |
SaveAsSearchablePdf |
| 前処理 | ||
| 自動傾き補正 | PreprocessingFilter.AutoSkew()を宣言する必要があります |
自動またはinput.Deskew() |
| ノイズ除去 | PreprocessingFilter.AutoDenoising()を宣言する必要があります |
自動またはinput.DeNoise() |
| コントラスト強調 | PreprocessingFilter.ContrastCorrectionFilter()を宣言する必要があります |
自動またはinput.Contrast() |
| 二値化 | Threshold(value) |
input.Binarize() (自動しきい値) |
| スケールアップ | PreprocessingFilter.Scale(factor) |
input.EnhanceResolution(dpi) |
| コードなしの前処理 | 不可 | はい(Read呼び出しごとに自動的に実行されます) |
| 表彰結果 | ||
| プレーンテキスト | result.RecognitionText |
result.Text |
| 信頼度スコア | result.RecognitionAreasConfidence.Average() (配列) |
result.Confidence (単一値) |
| 単語レベルのデータ | 限定的(地域限定) | X, Y, Width, Height, Confidenceを伴うresult.Words |
| ラインレベルデータ | 基本 | 完全な位置指定を伴うresult.Lines |
| 段落構成 | 基本 | result.Paragraphsコレクション |
| 文字レベルのデータ | 直接露出しない | result.Charactersコレクション |
| 入力ソース | ||
| ファイルパス | はい | はい |
| ストリーム | はい (RecognizeImage(MemoryStream, ...)) |
はい (input.LoadImage(stream)) |
| バイト配列 | MemoryStream経由 | はい (input.LoadImage(byte[])) |
| ビットマップ | 直接的ではない | はい (input.LoadImage(Bitmap)) |
| URL | 手動でのHTTPダウンロードが必要です | はい (input.AddImage(url)) |
| 出力フォーマット | ||
| プレーンテキスト | はい | はい |
| 検索可能なPDF | はい | はい |
| ワード/DOCX | はい (SaveFormat.Docx) |
hOCRエクスポート経由 |
| hOCR | 制限的 | 完全 (result.SaveAsHocrFile) |
| ねじ切り | ||
| スレッドセーフティ | 並行使用における懸念事項が文書化されている | 完全スレッドセーフ |
| 組み込みの並列処理 | ThreadsCount設定 |
内部自動並列処理 |
| デプロイメント | ||
| NuGetパッケージ数 | メイン言語パック1つ+オプション言語パック1つ | メイン言語パック1つ+オプション言語パック1つ |
| Dockerサポート | 動作します(ネイティブライブラリの設定が必要な場合があります) | 箱から出してすぐに使えます |
| エアギャップ展開 | サポート対象 | サポート対象 |
価格モデル:サブスクリプション vs 永久ライセンス
価格体系は、これら2つのライブラリ間の最も顕著な実質的な違いであり、時間の経過とともに影響が大きくなるため、独立した分析に値する。
Aspose.OCRアプローチ
Asposeは年間サブスクリプションを提供しており、永久ライセンスは提供していません。 更新を停止した瞬間から、新しいビルドを合法的に展開できなくなり、セキュリティパッチへのアクセス権も失います。 READMEファイルより:
小規模チーム(開発者3名):
Aspose.OCR: 3 × $783 = 年間
5年コスト: 年間サブスクリプション料金の複利
中規模チーム(開発者10名):
Aspose.OCR Site: 現在の価格についてAsposeに問い合わせてください
5年コスト: 年間サブスクリプション料金の複利
プロジェクト途中でチームの開発者数が3人から10人に増えた場合、サイトライセンスにアップグレードすることで、年間ライセンス料の計算がリセットされ、より高いレートで利用できるようになります。 予算策定には、人員数の予測と年間増加率の想定が必要となる。 Asposeが文書化したライセンス期限切れの影響:新しいバージョンをデプロイできなくなり、既存のデプロイメントには有効なライセンスが必要となり、更新しないとセキュリティパッチを受け取れなくなります。
IronOCRのアプローチ
IronOCRのライセンスモデルは、プロジェクトティアごとに1回限りの支払い方式です。 Professionalトライは$2,999で、10人の開発者を10プロジェクトにわたりカバーします。 あなたは、そのバージョンを永久に所有します。 1年間のアップデートが含まれています。 その後は、前回入手したバージョンを引き続き使用するか、割引料金でアップデートを更新することができます。 支払いを怠ったとしても、法令遵守上のリスクはありません。
10人開発者チームの比較:
Aspose.OCR Site (5年): 現在の価格についてAsposeに問い合わせてください × 5年
IronOCR プロフェッショナル: $professionalLicense 一度
節約: 複数年にわたって大幅に節約
製品ライフサイクルが5年以上にも及ぶ社内ツールを出荷するチームにとって、複利的に増加するコストは決して軽微なものではない。 その差額は、意義のある工学研究に資金を提供する。
前処理機能
前処理の段階において、両ライブラリは日々の開発者体験において大きく異なる。 Aspose.OCRは、その決定権を開発者に委ねます。 IronOCRは自動的に判断を下しますが、ユーザーがそれを上書きすることも可能です。
Aspose.OCRアプローチ
画像補正を必要とするすべての認識呼び出しには、明示的なフィルタチェーンが必要です。 APIはPreprocessingFilter— RecognitionSettingsを構築する前にビルドするコレクションです。 フィルターの順序は重要であり、自動的に検証されるわけではありません。
// Aspose.OCR: full pipeline for a typical scanned document
var api = new AsposeOcr();
var filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
// Step 1: fix rotation (must know to do this first)
filters.Add(PreprocessingFilter.AutoSkew());
// Step 2: remove noise
filters.Add(PreprocessingFilter.AutoDenoising());
// Step 3: contrast
filters.Add(PreprocessingFilter.ContrastCorrectionFilter());
// Step 4: binarize with a threshold you must choose
filters.Add(PreprocessingFilter.Binarize());
var settings = new RecognitionSettings
{
PreprocessingFilters = filters,
Language = Language.Eng
};
var result = api.RecognizeImage("scanned-invoice.jpg", settings);
Console.WriteLine(result.RecognitionText);
// Aspose.OCR: full pipeline for a typical scanned document
var api = new AsposeOcr();
var filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
// Step 1: fix rotation (must know to do this first)
filters.Add(PreprocessingFilter.AutoSkew());
// Step 2: remove noise
filters.Add(PreprocessingFilter.AutoDenoising());
// Step 3: contrast
filters.Add(PreprocessingFilter.ContrastCorrectionFilter());
// Step 4: binarize with a threshold you must choose
filters.Add(PreprocessingFilter.Binarize());
var settings = new RecognitionSettings
{
PreprocessingFilters = filters,
Language = Language.Eng
};
var result = api.RecognizeImage("scanned-invoice.jpg", settings);
Console.WriteLine(result.RecognitionText);
Imports Aspose.OCR
Imports Aspose.OCR.Models
' Aspose.OCR: full pipeline for a typical scanned document
Dim api As New AsposeOcr()
Dim filters As New PreprocessingFilters.PreprocessingFilter()
' Step 1: fix rotation (must know to do this first)
filters.Add(PreprocessingFilter.AutoSkew())
' Step 2: remove noise
filters.Add(PreprocessingFilter.AutoDenoising())
' Step 3: contrast
filters.Add(PreprocessingFilter.ContrastCorrectionFilter())
' Step 4: binarize with a threshold you must choose
filters.Add(PreprocessingFilter.Binarize())
Dim settings As New RecognitionSettings With {
.PreprocessingFilters = filters,
.Language = Language.Eng
}
Dim result = api.RecognizeImage("scanned-invoice.jpg", settings)
Console.WriteLine(result.RecognitionText)
熱印刷の薄れたレシートの場合、Threshold値の手動調整が必要です。 aspose-ocr-preprocessing-comparison.csの例では、しきい値検索ループが示されています:値を20ずつ80から180まで試し、最も文字を抽出するものを選びます。 それは正当な回避策ではありますが、同時に、チームがアプリケーションの機能開発ではなく、OCRの基盤構築に開発時間を費やすことになるという問題もあります。
IronOCRのアプローチ
IronOCRのデフォルトの処理では、エンジンが各画像を分析し、必要に応じて補正を適用するため、コード内で明示的なフィルタは適用されません。 明示的なフィルタメソッド—EnhanceResolution()—は、自動動作をオーバーライドしたり、特に劣化した入力に対して積極的な修正を適用したい場合に使用します。
// IronOCR: automatic preprocessing, zero filter configuration
var text = new IronTesseract().Read("scanned-invoice.jpg").Text;
// IronOCR: explicit preprocessing for a heavily degraded low-quality scan
using var input = new OcrInput();
input.LoadImage("poor-quality-photo.jpg");
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);
var result = new IronTesseract().Read(input);
// IronOCR: automatic preprocessing, zero filter configuration
var text = new IronTesseract().Read("scanned-invoice.jpg").Text;
// IronOCR: explicit preprocessing for a heavily degraded low-quality scan
using var input = new OcrInput();
input.LoadImage("poor-quality-photo.jpg");
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);
var result = new IronTesseract().Read(input);
Imports IronOcr
' IronOCR: automatic preprocessing, zero filter configuration
Dim text As String = New IronTesseract().Read("scanned-invoice.jpg").Text
' IronOCR: explicit preprocessing for a heavily degraded low-quality scan
Using input As New OcrInput()
input.LoadImage("poor-quality-photo.jpg")
input.Deskew()
input.DeNoise()
input.Contrast()
input.Binarize()
input.EnhanceResolution(300)
Dim result = New IronTesseract().Read(input)
End Using
画像品質補正ガイドでは、明示的な前処理が自動処理よりも優れた結果をもたらす場合について解説しています。 ほとんどの制作入力データ(スキャンされたPDF、オフィス文書の写真、フォームのキャプチャなど)の場合、単一行の呼び出しで調整なしで正確な結果が得られます。 低品質スキャンの例を参照して、劣化した入力に対するベンチマーク結果を確認してください。
実際的な結果として、多様な文書タイプに対応するAspose.OCR統合では、文書タイプごとに前処理構成戦略が必要となる。 IronOCRとの連携により、様々な入力を同じコードパスで処理できます。
PDFサポート
PDF処理は、両ライブラリ間の最も具体的な機能的なギャップを露呈する。
Aspose.OCRアプローチ
標準PDFはDocumentRecognitionSettingsで通じて動作します。 設定は0ベースのページインデクシングを使用し、PagesNumberがあります。 非連続ページ選択には、ページごとにRecognizePdfを一度呼び出すループが必要です:
// Aspose.OCR: standard PDF, all pages
var api = new AsposeOcr();
var settings = new DocumentRecognitionSettings { Language = Language.Eng };
var results = api.RecognizePdf("document.pdf", settings);
var sb = new StringBuilder();
foreach (var page in results)
{
sb.AppendLine(page.RecognitionText);
}
return sb.ToString();
// Aspose.OCR: standard PDF, all pages
var api = new AsposeOcr();
var settings = new DocumentRecognitionSettings { Language = Language.Eng };
var results = api.RecognizePdf("document.pdf", settings);
var sb = new StringBuilder();
foreach (var page in results)
{
sb.AppendLine(page.RecognitionText);
}
return sb.ToString();
Imports Aspose.OCR
Imports System.Text
Dim api As New AsposeOcr()
Dim settings As New DocumentRecognitionSettings With {.Language = Language.Eng}
Dim results = api.RecognizePdf("document.pdf", settings)
Dim sb As New StringBuilder()
For Each page In results
sb.AppendLine(page.RecognitionText)
Next
Return sb.ToString()
パスワードで保護されたPDFファイルは、強固な壁となる。 aspose-ocr-pdf-processing.csの例は明確です:
// Aspose.OCR: encrypted PDFs require Aspose.PDF (separate license)
public string ExtractFromProtectedPdf(string pdfPath, string password)
{
// Aspose.OCR alone CANNOT decrypt PDFs
// You need Aspose.PDF (additional license cost)
// Step 1: Decrypt with Aspose.PDF
// Step 2: Convert pages to images (complex multi-step process)
// Step 3: OCR the images
// Step 4: Cleanup temp files
throw new NotSupportedException(
"Aspose.OCR requires Aspose.PDF (additional license) to handle " +
"password-protected PDFs. This adds significant cost and complexity.");
}
// Aspose.OCR: encrypted PDFs require Aspose.PDF (separate license)
public string ExtractFromProtectedPdf(string pdfPath, string password)
{
// Aspose.OCR alone CANNOT decrypt PDFs
// You need Aspose.PDF (additional license cost)
// Step 1: Decrypt with Aspose.PDF
// Step 2: Convert pages to images (complex multi-step process)
// Step 3: OCR the images
// Step 4: Cleanup temp files
throw new NotSupportedException(
"Aspose.OCR requires Aspose.PDF (additional license) to handle " +
"password-protected PDFs. This adds significant cost and complexity.");
}
' Aspose.OCR: encrypted PDFs require Aspose.PDF (separate license)
Public Function ExtractFromProtectedPdf(pdfPath As String, password As String) As String
' Aspose.OCR alone CANNOT decrypt PDFs
' You need Aspose.PDF (additional license cost)
' Step 1: Decrypt with Aspose.PDF
' Step 2: Convert pages to images (complex multi-step process)
' Step 3: OCR the images
' Step 4: Cleanup temp files
Throw New NotSupportedException(
"Aspose.OCR requires Aspose.PDF (additional license) to handle " &
"password-protected PDFs. This adds significant cost and complexity.")
End Function
Aspose.PDFは、別途年間購読が必要な別製品です。 ワークフローに暗号化されたPDFが含まれている場合(ほとんどのEnterpriseドキュメントパイプラインには含まれています)、2つのサブスクリプションと、それらの間に統合レイヤーが必要になります。
検索可能なPDFを作成するには、api.SaveMultipageDocument(outputPdf, SaveFormat.Pdf, results)を呼び出す必要があります。 結果を収集し、リストに整理する作業は、あなたの責任です。
IronOCRのアプローチ
IronOCRは同じOcrInput APIを通じて標準PDF、パスワード保護されたPDF、およびページ範囲選択を処理します。 ネイティブPDF OCRは追加製品を必要としません。
// IronOCR: standard PDF — direct, no settings object needed
var text = new IronTesseract().Read("document.pdf").Text;
// IronOCR: password-protected PDF — built-in, no extra license
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret123");
var result = new IronTesseract().Read(input);
// IronOCR: non-contiguous pages — single call
using var input = new OcrInput();
input.LoadPdfPages("large-report.pdf", new[] { 1, 3, 5, 12 });
var result = new IronTesseract().Read(input);
// IronOCR: standard PDF — direct, no settings object needed
var text = new IronTesseract().Read("document.pdf").Text;
// IronOCR: password-protected PDF — built-in, no extra license
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret123");
var result = new IronTesseract().Read(input);
// IronOCR: non-contiguous pages — single call
using var input = new OcrInput();
input.LoadPdfPages("large-report.pdf", new[] { 1, 3, 5, 12 });
var result = new IronTesseract().Read(input);
Imports IronOcr
' IronOCR: standard PDF — direct, no settings object needed
Dim text As String = New IronTesseract().Read("document.pdf").Text
' IronOCR: password-protected PDF — built-in, no extra license
Using input As New OcrInput()
input.LoadPdf("encrypted.pdf", Password:="secret123")
Dim result = New IronTesseract().Read(input)
End Using
' IronOCR: non-contiguous pages — single call
Using input As New OcrInput()
input.LoadPdfPages("large-report.pdf", {1, 3, 5, 12})
Dim result = New IronTesseract().Read(input)
End Using
検索可能なPDF出力は、結果に対する単一のメソッド呼び出しです。
// IronOCR: searchable PDF — one line
var result = new IronTesseract().Read("scanned-document.pdf");
result.SaveAsSearchablePdf("searchable-output.pdf");
// IronOCR: searchable PDF — one line
var result = new IronTesseract().Read("scanned-document.pdf");
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronOcr
' IronOCR: searchable PDF — one line
Dim result = New IronTesseract().Read("scanned-document.pdf")
result.SaveAsSearchablePdf("searchable-output.pdf")
検索可能なPDF操作ガイドとPDF OCRの例では、複数ページおよび混合コンテンツのPDFのシナリオを網羅しています。 検索可能なPDFを出力要件とする文書アーカイブワークフローの場合、 IronOCRのパスは入力から出力まで3行で済み、管理すべき中間状態はありません。
APIの詳細度
APIの冗長性は、本番環境のコードベース全体で累積的に増加する。 数百種類の文書を処理したり、新しいチームメンバーをオンボーディングしたりする際には、認識呼び出しごとに5行の設定が必要になると、かなりのオーバーヘッドになります。
Aspose.OCRアプローチ
すべてのAspose.OCR認識呼び出しは同じパターンに従います:RecognitionSettings (またはPDFの場合はresult.RecognitionTextにアクセスします。 信頼度にはresult.RecognitionAreasConfidence.Average()を計算する必要があります、APIが領域ごとの値を返すため:
// Aspose.OCR: basic text extraction with confidence
var api = new AsposeOcr();
var settings = new RecognitionSettings
{
Language = Language.Eng,
AutoSkew = true
};
var result = api.RecognizeImage("document.jpg", settings);
string text = result.RecognitionText;
float confidence = result.RecognitionAreasConfidence.Average();
// Aspose.OCR: basic text extraction with confidence
var api = new AsposeOcr();
var settings = new RecognitionSettings
{
Language = Language.Eng,
AutoSkew = true
};
var result = api.RecognizeImage("document.jpg", settings);
string text = result.RecognitionText;
float confidence = result.RecognitionAreasConfidence.Average();
Imports Aspose.OCR
' Aspose.OCR: basic text extraction with confidence
Dim api As New AsposeOcr()
Dim settings As New RecognitionSettings With {
.Language = Language.Eng,
.AutoSkew = True
}
Dim result = api.RecognizeImage("document.jpg", settings)
Dim text As String = result.RecognitionText
Dim confidence As Single = result.RecognitionAreasConfidence.Average()
バッチ処理の場合、各画像にはそれ自身の呼び出しが必要であり、スレッドパターンではAsposeOcrをスレッドごとにインスタンス化して記録されたスレッドセーフティの懸念を避ける必要があります:
// Aspose.OCR: parallel batch — instance per thread due to thread-safety considerations
Parallel.ForEach(imagePaths,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
path =>
{
var api = new AsposeOcr(); // new instance per thread
var result = api.RecognizeImage(path, new RecognitionSettings());
// handle result
});
// Aspose.OCR: parallel batch — instance per thread due to thread-safety considerations
Parallel.ForEach(imagePaths,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
path =>
{
var api = new AsposeOcr(); // new instance per thread
var result = api.RecognizeImage(path, new RecognitionSettings());
// handle result
});
Imports System.Threading.Tasks
Imports Aspose.OCR
' Aspose.OCR: parallel batch — instance per thread due to thread-safety considerations
Parallel.ForEach(imagePaths, New ParallelOptions With {.MaxDegreeOfParallelism = 4}, Sub(path)
Dim api As New AsposeOcr() ' new instance per thread
Dim result = api.RecognizeImage(path, New RecognitionSettings())
' handle result
End Sub)
IronOCRのアプローチ
IronOCRのAPIは一般的なケースを1行に圧縮します。IronTesseractクラスはスレッドセーフで再インスタンス化せずにスレッドを越えて再利用可能です:
// IronOCR: basic text extraction with confidence
var result = new IronTesseract().Read("document.jpg");
string text = result.Text;
double confidence = result.Confidence; // single value, no average needed
// IronOCR: basic text extraction with confidence
var result = new IronTesseract().Read("document.jpg");
string text = result.Text;
double confidence = result.Confidence; // single value, no average needed
Imports IronOcr
' IronOCR: basic text extraction with confidence
Dim result = New IronTesseract().Read("document.jpg")
Dim text As String = result.Text
Dim confidence As Double = result.Confidence ' single value, no average needed
画像からテキストを読み取る場合、手順の簡素化はバッチ処理のシナリオで最も顕著に現れる。 単一のIronTesseractインスタンスがすべての並列処理を処理します:
// IronOCR: parallel batch — single shared instance, thread-safe
var ocr = new IronTesseract();
Parallel.ForEach(imagePaths, path =>
{
var result = ocr.Read(path);
// handle result
});
// IronOCR: parallel batch — single shared instance, thread-safe
var ocr = new IronTesseract();
Parallel.ForEach(imagePaths, path =>
{
var result = ocr.Read(path);
// handle result
});
Imports IronOcr
Imports System.Threading.Tasks
' IronOCR: parallel batch — single shared instance, thread-safe
Dim ocr As New IronTesseract()
Parallel.ForEach(imagePaths, Sub(path)
Dim result = ocr.Read(path)
' handle result
End Sub)
IronOCR は、構造化データ (単語の位置、行境界、段落構造) に対して、 OcrResult 参照を介して直接オブジェクト モデルを公開します。 Aspose.OCRはRecognitionAreasRectanglesを通じて単語レベルのデータにアクセスし、個別の信頼度値を持つ単語レベルのコレクションではなく、領域レベルのジオメトリを提供します。
APIマッピングリファレンス
| Aspose.OCR | IronOCR相当値 |
|---|---|
AsposeOcr |
IronTesseract |
RecognitionSettings |
OcrInput + IronTesseractプロパティ |
DocumentRecognitionSettings |
LoadPdfPages |
api.RecognizeImage(path, settings) |
ocr.Read(input) |
api.RecognizePdf(path, settings) |
ocr.Read(input) |
result.RecognitionText |
result.Text |
result.RecognitionAreasConfidence.Average() |
result.Confidence |
RecognitionResult |
OcrResult |
Language.Eng |
OcrLanguage.English |
settings.AutoSkew = true |
input.Deskew() |
PreprocessingFilter.AutoDenoising() |
input.DeNoise() |
PreprocessingFilter.ContrastCorrectionFilter() |
input.Contrast() |
PreprocessingFilter.Binarize() |
input.Binarize() |
PreprocessingFilter.Threshold(value) |
input.Binarize() (自動しきい値) |
PreprocessingFilter.AutoSkew() |
input.Deskew() |
PreprocessingFilter.Median() |
input.DeNoise() |
PreprocessingFilter.Scale(factor) |
input.Scale(percent) |
PreprocessingFilter.Invert() |
input.Invert() |
PreprocessingFilter.Rotate(angle) |
input.Rotate(angle) |
settings.RecognitionAreas = new List<Rectangle> { region } |
input.LoadImage(path, cropRectangle) |
api.SaveMultipageDocument(path, SaveFormat.Pdf, results) |
result.SaveAsSearchablePdf(path) |
api.PreprocessImage(path, filters) |
input.GetPages()[0].SaveAsImage(path) |
api.CalculateSkew(imagePath) |
input.Deskew() (検出された角度を自動適用) |
new Aspose.Pdf.Document(path, password) + ページ変換 |
input.LoadPdf(path, Password: password) |
settings.ThreadsCount = n |
デフォルトでスレッドセーフ、Parallel.ForEachがサポートされる |
result.RecognitionAreasRectangles |
result.Words (X, Y, Width, Height, Confidenceを含む) |
チームがAspose.OCRからIronOCRへの移行を検討する場合
年間購読料が予算項目になるとき
経理部門がOCRのライセンス更新が毎年行われる理由を問い始めた時点で、サブスクリプションから永久ライセンスへの切り替えが行われます。 個別の開発者レベルでは$783/年/開発者が注目されるラインアイテムです。 大規模なチームにとっては、ヘッドカウントとともに累積します。 Aspose.OCRを2〜3年使用しているチームは、すでにIronOCRの一度きりのProfessional費用$2,999よりも支払っているとよく計算しており、切り替えの決定は簡単になります。
PDF暗号化要件が遅れて表示される場合
文書処理パイプラインは、多くの場合、画像のスキャンやテキストの抽出といったシンプルなものから始まります。 パスワードで保護されたPDFファイルは、コンプライアンスチームまたは法務チームがすべての文書エクスポートを暗号化する必要があると指定した場合に、後から届きます。 その時点で、Aspose.OCRの顧客は、復号化のためにAspose.PDFが必要であることに気づきます。 つまり、2つ目の製品を評価し、2つ目のサブスクリプションを購入し、OCR呼び出しの前に復号化ステップを組み込み、2つのライセンス更新を管理する必要があるということです。 Aspose.OCRに既に投資しているチームは、この複雑さを吸収できる場合がある。 評価の初期段階にあるチームは、暗号化されたPDFをネイティブに処理できるライブラリを最初から選択する方が容易だと感じている。
前処理の調整がサポートの負担になる場合
Aspose.OCR の手動フィルタ モデルは、入力ドキュメントが均一である場合(同じスキャナ、同じ設定、同じドキュメント タイプの場合)にうまく機能します。 生産ドキュメントのパイプラインは、めったに均一ではない。 顧客から送られてくる請求書は、スマートフォンの写真、ブラウザのスクリーンショット、ファックスで送られてきたコピー、カラーコピーされた契約書など、様々な形態で届く。 画像の種類ごとに、最適なフィルターの組み合わせが異なります。 多様な入力タイプに対応するAspose.OCR統合を保守するチームは、多くの場合、ドキュメントタイプごとのフィルタ構成レジストリと、既知のパターンから外れる画像タイプのためのサポートキューを抱えることになります。 スプリント計画においてその保守負担が明らかになった場合、自動前処理によってその問題が解消されるかどうかという疑問は、真剣に検討する価値がある。
開発者オンボーディングでAPIの重みが強調される場合
通話ごとの冗長性の差は小さいが、オンボーディングの段階では顕著になる。 チームに加わる新しいエンジニアは、4つの異なる構成オブジェクト、画像認識とPDF認識のエントリポイントの違い、0ベースのページインデックス規則、および配列ベースの信頼度モデルを理解する必要があります。 これらは難しい概念ではないが、最初の機能をリリースする前に理解しておくべき内容がかなり多い。 OCR関連のコードへの貢献の障壁を下げることを重視するチームは、よりシンプルなIronOCR APIによって、"エンジニアがチームに参加"してから"エンジニアがOCR機能をリリース"するまでの時間が大幅に短縮されることを実感しています。
DockerまたはLinuxデプロイメントが導入される場合
Aspose.OCRのネイティブライブラリの依存関係は、Docker環境では特定の構成が必要です。 通常、違いはDockerfileの数行といくつかのライブラリのインストールにあるが、これはCIパイプラインのセットアップやステージング環境のプロビジョニング中に発生する、文書化されていない手順である。 IronOCRの自己完結型パッケージは、標準的な.NETベースイメージと単一のシステムライブラリのインストールでLinux上にデプロイされます。 導入時の摩擦がエンジニアリング時間のコストにつながるチームにとって、この簡素化は重要です。
一般的な移行の考慮事項
名前空間とパッケージの交換
パッケージ交換は簡単です:dotnet add package IronOcr。 using IronOcr;になります。 ライセンスのアクティベーションが、Aspose.OCR.Licenseに基づくアプローチを置き換えます:
// Remove Aspose license initialization
// var license = new Aspose.OCR.License();
// license.SetLicense("Aspose.OCR.lic");
// Add IronOCR license at application startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or from environment variable (recommended for production)
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
// Remove Aspose license initialization
// var license = new Aspose.OCR.License();
// license.SetLicense("Aspose.OCR.lic");
// Add IronOCR license at application startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
// Or from environment variable (recommended for production)
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
' Remove Aspose license initialization
' Dim license As New Aspose.OCR.License()
' license.SetLicense("Aspose.OCR.lic")
' Add IronOCR license at application startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"
' Or from environment variable (recommended for production)
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE")
IronTesseractのセットアップガイドでは、 ASP.NET、Azure Functions、およびWindowsサービスホストにおけるライセンスの配置について説明しています。
ページインデックス規則
Aspose.OCRはDocumentRecognitionSettings.StartPageで0ベースのページインデキシングを使用します。 IronOCRのLoadPdfPagesは1ベースのインデクシングを使用します。 変換は機械的です:1をすべての既存のStartPage値に加算し、終端ページの計算を調整します。 これは、AsposeからIronOCRへの移行で最もよく発生するオフバイワンバグであり、複数ページのPDFに対して的を絞ったテストを行う価値があります。
// Aspose.OCR: 0-based — first page is StartPage = 0, PagesNumber = 1
var settings = new DocumentRecognitionSettings { StartPage = 0, PagesNumber = 5 };
// IronOCR: 1-based — first page is page 1
using var input = new OcrInput();
input.LoadPdfPages("document.pdf", 1, 5); // pages 1 through 5
// IronOCR: non-contiguous pages
input.LoadPdfPages("document.pdf", new[] { 1, 3, 7 }); // specific page numbers
// Aspose.OCR: 0-based — first page is StartPage = 0, PagesNumber = 1
var settings = new DocumentRecognitionSettings { StartPage = 0, PagesNumber = 5 };
// IronOCR: 1-based — first page is page 1
using var input = new OcrInput();
input.LoadPdfPages("document.pdf", 1, 5); // pages 1 through 5
// IronOCR: non-contiguous pages
input.LoadPdfPages("document.pdf", new[] { 1, 3, 7 }); // specific page numbers
Imports Aspose.OCR
Imports IronOcr
' Aspose.OCR: 0-based — first page is StartPage = 0, PagesNumber = 1
Dim settings As New DocumentRecognitionSettings With {.StartPage = 0, .PagesNumber = 5}
' IronOCR: 1-based — first page is page 1
Using input As New OcrInput()
input.LoadPdfPages("document.pdf", 1, 5) ' pages 1 through 5
' IronOCR: non-contiguous pages
input.LoadPdfPages("document.pdf", {1, 3, 7}) ' specific page numbers
End Using
PDF入力ガイドでは、連続していないページ配列を含む、すべてのページ選択方法を網羅しています。
信頼度値の解釈
Aspose.OCRは通常0から1の間の値を平均する領域ごとの浮動小数点数配列としてRecognitionAreasConfidenceを返しますが、バージョンによってスケーリングは異なります。 IronOCRは0〜100の単一のダブルパーセンテージとしてresult.Confidenceを返します。 既存のコードが信頼度閾値に基づいて動作を制御する場合は、比較値をそれに応じて調整してください。 単語ごとの詳細な信頼度については、 IronOCRはそれを直接公開します。
// Aspose.OCR: per-region confidence array averaged to a float
float asposeConfidence = result.RecognitionAreasConfidence.Average();
// IronOCR: single overall confidence value
double confidence = result.Confidence; // 0–100
// IronOCR: per-word confidence when granularity is needed
foreach (var word in result.Words)
{
Console.WriteLine($"'{word.Text}': {word.Confidence:F1}%");
}
// Aspose.OCR: per-region confidence array averaged to a float
float asposeConfidence = result.RecognitionAreasConfidence.Average();
// IronOCR: single overall confidence value
double confidence = result.Confidence; // 0–100
// IronOCR: per-word confidence when granularity is needed
foreach (var word in result.Words)
{
Console.WriteLine($"'{word.Text}': {word.Confidence:F1}%");
}
Imports System
Imports System.Linq
' Aspose.OCR: per-region confidence array averaged to a float
Dim asposeConfidence As Single = result.RecognitionAreasConfidence.Average()
' IronOCR: single overall confidence value
Dim confidence As Double = result.Confidence ' 0–100
' IronOCR: per-word confidence when granularity is needed
For Each word In result.Words
Console.WriteLine($"'{word.Text}': {word.Confidence:F1}%")
Next
信頼度スコアの使い方ガイドでは、文書検証ワークフローにおいて、文字単位、単語単位、行単位の信頼度値を使用する方法について説明します。
前処理パイプライン変換
特定の文書タイプに合わせて調整された Aspose.OCR の前処理パイプラインを使用している場合、フィルタとメソッドのマッピングは直接行われます。 それぞれのOcrInputインスタンスメソッドにマップされます。 自動前処理によって既に許容できる結果が得られている文書については、明示的なフィルターを完全に削除し、結果を精度基準値と比較してテストすることができます。
// Aspose.OCR preprocessing pipeline
var filters = new PreprocessingFilter();
filters.Add(PreprocessingFilter.AutoSkew());
filters.Add(PreprocessingFilter.ContrastCorrectionFilter());
filters.Add(PreprocessingFilter.AutoDenoising());
filters.Add(PreprocessingFilter.Binarize());
// IronOCR equivalent
using var input = new OcrInput();
input.LoadImage("document.jpg");
input.Deskew();
input.Contrast();
input.DeNoise();
input.Binarize();
var result = new IronTesseract().Read(input);
// Aspose.OCR preprocessing pipeline
var filters = new PreprocessingFilter();
filters.Add(PreprocessingFilter.AutoSkew());
filters.Add(PreprocessingFilter.ContrastCorrectionFilter());
filters.Add(PreprocessingFilter.AutoDenoising());
filters.Add(PreprocessingFilter.Binarize());
// IronOCR equivalent
using var input = new OcrInput();
input.LoadImage("document.jpg");
input.Deskew();
input.Contrast();
input.DeNoise();
input.Binarize();
var result = new IronTesseract().Read(input);
Imports Aspose.OCR
Imports IronOcr
' Aspose.OCR preprocessing pipeline
Dim filters As New PreprocessingFilter()
filters.Add(PreprocessingFilter.AutoSkew())
filters.Add(PreprocessingFilter.ContrastCorrectionFilter())
filters.Add(PreprocessingFilter.AutoDenoising())
filters.Add(PreprocessingFilter.Binarize())
' IronOCR equivalent
Using input As New OcrInput()
input.LoadImage("document.jpg")
input.Deskew()
input.Contrast()
input.DeNoise()
input.Binarize()
Dim result = New IronTesseract().Read(input)
End Using
IronOCRの追加機能
上記で比較対象とした領域以外にも、 IronOCRにはAspose.OCRのコア機能の範囲外となる機能が含まれています。
- OCR中のバーコード読み取り:
ocr.Configuration.ReadBarCodes = trueを設定し、1回のパスでテキストと一緒にバーコードが検出されます。 バーコードOCRの例では、 QRコード、Code 128、およびテキストが同じページに共存する、複数の文書が混在する処理を示しています。 - 領域ベースのOCR:
CropRectangleを渡し、ドキュメントの名前付き領域にもっぱら認識を制限します。例では、請求書番号が常に座標(200, 100)から(400, 130)にある固定形式のフォームに便利です。 地域作物の例を参照してください。 - 非同期OCR:
IronTesseract.ReadAsync()は非同期ASP.NETコントローラと統合され、ブロックされません。 非同期OCRガイドでは、高スループットのWebサービスにおけるタスク構成パターンについて解説しています。 -進捗状況の追跡:長時間実行される複数ページのPDFジョブは、UIフィードバックのための進捗状況イベントを公開します。 進捗状況追跡ガイドでは、 Windows FormsアプリケーションとWPFアプリケーションのイベント購読パターンを示しています。 -手書き文字認識:手書き文書の処理は、連続したストロークに合わせて調整された明示的な前処理によって効果を発揮します。 -特殊な文書の種類:専用ガイドでは、パスポートの読み取り、 MICR/小切手の読み取り、ナンバープレートの認識について説明しています。
.NETの互換性と将来の準備
IronOCRは.NET Standard 2.0以降を対象としており、 .NET Framework 4.6.2以降、 .NET Core 2.0以降、 .NET 5、6、7、8、9をカバーしています。このライブラリは、Windows x64/x86、Linux x64、macOS向けのクロスプラットフォームバイナリを、すべて同じNuGetパッケージに同梱しています。 デプロイガイドでは、プラットフォーム固有のNuGetパッケージのバリアントを必要とせずに、 Dockerコンテナ、 Azure App Service 、 AWS Lambda 、およびLinuxサーバーについて説明しています。 Aspose.OCRは同じ.NETバージョン範囲と類似のプラットフォームターゲットをカバーしているため、互換性だけでは差別化要因にはなりません。 両ライブラリとも、最新 for .NET開発パターンをサポートしています。 重要なのは、IronOCRのシングルパッケージ展開モデルにより、 .NETのバージョンが進歩しても、コンテナ化されたビルドやクラウドホスト型ビルドがシンプルに保たれることです。チームが.NET 8から.NET 10に移行する際に、更新する必要のあるマルチパッケージの依存関係グラフは存在しません。
結論
Aspose.OCRとIronOCRの比較は、主に2つの具体的な相違点に集約される。 最初はコスト構造です:Aspose.OCRの開発者一人あたりの年間サブスクリプションモデルは、増加するエンジニアリングチームにとって何年も経過する中で大きく累積しますが、IronOCRの$2,999 Professionalライセンスは更新の義務なく同じチームを一度きりでカバーします。 それは理論上の利点ではなく、実際の予算に影響を与える現実的な数値です。 2つ目の問題点は操作性に関するものです。Aspose.OCRでは、認識呼び出しを行う前に、各ドキュメントの種類を診断し、適切な前処理フィルターを宣言する必要がありますが、 IronOCRは自動的に修正を適用し、自動動作を拡張する必要がある場合に明示的なフィルターを追加できます。
どちらの図書館も実質的な独占状態にはない。 Aspose.OCRはメインパッケージで130以上の言語に対応していますが、 IronOCRは言語ごとに個別のNuGetパックを使用するため、固定された既知の言語セットをカバーする多言語展開の場合、セットアップがわずかに簡単になります。 Aspose.OCRのSaveMultipageDocumentはWord出力をネイティブにサポートしますが、IronOCRは非PDFフォーマット出力のためにhOCRを経由します。 これらは、特定のワークフローにとって重要な、現実的な違いです。
Aspose.OCRが再現できないのは、暗号化されたPDFの使い勝手です。 パスワードで保護されたドキュメントを開くために別途Aspose.PDFのサブスクリプションが必要になるというのは、暗号化されたドキュメントのやり取りが標準となっているEnterprise環境においては、ワークフローを著しく阻害する要因となる。 IronOCRのinput.LoadPdf("file.pdf", Password: "secret")に基づいてパッケージ以外には何も必要ありません。 PDF暗号化が最重要要件となるチーム(そしてほとんどのEnterprise文書処理パイプラインは最終的にこれに直面する)にとって、このギャップは決定的な問題となる。
2026年に新しいOCR統合を検討しているチームにとって、永続的な価格設定、自動前処理、ネイティブな暗号化PDFサポートの組み合わせにより、 IronOCRは一般的な.NETドキュメント処理において、よりスムーズな選択肢となります。 Aspose.OCRは、Asposeエコシステムに既に投資しているチームにとって、均一でスキャン状態の良い文書を処理し、前処理要件が予測可能な場合、依然として有力な選択肢となります。 しかし、既存の投資なしにライブラリを選択するチームにとっては、数学的な計算とAPIの両方が同じ方向性を示している。
よくある質問
Aspose.OCR for .NETとは何ですか?
Aspose.OCR for .NETは、開発者や企業が画像や文書からテキストを抽出するために使用するOCRソリューションです。これは.NETアプリケーション開発のためのIronOCRと共に評価されるいくつかのOCRオプションの一つです。
IronOCRは.NET開発者向けAspose.OCR for .NETと比較してどうですか?
IronOCRはNuGetネイティブ for .NET OCRライブラリで、.CoreエンジンとしてIronTesseractを使用しています。Aspose.OCR for .NETと比較して、よりシンプルなデプロイメント(SDKインストーラーなし)、定額制の価格設定、COMインターオプやクラウド依存のないクリーンなC# APIを提供します。
IronOCRはAspose.OCR for .NETよりセットアップが簡単ですか?
IronOCRは単一のNuGetパッケージでインストールされます。SDKインストーラー、ライセンスファイルのコピー、COMコンポーネントの登録、ランタイムバイナリの管理は必要ありません。OCRエンジン全体がパッケージにバンドルされています。
Aspose.OCR for .NETとIronOCRにはどのような精度の違いがありますか?
IronOCRは、標準的なビジネス文書、請求書、領収書、スキャンしたフォームに対して高い認識精度を達成します。高度に劣化した文書や一般的でないスクリプトの場合、精度はソースの品質によって異なります。IronOCRは低品質入力の認識を向上させる画像前処理フィルターを含んでいます。
IronOCRはPDFテキスト抽出をサポートしていますか?
IronOCRは、ネイティブPDFとスキャンしたPDFイメージの両方から、一回の呼び出しでテキストを抽出します。また、複数ページのTIFFファイル、画像、ストリームもサポートします。スキャンしたPDFの場合、OCRはページごとに適用され、ページごとの結果オブジェクトを持ちます。
Aspose.OCR for .NETライセンスは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はAspose.OCRと違い、Dockerやコンテナでのデプロイに適していますか?
IronOCRはNuGetパッケージによってDockerコンテナで動作します。ライセンスキーは環境変数で設定します。OCRエンジン自体にはライセンスファイル、SDKパス、ボリュームマウントは必要ありません。
Aspose.OCRと比較して、購入前にIronOCRを試すことはできますか?
IronOCRのトライアルモードでは、ドキュメントを処理し、出力に透かしをオーバーレイしたOCR結果を返します。ライセンスを購入する前に、ご自身の文書で精度を確認することができます。
IronOCRはテキスト抽出とバーコード読み取りをサポートしていますか?
IronOCRはテキスト抽出とOCRに重点を置いています。バーコード読み取りについては、Iron SoftwareはIronBarcodeをコンパニオンライブラリとして提供しています。どちらも個別に、あるいはIron Suiteのバンドルとして提供されています。
Aspose.OCR for .NETからIronOCRへの移行は簡単ですか?
Aspose.OCR for .NETからIronOCRへの移行は通常、初期化シーケンスをIronTesseractのインスタンス生成に置き換え、COMライフサイクル管理を削除し、APIコールを更新します。ほとんどの移行はコードの複雑さを大幅に軽減します。

