如何将图像转换为字符段?

Posted

技术标签:

【中文标题】如何将图像转换为字符段?【英文标题】:How to convert an image into character segments? 【发布时间】:2012-06-13 10:06:00 【问题描述】:

通常在 OCR 的过程中,图像文件本质上是被分割成段,每个字符被识别为一个段。 比如

必须转换为类似的东西

此外,是否有任何适用于泰卢固语等亚洲语言的算法可用于此目的?如果没有,这对英语是怎么做的?

【问题讨论】:

【参考方案1】:

使用 OpenCV 可以轻松完成。下面是一个示例代码:

import cv2
import numpy as np

# Load the image
img = cv2.imread('sof.png')

# convert to grayscale
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# smooth the image to avoid noises
gray = cv2.medianBlur(gray,5)

# Apply adaptive threshold
thresh = cv2.adaptiveThreshold(gray,255,1,1,11,2)
thresh_color = cv2.cvtColor(thresh,cv2.COLOR_GRAY2BGR)

# apply some dilation and erosion to join the gaps
thresh = cv2.dilate(thresh,None,iterations = 3)
thresh = cv2.erode(thresh,None,iterations = 2)

# Find the contours
contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

# For each contour, find the bounding rectangle and draw it
for cnt in contours:
    x,y,w,h = cv2.boundingRect(cnt)
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
    cv2.rectangle(thresh_color,(x,y),(x+w,y+h),(0,255,0),2)

# Finally show the image
cv2.imshow('img',img)
cv2.imshow('res',thresh_color)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出将如下所示:

【讨论】:

+1 很好的答案,但我认为它可以在每一步使用一些 cmets(特别是因为 OP 在他的问题中没有提到 OpenCV)

以上是关于如何将图像转换为字符段?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串 pic URL 转换为图像并显示在图像标签中。?

如何将 base64 字符串格式的图像转换为清晰图像缩小器期望的数据类型?

如何将图像上的字符串转换为字符串? [关闭]

如何使用php和文件上传将图像转换为二进制字符串?

如何从 JSON 字符串转换图像数据?

如何将 pygame Surface 转换为 PIL 图像?