我在图像中具有边界框(矩形的坐标),并希望在该坐标内提取文本。如何使用pytesseract在该坐标内提取文本?
我尝试使用像
这样的opencv将图像部分复制到其他numpyarraycropped_image = image[y1:y2][x1:x2]
并尝试了pytesseract.image_to_string()。但是准确性很差。 但是,当我尝试将原始图像用于pytesseract.image_to_string()时,它完美地提取了所有内容。
是否有使用pytesseract提取图像特定部分的功能?
请帮助 预先感谢
我使用的版本: Tesseract 4.0.0 pytesseract 0.3.0 OpenCv 3.4.3
答案 0 :(得分:0)
没有内置函数可以使用Pytesseract提取图像的特定部分,但是我们可以使用OpenCV提取ROI边界框,然后将此ROI放入Pytesseract中。我们将图像转换为灰度,然后将其转换为阈值以获得二进制图像。假设您具有所需的ROI坐标,我们使用Numpy切片来提取所需的ROI
从这里我们将其放入Pytesseract以得到结果
ONLINE FOOD DELIVERY SYSTEM
代码
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
image = cv2.imread('1.jpg', 0)
thresh = 255 - cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
x,y,w,h = 37, 625, 309, 28
ROI = thresh[y:y+h,x:x+w]
data = pytesseract.image_to_string(ROI, lang='eng',config='--psm 6')
print(data)
cv2.imshow('thresh', thresh)
cv2.imshow('ROI', ROI)
cv2.waitKey()