gpt4 book ai didi

python - 如何校正和识别图像中的短文本

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:17 25 4
gpt4 key购买 nike

我正在从事一个文本识别项目,该项目需要检测和识别图像中的文本。图片中有两条短线文字(320px * 320 px)。第一行是国家代码的缩写。第二行是拨号代码。整个图像可以任意角度旋转。以下是一些示例。

图片一

image one

图二

image two

图三

image three

由于文本很短,霍夫变换(检测长线)、傅里叶变换和轮廓投影等方法效果不佳。我正在使用轮廓检测​​来检测文本 block 的角度。但是,如果文本 block 是三角形的,它就不能很好地工作。此外,如果文本 block 是矩形,则在去歪斜后文本会出现上下颠倒、左侧朝下和右侧朝下的情况。有人可以建议吗?

file = r"/home/hank/Desktop/af_36.jpg"
image = cv2.imread(os.path.normpath(file))
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

blur = cv2.GaussianBlur(gray, (3, 3), 0)
_, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
dilation = cv2.dilate(thresh, kernel, iterations=1)

contours, hierarchy = cv2.findContours(dilation, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

contours = [contours[i] for i in range(len(contours)) if
not (hierarchy[0][i][3] >= 0 and hierarchy[0][i][2] == -1)]

angles = []

for cnt in contours:
rect = cv2.minAreaRect(cnt)
angles.append(rect[2])

angle = sum(angles)/len(angles)

print(angle)

最佳答案

如果你不检测文本,尝试检测 2 个文本(上下)之间的空格。

(1) 最容易的方式。

对图像进行阈值查找文本(单词=1,单词=0。然后找到阈值框的中心点。中间点 x 和 y 应该是空白。

尝试旋转一条线(相同长度),以中间点为中心,宽度恰好接触顶部和底部文本。具有最大非零像素(意味着线不与文本重叠)为 1 的结果应该是文本所在的角度。

enter image description here

(2)使用旧的人脸检测路由。在 N 旋转角度使用具有模板匹配的 harr 样模式。

所有 x, y , angle 的 For 循环

然后逐步细化。

例如,这是 harr 特征的角度 0 版本。通过模板匹配将其与图像对齐。然后对齐旋转的图案并添加到前一个角度模板匹配图像的顶部。连接所有模板匹配结果并运行 min-max 以找到最高返回

enter image description here

关于python - 如何校正和识别图像中的短文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com