在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不需要的互動元素,並減少文件複雜性以加快處理速度。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 6,136,090 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在滾動?

想要快速證明? PM > Install-Package IronOcr
執行範例 觀看您的圖像轉變為可搜尋文字。