IRONSOFTWAREHOME

Obsluga duzych plikow PDF w IronOCR

Curtis Chau
Curtis Chau
Updated: 29 czerwca 2026

Uruchamianie OCR na duzych, wielostronicowych plikach PDF moze powodowac skoki pamieci i zatrzymanie procesu. Zwykle sprawca jest ladowanie kazdej strony do pamieci naraz.

System.OutOfMemoryException
Text

OcrInput.LoadPdf("large.pdf") czyta wszystkie strony za jednym razem. System obrazowania IronOCR nastepnie jednoczesnie renderuje kazda strone, a poniewaz DPI domyslnie ustawia sie na 200, uzycie pamieci rosnie szybko. W duzym dokumencie oznacza to OutOfMemoryException lub zablokowanie zasobow.

Rozwiązanie

Rozwiazanie to przetwarzanie pliku PDF strona po stronie i utrzymywanie DPI na renderowaniu na poziomie jak najnizszym z zachowaniem jakosci tekstu.

1. Uzyskaj liczbe stron

Otworz dokument z IronPdf.PdfDocument (lub inna biblioteka PDF), aby sprawdzic, ile ma stron.

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

2. Zaladuj jedna strone na raz

Petla przez strony i laduj kazda oddzielnie z OcrInput.LoadPdfPage("file.pdf", pageIndex, dpi). Gdzie jakosc wizualna utrzymuje sie, obnizaj DPI do 80, aby zachowac pamiec.

3. Czytaj i łacz

Przekaż każdą stronę wejściową do IronTesseract.Read() i dołącz wynik do 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#

using na każdym OcrInput zwalnia dane obrazu strony przed następną iteracją, dzięki czemu pamięć pozostaje płaska w całej pętli zamiast rosnąć wraz z liczbą stron.

Opcja: Najpierw skompresuj PDF

Dla bardzo złożonych lub ciężkich plików przetwarzanie stron może wciąż sprawiać trudności. Skompresuj PDF za pomocą API Kompresji w IronPDF przed OCR, aby zmniejszyć ilość danych obrazu, które IronOCR musi obsłużyć. Najwięcej korzyści przynosi to w przypadku zeskanowanych lub ciężkich dokumentów.

Kompresuj bezpośrednio do strumienia, a następnie załaduj ten strumień do 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#

Gdy PDF zawiera osadzone obrazy, obniż JpegQuality podczas kompresji, aby jeszcze bardziej zmniejszyć dane:

var pdf = PdfDocument.FromFile(@"D:\hugePdf.pdf");
var stream = pdf.CompressPdfToStream(JpegQuality: 75, CompressStructTree: true);
C#
Ostrzeżenie: Czy można ponownie używać tego samego MemoryStream w obrębie iteracji pętli? Zresetuj jego pozycję do 0 przed każdym odczytem. Strumień zostaje skonsumowany po odczycie, więc kolejny odczyt nie powiedzie się, jeśli pozycja nie zostanie zresetowana.

Wskazówki dotyczące debugowania

  • Obniź DPI: wartości w 80 do 100 znacznie obniżają zużycie pamięci, gdy tekst jest nadal czytelny.
  • Unikaj LoadPdf() w dużych plikach: czytaj cały dokument na raz tylko wtedy, gdy naprawdę jest mały.
  • Zwolnienie wczesne: owiń OcrInput w instrukcje using, aby pamięć była zwalniana między stronami.
  • Równoleglizuj ostrożnie: uruchamiaj strony jednocześnie tylko wtedy, gdy maszyna ma wolną pamięć i CPU; może się nie udać dla dużych PDF.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 6,236,385Wersja:2026.9właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz Przeglądaj i szukaj „IronOCR”
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.9

lub pobierz Instalator Windows tutaj.

  1. Pobierz i rozpakuj IronOCR do lokalizacji, takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań Visual Studio kliknij prawym przyciskiem myszy Odwołania. Wybierz Przeglądaj, „IronOCR.dll”

Licencje od 749 USD

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta