1。 如何检测多个对象?
2。 如何检测我想要的对象?
谢谢!
答案 0 :(得分:1)
如何将图像分成9个部分并剪切您的部分 感兴趣,将其写入文件,然后在其上运行tesseract。
tesseract myscan.png out
我不知道tesseract如何对内存中的图像进行操作......但您可能会在API文档中找到一些内容吗?
我认为tesseract将返回3行文字,您感兴趣 最后一行中间区域的单词。它有帮助吗? :d
好的我刚刚玩过python tesseract api和python opencv api,并想出了以下内容
import cv2
import cv2.cv as cv
import tesseract
cv.NamedWindow("win")
img = cv2.imread("GBIAe.jpg") # numpy.ndarray
height, width, channels = img.shape
# crop the image
crop = (2*height/3, width/3)
roi = img[crop[0]:height, crop[1]:2*width/3]
# Convert numpy.ndarray, to cv2.cv.iplimage
bitmap = cv.CreateImageHeader((roi.shape[1], roi.shape[0]), cv.IPL_DEPTH_8U, 3)
cv.SetData(bitmap, roi.tostring(), roi.dtype.itemsize * 3 * roi.shape[1] )
# Extract the text with tesseract
api = tesseract.TessBaseAPI()
api.Init(".","eng", tesseract.OEM_DEFAULT)
api.SetPageSegMode(tesseract.PSM_AUTO)
tesseract.SetCvImage( bitmap, api)
text=api.GetUTF8Text()
conf=api.MeanTextConf()
print("text %s" % text)
api.End()
cv.ShowImage("win", bitmap)
cv.WaitKey()
可以在
找到python tesseracthttps://code.google.com/p/python-tesseract/
我在这里找到了numpy数组和iplimage之间的转换:
http://stackoverflow.com/questions/11528009/opencv-converting-from-numpy-to-iplimage-in-python
裁剪给了我“这里是'作为文字。它可能不是你想要的。
Tesseract正在tessdata文件夹中搜索与脚本相同的文件夹中训练有素的语言数据。我刚创建了一个符号链接到/ usr / share / tesseract-ocr / tessdata文件夹。您可能想要设置环境变量等。
可能你应该添加几张图片。也有可能 ocr整个文本,取最后一行,因为你只对最后一行感兴趣,看看哪个单词在中间。
我认为您可以使用上面的代码来实现这两个目标。裁剪区域将为您提供最后一行中间单词的部分或全部文本,然后可以使用该单词从整个图像上使用tesseract获得的最后一行文本中选择完整单词。