我正在尝试使用Tesseract进行阿拉伯语OCR,但是除非字母被填充为黑色,否则OCR无法正常工作。如何在Canny边缘检测后填充间隙?
这是一个示例图像和示例代码:
结果: 这是一个样例图片,无法使用阈值化或Canny算法处理。
这是一个示例图像和示例代码:
import tesserocr
from PIL import Image
import pytesseract
import matplotlib as plt
import cv2
import imutils
import numpy as np
image = cv2.imread(r'c:\ahmed\test3.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.bilateralFilter(gray,30,40,40)
#gray = cv2.GaussianBlur(gray,(1,1), 0)
gray =cv2.fastNlMeansDenoising(gray ,None, 4, 7, 21)
image = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,11,2)
k = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1))
blur = cv2.medianBlur(image,3)
erode = cv2.erode(blur, k)
dilat = cv2.dilate(erode,k)
cv2.imshow("gray", dilat)
#cv2.imshow("dilation", img_dilation)
#thresh = cv2.Canny(thresh, 70, 200)
#crop_img = gray[215:215+315, 783:783+684]
#cv2.imshow("cropped", crop_img)
#resize = imutils.resize(blur, width = 460)
#cv2.imshow("resize", resize)
text = pytesseract.image_to_string(dilat, lang='ara')
print(text)
with open(r"c:\ahmed\file.txt", "w", encoding="utf-8") as myfile:
myfile.write(text)
cv2.waitKey(0)
结果: 这是一个样例图片,无法使用阈值化或Canny算法处理。