在 TeX stackexchange 上,我们一直在讨论如何在这个问题的段落中检测“河流” 。
在这种情况下,河流是由文本中的字间距意外对齐产生的空白带。由于这可能会分散读者的注意力,因此不良河流被认为是排版不良的症状。带有河流的文本的一个例子是这个,其中有两条对角线流动的河流。
人们对自动检测这些河流很感兴趣,以便可以避免它们(可能通过手动编辑文本)。Raphink 在 TeX 级别上取得了一些进展(它只知道字形位置和边界框),但我相信检测河流的最佳方法是进行一些图像处理(因为字形形状非常重要,TeX 不可用) . 我尝试了各种方法从上面的图像中提取河流,但我应用少量椭圆体模糊的简单想法似乎还不够好。我也尝试了一些氡气基于霍夫变换的过滤,但我也没有得到任何结果。河流对人眼/视网膜/大脑的特征检测电路非常明显,不知何故,我认为这可以转化为某种过滤操作,但我无法使其工作。有任何想法吗?
具体来说,我正在寻找一些可以检测上图中的 2 条河流的操作,但不会有太多其他误报检测。
编辑: endolith 问我为什么要采用基于图像处理的方法,因为在 TeX 中我们可以访问字形位置、间距等,并且使用检查实际文本的算法可能会更快、更可靠。我以另一种方式做事的原因是形状字形的多少会影响河流的显着程度,并且在文本级别很难考虑这种形状(这取决于字体、连字等)。有关字形形状如何重要的示例,请考虑以下两个示例,它们之间的区别在于我用几乎相同宽度的其他字形替换了一些字形,以便基于文本的分析会考虑他们同样好/坏。但是请注意,第一个示例中的河流比第二个示例中的河流要糟糕得多。