使用 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 引擎没有看到可作为表格边界处理的连续轮廓。 检测不到 TablesTables.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 调用是可选的; 它允许您检查膨胀图像以确认边界如预期关闭。

膨胀后表格,点状边框合并为实线

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 6,136,090 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronOcr
运行示例 观看您的图像变成可搜索文本。