[控场AI]
· 3 分钟阅读· 1,556 字

纯经典CV实现PDF表格识别:开源项目Spartan解析

纯经典CV实现PDF表格识别:开源项目Spartan解析

Spartan项目用经典CV技术实现可解释的PDF表格提取,但缺乏基准评估。

Spartan是一个开源PDF表格提取项目,仅使用形态学操作和LSD线段检测等经典计算机视觉技术,无需深度学习模型。它针对有框线表格采用形态学开运算分离表格线,对无框线表格通过文本对齐生成伪边界,再统一进行结构识别。数字PDF直接从文本层提取字符,避免OCR错误;扫描页则用OCR兜底。项目在CPU上运行,速度约0.3-1.5秒/页,所有阈值可检查,最大优势是可解释性和轻量性。但作者坦承倾斜扫描件处理不佳、无框线表格存在误判,且缺乏标准基准评估是最大短板。

引言

PDF表格提取一直是文档智能领域的难点,现有方案大多依赖深度学习模型。但最近一个名为Spartan的开源项目另辟蹊径,仅用经典计算机视觉技术(形态学操作和LSD线段检测)就实现了表格检测与结构识别,在Reddit上引发了讨论。本文对该项目的技术路线、优势与局限进行深度解析。

Reddit原帖截图

技术路线:从形态学到伪边界

Spartan的流水线针对有框线和无框线表格采取了不同策略。对于有框线表格,使用长水平/垂直核进行形态学开运算,分离出表格线,再对线掩膜做轮廓分析定位表格区域。对于无框线表格,则从文本对齐入手:将单词分组为短语,检查连续行之间的左、中、右对齐情况,当足够多的行和列对齐时,在图像上绘制“伪边界”,使后续流程将其视为有框线表格处理。

结构识别:LSD与并查集

结构识别阶段先遮罩文本,再用LSD(Line Segment Detector)检测线段,聚类合并成网格。跨行/跨列单元格通过缺失线段恢复:如果某分隔线在网格某部分缺失,则这些单元格合并(使用并查集算法)。这种思路巧妙地将结构识别转化为线段缺失问题。

形态学开运算是数学形态学中的基本操作,指先对图像进行腐蚀再膨胀,常用于去除小噪点、分离物体或提取特定方向的线条。在表格检测中,使用长水平核进行开运算可以保留水平线而滤除文字和垂直线,反之亦然,从而有效分离表格框架。LSD(Line Segment Detector)是一种基于梯度信息的线段检测算法,能够快速检测图像中的直线段并给出端点、长度和宽度,无需参数调优,对局部对比度变化鲁棒。在表格结构识别中,LSD用于检测单元格之间的分隔线,通过聚类合并短线段形成网格,缺失的线段则指示跨行或跨列单元格。

文本提取:数字PDF优先,OCR兜底

对于数字PDF,字符直接从PDF文本层获取并映射到单元格网格,避免了OCR错误——这对零件号等关键信息尤为重要。OCR(Tesseract或插件引擎)仅用于扫描页。后处理包括嵌套表头检测、键值表与普通表分类、跨页表格合并(通过匹配列宽和表头)。整个流程在CPU上运行,笔记本上约0.3–1.5秒/页,所有决策都可追溯到可检查的阈值。

优势:可解释、轻量、MIT许可

Spartan的最大优势在于可解释性:每个像素阈值都定义在300 DPI并随分辨率缩放,开发者可以检查每个决策。无需GPU,运行速度快,且采用MIT许可,贡献门槛低。项目作者明确表示欢迎贡献,并列出几个方向:倾斜校正(Hough/投影法)、在ICDAR 2013/PubTables-1M/FinTabNet上使用GriTS或TEDS评估(目前缺乏正式基准,是最大短板)、改进无框线表格的换行文本行重建、接入其他OCR引擎(已有插件接口和EasyOCR示例)。

局限与待改进

项目作者坦诚了当前不足:倾斜扫描件处理不佳(线段检测仅容忍约2像素漂移,尚无去斜校正);小型无框线块可能将表头误判为键值对;无框线单元格中的换行文本有时会拆分成额外行。这些是实际部署中需要关注的边界情况。

点评与展望

在深度学习盛行的当下,Spartan证明了经典CV在特定场景下仍具竞争力,尤其适合对可解释性和部署成本敏感的场景。不过,缺乏标准基准评估是其最大弱点——没有量化指标,难以与现有方案公平比较。如果社区能补上评估和去斜校正,该项目有望成为轻量级PDF表格提取的实用选择。

仓库地址:https://github.com/shlok-n/spartan · 安装:pip install spartan-tables

#PDF表格识别#经典计算机视觉#Spartan#表格结构识别#开源工具#LSD线段检测#形态学操作
分享:

相关推荐