【发布时间】:2020-04-04 14:24:23
【问题描述】:
输入图片:
我想从图像中提取数据 (ocr) 我试过的代码:
import cv2
import textract
import numpy as np
img = cv2.imread('/home/ajay/Desktop/name.jpg',0)
# img = cv2.imread('path_to_your_image', 0)
_, blackAndWhite = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(blackAndWhite, None, None, None, 8, cv2.CV_32S)
sizes = stats[1:, -1] #get CC_STAT_AREA component
img2 = np.zeros((labels.shape), np.uint8)
for i in range(0, nlabels - 1):
if sizes[i] >= 50: #filter small dotted regions
img2[labels == i + 1] = 255
res = cv2.bitwise_not(img2)
cv2.imwrite('ress.png', res)
a = textract.process('ress.png',method = 'tesseract')
a = a.decode()
print(a)
【问题讨论】:
-
我不确定你所说的 noise 是什么。我在这张二进制图片中看到的很少。你能向我们展示预期的“干净”图像吗?
-
添加预期输出请检查一次
-
我同意@YvesDaoust,您的二值化图像中基本上没有噪点。你在找什么?
-
我可以想象如何从预期的输出图像中获取您的输入图像,但我认为您不能以非常简单的方式反过来。
-
您的“预期输出”似乎是原始版本的模糊版本(二值化之前)。以什么方式更干净?它似乎并不比第一个更具可读性。
标签: python numpy opencv image-processing python-imaging-library