IRONSOFTWAREHOME

IronOCRでの大きなPDFファイルの取り扱い

Curtis Chau
Curtis Chau
Updated: 2026年6月29日

複数ページの大きなPDFにOCRを実行すると、メモリが急増し、プロセスがクラッシュする可能性があります。 通常の原因は、すべてのページを一度にメモリに読み込むことです。

System.OutOfMemoryException
Text

OcrInput.LoadPdf("large.pdf")は一度にすべてのページを読み取ります。 IronOCRのイメージングシステムはすべてのページを同時にレンダリングし、DPIがOutOfMemoryExceptionまたはリソースデッドロックを引き起こすことを意味します。

解決策

解決策はPDFを1ページずつ処理し、レンダリングDPIをテキスト品質が許す限り低く保つことです。

1. ページ数を取得する

文書をIronPdf.PdfDocument(または他の任意のPDFライブラリ)で開き、ページ数を読み取ります。

using var pdf = IronPdf.PdfDocument.FromFile(pdfPath);
var pageCount = pdf.PageCount;
C#

2. 一度に1ページだけ読み込む

ページをループし、OcrInput.LoadPdfPage("file.pdf", pageIndex, dpi)を使用して各ページを個別に読み込みます。 視覚品質が維持されている場合は、メモリを節約するために、DPIを80まで下げます。

3. 読み取りと連結

各1ページ入力をStringBuilderに追加します。

var ocr = new IronTesseract();
var pdfPath = "large.pdf";
using var pdf = IronPdf.PdfDocument.FromFile(pdfPath);
var pageCount = pdf.PageCount;
var textBuilder = new StringBuilder();
for (int i = 0; i < pageCount; i++)
{
    using var input = new OcrInput();
    input.LoadPdfPage(pdfPath, i, 80);
    var result = ocr.Read(input);
    textBuilder.Append(result.Text);
    textBuilder.Append(' '); // Add space between pages
}
Console.WriteLine(textBuilder.ToString().Trim());
C#

OcrInputがページの画像データを解放するため、ページ数でメモリが増加せず、ループ中もメモリが平坦になります。

オプション: まずPDFを圧縮する

非常に複雑または画像が多いファイルでは、ページごとのループがまだ困難になることがあります。 IronPDFのCompress APIを使用してOCR前にPDFを圧縮し、IronOCRが処理する画像データを削減します。 これは特にスキャンされたまたは画像が多いドキュメントで効果を発揮します。

直接ストリームに圧縮し、そのストリームをOcrInputにロードします。

var pdf = PdfDocument.FromFile(pdfPath);
var stream = pdf.CompressPdfToStream(CompressStructTree: true);
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadPdfPage(stream, 1);
C#

PDFに埋め込まれた画像がある場合、圧縮時にJpegQualityを下げてデータをさらに縮小します。

var pdf = PdfDocument.FromFile(@"D:\hugePdf.pdf");
var stream = pdf.CompressPdfToStream(JpegQuality: 75, CompressStructTree: true);
C#
警告: ループの反復に同じMemoryStreamを再利用する場合 各読み取り前に位置を0にリセットします。 ストリームは一度読み取られると消費されるため、位置がリセットされていないと読み取りに失敗します。

デバッグのヒント

  • DPIを下げる: 100までの範囲でメモリ使用量を著しく削減しますが、テキストは依然として読みやすいです。
  • **大きなファイルでLoadPdf()を避ける:**本当に小さい場合以外は、ドキュメント全体を一度に読み取らないでください。
  • **早めに開放する:**次のusingを包むことでページ間でメモリが解放されます。
  • **慎重に並列化:**余裕のあるメモリとCPUを持つマシンでのみページを同時実行します; 大きなPDFでは逆効果になることがあります。
Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

準備はできましたか?

Nuget Downloads 6,236,385バージョン:2026.9リリースされたばかり

あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. 「参照」を選択して「IronOCR」を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

または、Windowsインストーラーをこちらからダウンロード。

  1. IronOCRをダウンロードして、ソリューションディレクトリ内の~/Libsなどの場所に解凍します
  2. Visual Studioソリューションエクスプローラーで、リファレンスを右クリックします。「参照」、「IronOCR.dll」を選択

$999からのライセンス

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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。