Processus bloqués lors du chargement de formulaires PDF sur Linux
Sur Linux (par exemple, Debian avec .NET 8), OcrInput.LoadPdf() peut se bloquer indéfiniment lors du chargement de certains fichiers PDF contenant des champs de formulaire interactifs. L'appel ne revient jamais et le processus se bloque.
Process hangs at OcrInput.LoadPdf() and never proceeds.
La couche de formulaire interactif dans certains PDFs est le déclencheur. Le même fichier se charge correctement sur Windows, et d'autres PDF de formulaire peuvent aussi se charger correctement sur Linux, ce qui rend le problème incohérent et difficile à attraper avant qu'il ne se manifeste en production.
Solution
Aplatissez le PDF avant de le passer à IronOCR. L'aplatissement convertit chaque champ de formulaire en contenu de page statique, supprimant la couche interactive responsable du blocage.
1. Aplatissez le PDF avec IronPDF
Chargez le fichier source, aplatissez-le et enregistrez une copie statique :
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() supprime les champs de formulaire interactifs, laissant derrière un document simple qu'IronOCR peut ouvrir sans se bloquer.
2. Exécutez l'OCR sur le fichier aplati
Pointez LoadPdf() vers la copie aplatie, puis lisez comme d'habitude :
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
En plus de prévenir le blocage, l'aplatissement assure un comportement cohérent sur les plateformes, élimine les éléments interactifs dont l'OCR n'a pas besoin et réduit la complexité du fichier pour un traitement plus rapide.

