別のプログラムの一部として画像を読み取るために、tesseract と opencv を使用しています。この記事は、メイン プログラムで発生したバグを解決するために書きました。test() 関数はほとんどコピーされ、最終的なプログラムに貼り付けられます。私が抱えている問題は、tesseract がセグメンテーション違反 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"