Processos Travados Carregando Formulários PDF no Linux

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

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

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

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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Baixar 6,136,090 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.