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

tux*_*ani 15 ocr matlab opencv computer-vision image-segmentation

通常在OCR的过程中,图像文件基本上被切割成段,并且每个字符被重新称为段.例如,未分段的文本作为图像

必须转变成类似的东西 文本已被分段并准备好进行OCR的图像

此外,是否有像泰卢固语这样的亚洲语言的算法可以用于此目的?如果没有,这对英语怎么办?

Abi*_*n K 40

使用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()
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

在此输入图像描述在此输入图像描述

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