Применяя эти несколько строк для изменения размера и изменения контраста / яркости вашего второго изображения, после обрезки нижней четверти изображения:
img = cv2.imread("download.jpg")
img = cv2.resize(img, (0, 0), fx=2, fy=2)
img = cv2.convertScaleAbs(img, alpha=1.2, beta=-40)
text = pytesseract.image_to_string(img, config='-l eng --oem 1 --psm 3')
мне удалось получить этот результат:
ВСЕГО ОК.НАПОЛЬНАЯ ПЛОЩАДЬ 528 SQ.FT.(49,0 кв. М.)
Несмотря на то, что были предприняты все усилия для обеспечения точности приведенного здесь плана этажа, размеры: дверей, окон, помещений и любых других предметов являются приблизительными и не несут ответственности залюбая ошибка, упущение или неправильное утверждение.Этот план предназначен только для ознакомительных целей и должен использоваться любым потенциальным покупателем.Показанные услуги, системы и устройства не были протестированы, и нельзя дать никаких гарантий относительно работоспособности или эффективности. Сделано с Metropix © 2019
Я не пороговую составляющую изображения, поскольку структура ваших изображений отличается от однойдругое, и поскольку изображение не только текстовое, OTSU Thresholding не находит правильное значение.
Чтобы ответить на все вопросы: Tesseract на самом деле лучше всего работает с изображением в градациях серого (черный текст на белом фоне).
Что касается вопроса о разрешении / разрешении, действительно, есть некоторые споры, но есть и эмпирическая правда: значение DPI на самом деле не имеет значения (поскольку размер текста может варьироваться для одного и того же DPI).Чтобы Tesseract OCR работал лучше всего, ваши персонажи должны иметь (отредактировано :) 30–33 пикселя (высота), уменьшение на несколько пикселей может сделать Tesseract практически бесполезным, а большие символы фактически снижают точность, хотя и незначительно.(правка: найден источник -> https://groups.google.com/forum/#!msg/tesseract-ocr/Wdh_JJwnw94/24JHDYQbBQAJ)
Наконец, формат текста на самом деле не меняется (по крайней мере, в ваших примерах). Итак, ваша главная проблема здесь - это размер текста и тот факт, что вы анализируетена всю страницу. Если нужная текстовая строка находится последовательно внизу изображения, просто извлеките (нарежьте) исходное изображение, чтобы вы могли только передавать в Tesseract соответствующие данные, что также ускорит его.
РЕДАКТИРОВАТЬ: Если вы также искали способ извлечь квадратные метры из текста ocr'ed:
text = "some place holder text 5471 square feet some more text"
# store here all the possible way it can be written
sqft_list = ["sq ft", "square feet", "sqft"]
extracted_value = ""
for sqft in sqft_list:
if sqft in text:
start = text.index(sqft) - 1
end = start + len(sqft) + 1
while text[start - 1] != " ":
start -= 1
extracted_value = text[start:end]
break
print(extracted_value)
5471 квадратных футов