我正在尝试使用Tesseract进行阿拉伯语OCR,但是除非字母用黑色填充,否则OCR不会起作用。 Canny边缘检测后如何填补空白?
这是示例图像和示例代码:
listnum = [sum(x) for x in listnum]
结果:
This is a sample image不能同时使用阈值和Canny。
答案 0 :(得分:1)
在这种情况下,因为文本是黑色的,所以最好简单地找到所有黑色像素。
使用NumPy完成此操作的一种非常简单的方法如下:
import matplotlib.pyplot as pp
import numpy as np
image = pp.imread(r'/home/cris/tmp/Zuv3p.jpg')
bin = np.all(image<100, axis=2)
这是查找所有三个通道的值均低于100的所有像素。我随机选择了100种阈值,可能有更好的方法来选择阈值。 :)
注意:
1-使用彩色输入时,第一步转换为灰度图像通常是个坏主意。这会丢掉很多信息。有时候这是适当的,但在这种情况下最好不要这样做。
2-边缘检测确实很棒,但是通常是错误的方法。当需要查找边缘时,请使用边缘检测。当您不想要边缘时,请使用其他东西。
编辑:如果由于某种原因np.all
抱怨数据类型(对我而言不是),您应该能够将其输入转换为正确的类型:
bin = np.all(np.array(image<100, dtype=np.bool), axis=2)
或者也许
bin = np.all(np.array(image<100, dtype=np.uint8), axis=2)