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 the words:
import tesseract
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyz")
api.SetPageSegMode(tesseract.PSM_AUTO)
mImgFile = "test.jpg"
mBuffer=open(mImgFile,"rb").read()
result = tesseract.ProcessPagesBuffer(mBuffer,len(mBuffer),api)
print "result(ProcessPagesBuffer)=",result
This returns only the words and not their location/size/orientation (or in other words a bounding box containing them) in the image. I was wondering if there is any way to get that as well
Would comment under lennon310 but don't have enough reputation to comment...
To run his command line command
tesseract test.jpg result hocr
in a python script:Python tesseract can do this without writing to file, using the
image_to_boxes
function:Use
pytesseract.image_to_data()
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
andheight
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. Ifconf
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 believepytesseract.image_to_data()
is what you're looking for.tesseract.GetBoxText()
method returns the exact position of each character in an array.Besides, there is a command line option
tesseract test.jpg result hocr
that will generate aresult.html
file with each recognized word's coordinates in it. But I'm not sure whether it can be called through python script.Using the below code you can get the bounding box corresponding to each character.