【发布时间】:2017-03-22 21:56:03
【问题描述】:
我正在尝试识别六边形内的文本“25”。如果文本在六边形上方或下方,我的代码可以识别文本,但在六边形内部时则不能。任何指针?另外,我正在尝试获取文本的坐标。 一种选择是将六边形(使用 opencv 轮廓)提取到另一个图像中,然后使用 tesseract。但是我可以使用更简单的解决方案吗?
这里是识别文本是否在形状之外的代码 sn-p(程序将图像文件名作为 arg 并打印出它识别的文本。)
from PIL import Image, ImageEnhance, ImageFilter
import sys
import pytesseract
import cv2
load image filename = sys.argv[1]
img = Image.open(filename)
img = img.filter(ImageFilter.SHARPEN)
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(10)
img = img.convert('1')
img.save('temp.jpg')
im = cv2.imread('temp.jpg',cv2.COLOR_RGB2GRAY)
im = cv2.blur(im,(4,4))
_, im = cv2.threshold(im, 200 , 200, cv2.THRESH_BINARY_INV)
#This is just to see what has happened, has no meaning!
cv2.imshow('gray', im)
cv2.waitKey(0)
cv2.destroyAllWindows()
#Actual Text recognition
cv2.imwrite('temp2.jpg', im)
text = pytesseract.image_to_string(Image.open('temp2.jpg'))
print(text)
【问题讨论】:
-
你是如何识别六边形上方和下方的?
-
@Sruti 如上所述,让我们知道您如何在六边形上方和下方执行 OCR?
-
将程序添加到问题中。
标签: opencv ocr tesseract python-tesseract