Во время извлечения целых чисел из изображения, содержащего форму 2D-матрицы, Тессеракт не может дать правильный результат, и результат меняется каждый раз, когда мы выполняем код. Может кто-нибудь, пожалуйста, дайте некоторое представление о том, чего не хватает в коде ниже
img = cv2.imread(img_path)
rows = img.shape[0]
cols = img.shape[1]
#print rows , cols
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# Apply dilation and erosion to remove some noise
#kernel = np.ones((5,5), np.uint64)
#img = cv2.dilate(img, kernel, iterations=1)
#img = cv2.erode(img, kernel, iterations=1)
# Write image after removed noise
cv2.imwrite(src_path + "removed_noise1.png", img)
# Apply threshold to get image with only black and white
#img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,225,95)
img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C , cv2.THRESH_BINARY ,251,95)
#print cv2.getGaussianKernel(ksize=221,sigma=41)
# Write the image after apply opencv to do some ...
cv2.imwrite(src_path + "thres1.png", img)
# Recognize text with tesseract for python
result = pytesseract.image_to_string(Image.open(src_path + "thres1.png"))
Ввод
Пороговое значение: adaptiveThreshold (img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 251, 95
Выходной порог:
Выход имеет вид 1 5 5 7 5 7 3 8 6 4 9 0 2 4 8 6 1 3 0 23 9 0 8 9 может быть либо в основной форме строки, и в основной форме столбца не имеет значения, но нам нужно, чтобы данный вывод был сохранен в переменную