Processos Travados Carregando Formulários PDF no Linux
No Linux (por exemplo, Debian com .NET 8), OcrInput.LoadPdf() pode ficar pendurado indefinidamente ao carregar certos arquivos PDF que contêm campos de formulário interativos. A chamada nunca retorna e o processo para.
Process hangs at OcrInput.LoadPdf() and never proceeds.
A camada de formulário interativa em alguns PDFs é o gatilho. O mesmo arquivo carrega corretamente no Windows, e outros PDFs de formulário podem carregar bem no Linux também, o que torna o problema inconsistente e difícil de detectar antes que apareça na produção.
Solução
Achate o PDF antes de passá-lo para o IronOCR. Achatamento converte cada campo de formulário em conteúdo de página estático, removendo a camada interativa responsável pela parada.
1. Achatar o PDF com IronPDF
Carregue o arquivo de origem, achate-o e salve uma cópia estática:
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() remove os campos de formulário interativos, deixando para trás um documento simples que o IronOCR pode abrir sem parar.
2. Executar OCR no arquivo achatado
Aponte LoadPdf() para a cópia achatada e leia como de costume:
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
Além de prevenir a parada, o achatamento dá comportamento consistente em todas as plataformas, elimina os elementos interativos que o OCR não necessita e reduz a complexidade do arquivo para um processamento mais rápido.

