python tesseract "AttributeError: setImage"

697 views Asked by At

I'm trying to make tesseract run in python:

...image is a numpy array (uint8)...

tessApi = tesseract.TessBaseAPI()
tessApi.Init(".","spa",tesseract.OEM_DEFAULT)
tessApi.SetVariable("tessedit_char_whitelist", "0123456789ACEIMNOPRSTU/imn")
tessApi.SetPageSegMode(tesseract.PSM_AUTO)
# SetImage(imagedata, width, height, bytes_per_pixel, bytes_per_line)
w = int(final.shape[1])
h = int(final.shape[0])
tessApi.setImage(image,w,h,1,w)
text = tessApi.GetUTF8Text()
print text

And I get an error: raise AttributeError(name) AttributeError: setImage I can't figure out why. Please, can anybody help me?.

1

There are 1 answers

1
Tim On BEST ANSWER

Check https://code.google.com/p/python-tesseract/source/browse/python-tesseract-0.9/src/tesseract.py

class TessBaseAPI(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, TessBaseAPI, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, TessBaseAPI, name)
    __repr__ = _swig_repr
    def __init__(self): 
        this = _tesseract.new_TessBaseAPI()
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _tesseract.delete_TessBaseAPI
    __del__ = lambda self : None;
    __swig_getmethods__["Version"] = lambda x: _tesseract.TessBaseAPI_Version
    if _newclass:Version = staticmethod(_tesseract.TessBaseAPI_Version)
    __swig_getmethods__["getOpenCLDevice"] = lambda x: _tesseract.TessBaseAPI_getOpenCLDevice
    if _newclass:getOpenCLDevice = staticmethod(_tesseract.TessBaseAPI_getOpenCLDevice)
    __swig_getmethods__["CatchSignals"] = lambda x: _tesseract.TessBaseAPI_CatchSignals
    if _newclass:CatchSignals = staticmethod(_tesseract.TessBaseAPI_CatchSignals)
    def SetInputName(self, *args): return _tesseract.TessBaseAPI_SetInputName(self, *args)
    def GetInputName(self): return _tesseract.TessBaseAPI_GetInputName(self)
    ...
    def ClearAdaptiveClassifier(self): return _tesseract.TessBaseAPI_ClearAdaptiveClassifier(self)
    def SetImage(self, *args): return _tesseract.TessBaseAPI_SetImage(self, *args)

The function you are trying to call is

def SetImage(self, *args): return _tesseract.TessBaseAPI_SetImage(self, *args)

Use an uppcase S for SetImage, not a lowercase