使用ReadDocumentAdvanced檢測點狀邊框表格

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

ReadDocumentAdvanced 一個接一個地提取表格資料,但無法檢測邊框為虛線或點線的表格(例如,border: 1px dotted black)。 頁面上的文字可能仍可讀取,但因為引擎從未識別表格,因此嘗試存取表格物件失敗。

當您在帶有點線邊框的文件上呼叫 ReadDocumentAdvanced 然後讀取其儲存格時,它會引發:

Unhandled exception. System.InvalidOperationException: Sequence contains no elements

點之間的空隙將邊框分割成不連續的段,因此OCR引擎看不到連續的輪廓作為表格邊界。 由於未檢測到 Tables.First() 無法返回任何內容。

解決方案

在處理之前應用 Dilate() 過濾器。 膨脹擴展了圖像中的暗像素,閉合了點之間的間隙,使邊框讀作一條實線。然後引擎可以檢測表格物件並返回其單元。

1. 啟用表格讀取並載入輸入

啟用 ReadDataTables 以便引擎構建結構化的表格輸出,然後載入您的圖像。

var ocr = new IronTesseract();
ocr.Configuration.ReadDataTables = true;
var input = new OcrInput();
input.Load("image-20250408-144240.png");
var ocr = new IronTesseract();
ocr.Configuration.ReadDataTables = true;
var input = new OcrInput();
input.Load("image-20250408-144240.png");
Imports IronTesseract

Dim ocr As New IronTesseract()
ocr.Configuration.ReadDataTables = True
Dim input As New OcrInput()
input.Load("image-20250408-144240.png")
$vbLabelText   $csharpLabel

輸入帶有點線邊框的表格,OCR無法檢測

2. 在讀取前膨脹

在輸入上呼叫 Dilate() 以將點線邊框合併成一條連續的輪廓,然後運行 ReadDocumentAdvanced

input.Dilate();
input.SaveAsImages("export.png", AnyBitmap.ImageFormat.Png);
var res = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(res.Tables.First().CellInfos.First().CellText);
input.Dilate();
input.SaveAsImages("export.png", AnyBitmap.ImageFormat.Png);
var res = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(res.Tables.First().CellInfos.First().CellText);
Dim res = ocr.ReadDocumentAdvanced(input)
input.Dilate()
input.SaveAsImages("export.png", AnyBitmap.ImageFormat.Png)
Console.WriteLine(res.Tables.First().CellInfos.First().CellText)
$vbLabelText   $csharpLabel

Dilate() 將視覺上的點線轉換為引擎可以追蹤的實線邊框,因此 res.Tables 現在被填充,儲存格文字可以清楚讀取。 SaveAsImages 呼叫是可選的; 它讓您檢查膨脹後的圖像以確認邊框是否如預期閉合。

經過 Dilate() 後,點線邊框合併為實線的表格

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
執行範例 觀看您的圖像轉變為可搜尋文字。