Я новичок в StackOverflow, поэтому, пожалуйста, простите меня за любые заблуждения или неправильные ответы. В случае, если кто-то все еще ищет ответ, функция pytesseract image_to_osd дает информацию об ориентации. Он определяет только ориентацию как 0 °, 90 °, 180 ° или 270 °, то есть точно определяет ориентацию, если текст выровнен по осям. Но он также выводит любой из этих четырех углов даже для другой ориентации.
Так что, если вы работаете с незначительной разницей углов, например 2 ° или около того, это должно решить проблему. Итак, сначала мы выравниваем текст, а затем используем функцию.
вот код в python:
while True:
osd_rotated_image = pytesseract.image_to_osd(image)
# using regex we search for the angle(in string format) of the text
angle_rotated_image = re.search('(?<=Rotate: )\d+', osd_rotated_image).group(0)
if (angle_rotated_image == '0'):
image = image
# break the loop once we get the correctly deskewed image
break
elif (angle_rotated_image == '90'):
image = rotate(image,90,(255,255,255)) # rotate(image,angle,background_color)
continue
elif (angle_rotated_image == '180'):
image = rotate(image,180,(255,255,255))
continue
elif (angle_rotated_image == '270'):
image = rotate(image,90,(255,255,255))
continue
И для выравнивания текста Deskew python библиотека на мой взгляд лучшая.
Спасибо.