Pre*_*r P 5 python ocr opencv text-extraction python-tesseract
我在图像中有边界框(矩形坐标),并希望在该坐标内提取文本。如何使用 pytesseract 提取该坐标内的文本?
我尝试使用 opencv 将图像部分复制到其他 numpyarray
cropped_image = image[y1:y2][x1:x2]
Run Code Online (Sandbox Code Playgroud)
并尝试了 pytesseract.image_to_string()。但准确度非常差。但是当我尝试将原始图像转换为 pytesseract.image_to_string() 时,它完美地提取了所有内容..
是否有任何功能可以使用 pytesseract 提取图像的特定部分?
考虑到我有包含“在线食品配送系统”的矩形坐标,此图像具有不同的信息部分,如何在 pytessaract 中提取该数据?
请帮助提前致谢
我使用的版本: Tesseract 4.0.0 pytesseract 0.3.0 OpenCv 3.4.3
没有使用 Pytesseract 提取图像特定部分的内置函数,但我们可以使用 OpenCV 提取 ROI 边界框,然后将此 ROI 放入 Pytesseract。我们将图像转换为灰度然后阈值以获得二值图像。假设您有所需的 ROI 坐标,我们使用 Numpy 切片来提取所需的 ROI
从这里我们把它扔进 Pytesseract 以获得我们的结果
ONLINE FOOD DELIVERY SYSTEM
Run Code Online (Sandbox Code Playgroud)
代码
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()
Run Code Online (Sandbox Code Playgroud)