Zawieszone procesy ładujące formularze PDF na Linux

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

Na Linux (na przykład Debian z .NET 8), OcrInput.LoadPdf() może zawiesić się bez końca podczas ładowania niektórych plików PDF, które zawierają interaktywne pola formularzy. Żądanie nigdy nie zwraca odpowiedzi i proces staje.

Process hangs at OcrInput.LoadPdf() and never proceeds.

Warstwa interaktywnego formularza w niektórych PDF jest wyzwalaczem. Plik ten samodzielnie ładowany jest poprawnie na Windows, a inne formularze PDF mogą również zostać załadowane poprawnie na Linux, co sprawia, że problem jest niekonsekwentny i trudny do uchwycenia, zanim pojawi się w produkcji.

Rozwiązanie

Spłasz PDF przed przekazaniem go do IronOCR. Spłaszczenie konwertuje każde pole formularza do statycznej zawartości strony, usuwając interaktywną warstwę odpowiedzialną za wieszanie.

1. Spłaszcz PDF za pomocą IronPDF

Załaduj plik źródłowy, spłaszcz go i zapisz statyczną kopię:

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() usuwna interaktywne pola formularzy, pozostawiając pusty dokument, który IronOCR może otworzyć bez zawieszania się.

2. Uruchom OCR na spłaszczonym pliku

Skieruj LoadPdf() na spłaszczoną kopię, a następnie odczytaj jak zwykle:

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

Oprócz zapobiegania zawieszaniu, spłaszczenie zapewnia spójne zachowanie na różnych platformach, usuwa interaktywne elementy, których OCR nie potrzebuje, i redukuje złożoność pliku, przyspieszając jego przetwarzanie.

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ę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 6,136,090 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.