我正在使用 tesseract 和 opencv 来读取图像作为不同程序的一部分。我写这篇文章是为了解决我在主程序中遇到的错误。test() 函数将被复制并粘贴到最终程序中。我遇到的问题是 tesseract 似乎以 Segmentation Fault 11 退出了 python。这种情况间歇性地发生。有时这个示例代码完全运行,有时它在 56 次迭代后失败(每次)。我安装的所有东西都在自制软件中(我遵循了这些说明:https ://code.google.com/p/python-tesseract/wiki/HowToCompilePythonTesseractForHomebrewMacMountainLion )在搜索了我的问题的解决方案后,我尝试了以下说明:http:/ /www.janeriksolem.net/2011/12/installing-opencv-python-interface-on.html,我很确定我做的一切都是正确的,但我仍然偶尔会遇到段错误。
import time
import tesseract
import cv2
import cv2.cv as cv
import Image
def test():
image0=cv2.imread("test.jpg")
offset=20
height,width,channel = image0.shape
image1=cv2.copyMakeBorder(image0,offset,offset,offset,offset,cv2.BORDER_CONSTANT,value=(255,255,255))
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetPageSegMode(tesseract.PSM_AUTO)
height1,width1,channel1=image1.shape
print image1.shape
print image1.dtype.itemsize
width_step = width*image1.dtype.itemsize
print width_step
#method 1
iplimage = cv.CreateImageHeader((width1,height1), cv.IPL_DEPTH_8U, channel1)
cv.SetData(iplimage, image1.tostring(),image1.dtype.itemsize * channel1 * (width1))
tesseract.SetCvImage(iplimage,api)
text=api.GetUTF8Text()
conf=api.MeanTextConf()
image=None
print "..............."
return (text, conf)
for x in xrange(200):
print "x: %d" %x
test()
print
time.sleep(1)
print "Done"