按相对字体大小对图像上的文本进行排序

问题描述

我正在一个项目中,我们正在尝试对旧表格进行OCR。这些表格是排版的,通常会键入数据。该表格具有多种字体大小和对齐方式。这是一个例子:

original form image

我们发现,不同的字体大小和对齐方式会产生较差的OCR结果。

我们已经拍摄了一些图像,并根据字体大小对其进行了手动重新组织。重新组织的第一个样本的子集可能类似于:

image text organized by font size

我们发现这种重组产生的OCR结果要好得多。

我正在寻找使这种类型的重组自动化的技术。我尝试使用连接的组件/ BLOB分析来按高度查找元素。由于字体大小随字母高度的变化(由于字母的升序和降序)而导致的效果通常较差。

感谢您对此问题的深入了解。

解决方法

大声思考:

这确实是一个不易解决的问题,因为具有相同脸部大小的字符并非都具有相同的高度或宽度(不包括损坏和触摸的字符)。

没有任何先验知识,即如何制作打印字体,尤其是小写和大写的相对高度/对齐方式,您将无能为力。也就是说,文字中的字符通常具有相同的面孔,面孔大小甚至大小写,并且具有相同的基线。在普通文本中,基线倾向于沿整行延伸。但是对于简短的注释或填写的表单,没有任何规则可以依靠。

因此,第一个挑战是通过用普通间距区分空格来将字符分组。然后,您可以假设一个单词中的所有字符都具有相同的字号。您还可以假定文档包含少量不同大小(例如最多五个)。

一个选择是获取所有字符的原始大小,并将它们聚集成少数集群。然后,您可以通过将大小匹配到聚类并检查同质性来验证单词中大小的一致性。

请注意,没有完美的解决方案,只有在识别出字符(!)后才能说出最后一个字