pytesseract.image_to_string, похоже, не может извлечь текст из изображения

#python #opencv #python-tesseract

#python #opencv #python-tesseract

Вопрос:

Однако я пытаюсь извлечь текст из изображения с помощью следующего кода, который я пробовал на других изображениях, он работает, но не на этом изображении. Есть ли проблема с кодом?

Изображение пытается извлечь текст из: Исходное изображениеВот код:

 import cv2
import pytesseract
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

try:
    from PIL import Image
except ImportError:
    import Image

# Import image, convert,resize and noise removal
img = cv2.imread("sample01.png", cv2.IMREAD_GRAYSCALE)
print('Dimension of image: {}'.format(img.ndim))
img = cv2.resize(img, None, fx=2, fy=2)
blur = cv2.GaussianBlur(img, (5, 5), 0)

# Apply adaptiveThreshold (Mean)
th2 = cv2.adaptiveThreshold(blur, 255, cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY, 11, 2)
cv2.imwrite('resize_adaptive_threshmean.png', th2)

# Apply Tesseract to detect words
print(pytesseract.image_to_string(Image.open('resize_adaptive_threshmean.png')))   
print("=========================================================")
 

Что-то не так с кодом?

Ответ №1:

Ну, вы можете использовать adaptive-thresholding

 import cv2
import numpy as np
import pytesseract

img = cv2.imread("ACtBA.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
flt = cv2.adaptiveThreshold(gry,
                            100, cv2.ADAPTIVE_THRESH_MEAN_C,
                            cv2.THRESH_BINARY, 15, 16)
txt = pytesseract.image_to_string(flt)
print(txt)
 

Изображение будет:

введите описание изображения здесь

Результат:

 Parking: You may park anywhere on the campus where there are no signs prohibiting par-
king. Keep in mind the carpool hours and park accordingly so you do not get blocked in the
afternoon

Under Schoo! Age Children.While we love the younger children, it can be disruptive and
inappropriate to have them on campus during school hours. There may be special times
that they may be invited or can accompany a parent volunteer, but otherwise we ask that
you adhere to our —_ policy for the benefit of the students and staff.
 

Я тестирую с разными параметрами, поэтому я думаю, что наиболее подходящими параметрами являются:

 maxValue = 100  # Display pixels greater than maxValue

blockSize=15. # size of neighbourhood area.

C=16  #  just a constant which is subtracted from the mean or weighted mean calculated.
 

Комментарии:

1. В моей реализации помогает ли изменение размера изображения и использование Guassian blur? Я думаю, что ваш вывод намного лучше, но я тоже ищу способы максимизировать вывод. С другой стороны, моя реализация, похоже, не имеет никаких проблем. Есть идеи, почему он не генерирует никакого текста?

2. Для проблем распознавания не существует методов прямой предварительной обработки. Поэтому вам нужно попробовать методы и посмотреть результаты. Для этой проблемы размытие по Гауссу вам не помогло. В вашей реализации нет проблем, я думаю, параметры важны. Как я уже упоминал в своем ответе, я тестировал с разными параметрами, нашел рабочие и вставил в качестве ответа.

Ответ №2:

 import cv2
import pytesseract
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

try:
    from PIL import Image
except ImportError:
    import Image
data = pytesseract.image_to_string(Image.open("sample01.png"))
print(data) 

?

Комментарии:

1. Мой вывод: парковка: вы можете припарковаться в любом месте на ce king. Имейте в виду часы работы автобазы и дневную парковку для детей младшего школьного возраста: хотя мы любим, когда они неуместны в кампусе @ ), что они могут быть приглашены или могут сопровождать: вы придерживаетесь нашей _ политики в интересах