使文本更具可读性Imagemagick

使文本更具可读性Imagemagick,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我在这里有这样的图像: 当看到它时,人类可以看到它在顶行写着PINE(N),在第二行写着PI。我的问题是,当使用tesseract ocr阅读文本时,它的输出非常糟糕。我有很多像这样的图像,需要自动化这个过程,所以手动操作是不可取的。我已经使用imagemagick使其处于当前状态,但我想知道是否有任何方法可以通过连接黑色的闭合区域使此图像更可读。我对图像处理几乎一无所知,所以我不知道从哪里开始搜索。如果有人知道一种使这张照片更具可读性的方法,我将不胜感激。这是一个相当棘手的问题,最有效的解决

我在这里有这样的图像:


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

这是一个相当棘手的问题,最有效的解决方案将取决于图像的特征——类型是什么比例?图像的退化程度如何?您想要保留的细节和您想要修复的退化之间的界限是只有人工操作员才能决定的,因此对于这个问题没有自动的一刀切的解决方案,您应该期望进行一些实验

基本技术是,您希望调整图像中每个像素的值,使其与周围的像素相似。换句话说,你可能会意识到这只是一个模糊操作。模糊图像后,剩下的是边缘模糊的字母,因此要再次获得清晰的字母,这是一个阈值操作-设置灰度阈值,比灰度阴影浅的所有字母变为白色,比阈值暗的所有字母变为黑色。“模糊加阈值”组合提供了广泛的效果,可用于使文本更清晰(或更不清晰)。对于给定的示例图像,我的模糊半径为5,阈值水平为70%,效果非常好

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

如果需要,您可以通过使用
-fx
操作符实现自定义模糊功能来获得更复杂的效果。Fx功能强大,但有些复杂,您可以在此处阅读:。我尝试了一个快速的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

这个答案已经过时了,因为Imagemagick现在有了一个更好的工具,叫做形态学。