Festgefahrene Prozesse beim Laden von PDF-Formularen auf Linux
Auf Linux (zum Beispiel Debian mit .NET 8), kann OcrInput.LoadPdf() unendlich lang hängen, wenn bestimmte PDF-Dateien geladen werden, die interaktive Formularfelder enthalten. Der Aufruf kehrt nie zurück und der Prozess steckt fest.
Process hangs at OcrInput.LoadPdf() and never proceeds.
Die interaktive Formularebene in einigen PDFs ist der Auslöser. Die gleiche Datei lädt korrekt unter Windows und andere Formular-PDFs können auch unter Linux ordnungsgemäß geladen werden, was das Problem inkonsistent macht und schwer einzufangen ist, bevor es in der Produktion auftritt.
Lösung
Flachlegen Sie das PDF, bevor Sie es an IronOCR übergeben. Das Flachlegen konvertiert jedes Formularfeld in statischen Seiteninhalt und entfernt die interaktive Ebene, die für das Hängenbleiben verantwortlich ist.
1. Flachlegen des PDF mit IronPDF
Laden Sie die Quelldatei, flachen Sie sie ab und speichern Sie eine statische Kopie:
using IronPdf;
var pdf = PdfDocument.FromFile("ocrpdfform.pdf");
pdf.Flatten();
pdf.SaveAs("flattened_ocrpdfform.pdf");
using IronPdf;
var pdf = PdfDocument.FromFile("ocrpdfform.pdf");
pdf.Flatten();
pdf.SaveAs("flattened_ocrpdfform.pdf");
Imports IronPdf
Dim pdf = PdfDocument.FromFile("ocrpdfform.pdf")
pdf.Flatten()
pdf.SaveAs("flattened_ocrpdfform.pdf")
Flatten() entfernt die interaktiven Formularfelder und hinterlässt ein einfaches Dokument, das IronOCR ohne Verzögerung öffnen kann.
2. Führen Sie OCR auf der abgeflachten Datei aus
Weisen Sie LoadPdf() auf die abgeflachte Kopie hin und lesen Sie dann wie gewohnt:
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("flattened_ocrpdfform.pdf"); // No longer stuck
var ocr = new IronTesseract();
var result = ocr.Read(ocrInput);
Console.WriteLine(result.Text);
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("flattened_ocrpdfform.pdf"); // No longer stuck
var ocr = new IronTesseract();
var result = ocr.Read(ocrInput);
Console.WriteLine(result.Text);
Imports IronTesseract
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("flattened_ocrpdfform.pdf") ' No longer stuck
Dim ocr As New IronTesseract()
Dim result = ocr.Read(ocrInput)
Console.WriteLine(result.Text)
End Using
Abgesehen davon, dass das Hängenbleiben verhindert wird, sorgt das Flachlegen für konsistentes Verhalten über Plattformen hinweg, eliminiert interaktive Elemente, die OCR nicht benötigt, und reduziert die Dateikomplexität für schnellere Verarbeitung.

