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,262,020Wersja:2026.9właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
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.

OR
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 Iron Suite
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja 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