Festgefahrene Prozesse beim Laden von PDF-Formularen auf Linux

This article was translated from English: Does it need improvement?
Translated
View the article in English

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")
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 6,136,090 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.