tesseract 4.0.0-beta.1

时间:2019-07-15 04:01:02

标签: ocr tesseract python-tesseract

我正在尝试使用tesseract 4.0.0-beta.1进行车牌识别。在tesseract文档中,告诉您以形式创建框文件。我尝试使用“ makebox”功能。但是,它不能正确检测每个字符。然后,在某处我读到此功能适用于版本3.x。

我后来尝试了“ wordstrbox”功能。但是以这种方式创建的Box文件为空。有人可以告诉我如何为tesseract 4.0.0-beta.1。创建文件夹文件吗?

2 个答案:

答案 0 :(得分:0)

使用pytesseract.image_to_data()

import pytesseract
import cv2
from pytesseract import Output

img = cv2.imread('image.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes):
    (text,x,y,w,h) = (d['text'][i],d['left'][i],d['top'][i],d['width'][i],d['height'][i])
    cv2.rectangle(img, (x,y), (x+w,y+h) , (0,255,0), 2)
cv2.imshow('img',img)
cv2.waitkey(0)

在pytesseract.image_to_data()返回的数据中:

  • left是距边界框左上角的距离, 图片的左边框。
  • top是距边界框左上角的距离, 到图片的顶部边框。
  • widthheight是边界框的宽度和高度。
  • conf是模型对其中单词的预测的置信度 那个边界框。如果conf为-1,则表示对应的 边界框包含一块文本,而不只是一个文本 单词。

pytesseract.image_to_boxes()返回的边界框将字母括起来,因此我相信pytesseract.image_to_data()是您要查找的内容。

答案 1 :(得分:0)

我发现AlfyFaisy的答案非常有帮助,只想共享代码以查看单个字符的边框。区别在于通过image_to_boxes方法输出的字典的键:

import pytesseract
import cv2
from pytesseract import Output

img = cv2.imread('image.png')
height = img.shape[0]
width = img.shape[1]

d = pytesseract.image_to_boxes(img, output_type=Output.DICT)
n_boxes = len(d['char'])
for i in range(n_boxes):
    (text,x1,y2,x2,y1) = (d['char'][i],d['left'][i],d['top'][i],d['right'][i],d['bottom'][i])
    cv2.rectangle(img, (x1,height-y1), (x2,height-y2) , (0,255,0), 2)
cv2.imshow('img',img)
cv2.waitKey(0)

至少在我的机器上(Python 3.6.8,cv2 4.1.0),cv2方法为waitKey(0),大写字母K。

这是我得到的输出:

output