Есть ли способ сделать Pytesseract быстрее, используя около 150 ROI на изображении? Я даю это ROI для каждого конкретного слова в изображении
Я хочу прочитать текст с картинки, а также пометить каждое слово соответствующей координатой на изображении. Таким образом, я извлек координаты и получил ROI (прямоугольник) для каждого слова. Теперь я запускаю цикл for для запуска Pytesseract для каждой области интереса (около 150 в изображении), содержащей каждое текстовое слово. Это займет около 40-50 секунд. Есть ли способ сделать это быстрее?
Я нашел координаты, сначала найдя контуры с помощью OpenCV, а затем нашел ограничивающую рамку, окружающую эти контуры. Координаты каждого слова - это, в основном, верхняя левая и нижняя правая координаты ограничительной рамки, которая окружает слово.
Точность очень хорошая с размером изображения 1300 x 1800. Понижение его влияет на результаты. Я сделал некоторую предварительную обработку изображения, чтобы преобразовать его в оттенки серого и применить порог, чтобы улучшить обнаружение.
results = []
for c in contours:
# compute the bounding box of the contour
# (x,y) be the top-left coordinate and (w,h) be width and height
(x, y, w, h) = cv2.boundingRect(c)
# extract the ROI from the image and draw a bounding box
roi = image[y:y + h, x:x + w].copy()
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 1)
#convert the image area defined by roi to text
config = ("-l eng --oem 1 --psm 1")
text = pytesseract.image_to_string(roi, config = config)
results.append((x, y, x + w, y + h, text))