使文本更具可读性Imagemagick

时间:2013-06-10 17:15:32

标签: imagemagick imagemagick-convert

我在这里有这个图片: http://imgur.com/QFSimZX

当看到它时,人类可以看到它在顶行显示PINE(N),在第二行显示PI。我遇到的问题是,当使用tesseract-ocr读取文本所说的内容时,它的输出非常糟糕。我有很多这样的图像,需要自动化这个过程,所以手动操作并不是一个想法。我已经使用imagemagick将其置于当前状态,但想知道是否有任何方法可以通过连接黑色的近区域来使这个图像更具可读性。我对图像处理几乎一无所知,所以我不知道从哪里开始搜索。如果有人知道一种让它更具可读性的方法,我将非常感激。

1 个答案:

答案 0 :(得分:1)

这是一个非常棘手的问题,最有效的解决方案将敏感地依赖于图像的特征 - 这种类型的规模是多少?图像的退化程度如何?您希望保留的细节与要修复的降级之间的界限只有人工操作员可以决定,因此没有针对此问题的自动一刀切解决方案,您应该期望做一些实验

基本技术是您要将图像中每个像素的值调整为与其周围的像素相似。换句话说,你可能会发现这只是一个模糊操作。在模糊图像之后,你会留下带有模糊边缘的字母,所以要再次获得清晰的字母,这是一个阈值操作 - 你设置一个灰度的阈值水平,并且比灰色阴影更轻的一切变成白色比阈值更暗的一切都变黑了。模糊加阈值组合为您提供了广泛的效果,您可以使用这些效果使文本更清晰(或更少)。对于给出的示例图像,我得到了相当不错的结果,模糊半径为5,阈值水平为70%。

convert QFSimZX.jpg -blur 5 -threshold 70% output.png

blur and threshold

如果需要,通过使用-fx运算符实现自定义模糊功能,您可以获得比此更复杂的功能。 Fx功能强大但有些复杂,你可以在这里阅读:http://www.imagemagick.org/script/fx.php。我尝试了一个快速fx表达式,首先填充一个像素,基于其上下邻居,然后是左右邻居。这种技术实际上允许您微调计算模糊时考虑的像素:

convert QFSimZX.jpg -monochrome \
    -fx 'p[0,-1]+p[0,1] >= 2 ? 1 : 0' \
    -fx 'p[-1,0]+p[1,0] >= 2 ? 1 : 0' \
    output.png

fx method