在Linux上載入PDF表單時卡住的進程
This article was translated from English: Does it need improvement?
Translated
View the article in English
在Linux上(例如,搭載.NET 8的Debian),OcrInput.LoadPdf() 載入含有互動表單字段的某些PDF文件時可能會無限掛起。 調用永遠不返回,進程停滯。
Process hangs at OcrInput.LoadPdf() and never proceeds.
某些PDF中的互動層是觸發因素。 同一文件在Windows上載入正常,其他表單PDF在Linux上也可能載入正常,這使得問題不一致且難以在生產中出現之前檢測。
解決方案
在將PDF傳遞給IronOCR之前使其平坦化。 平坦化將每個表單欄位轉換為靜態頁面內容,移除導致掛起的互動層。
1. 使用IronPDF平坦化PDF
載入源文件,使其平坦化並保存靜態副本:
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() 移除了互動表單字段,留下了一個IronOCR可以不會停頓地開啟的純文件。
2. 針對平坦化文件運行OCR
將LoadPdf() 指向已壓平的副本,然後如常讀取:
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
除了防止掛起之外,平坦化還提供跨平台的一致行為,丟棄OCR不需要的互動元素,並減少文件複雜性以加快處理速度。
準備開始了嗎?
Nuget 下載 6,136,090 | 版本: 2026.7 剛剛發布

