Getting the bounding box of the recognized words using python-tesseract

前端 未结 7 1167
不思量自难忘°
不思量自难忘° 2020-11-30 19:21

I am using python-tesseract to extract words from an image. This is a python wrapper for tesseract which is an OCR code.

I am using the following code for getting th

7条回答
  •  野性不改
    2020-11-30 19:56

    Use pytesseract.image_to_data()

    import pytesseract
    from pytesseract import Output
    import cv2
    img = cv2.imread('image.jpg')
    
    d = pytesseract.image_to_data(img, output_type=Output.DICT)
    n_boxes = len(d['level'])
    for i in range(n_boxes):
        (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    
    cv2.imshow('img', img)
    cv2.waitKey(0)
    

    Among the data returned by pytesseract.image_to_data():

    • left is the distance from the upper-left corner of the bounding box, to the left border of the image.
    • top is the distance from the upper-left corner of the bounding box, to the top border of the image.
    • width and height are the width and height of the bounding box.
    • conf is the model's confidence for the prediction for the word within that bounding box. If conf is -1, that means that the corresponding bounding box contains a block of text, rather than just a single word.

    The bounding boxes returned by pytesseract.image_to_boxes() enclose letters so I believe pytesseract.image_to_data() is what you're looking for.

提交回复
热议问题