Untitled
unknown
python
2 years ago
2.2 kB
6
Indexable
import cv2
import numpy as np
from PIL import Image as PILImage
from pdf2image import convert_from_path
def correct_skew(image):
# Преобразование в оттенки серого
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Обнаружение границ
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
# Использование преобразования Хафа для обнаружения линий
lines = cv2.HoughLines(edges, 1, np.pi/180, 100)
if lines is not None:
angles = []
for rho, theta in lines[:, 0]:
angle = (theta - np.pi/2) * 180/np.pi
angles.append(angle)
# Усреднение углов
median_angle = np.median(angles)
# Поворот изображения для коррекции наклона
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, median_angle, 1.0)
corrected_img = cv2.warpAffine(image, M, (w, h),
flags=cv2.INTER_CUBIC,
borderMode=cv2.BORDER_REPLICATE)
return corrected_img
else:
return image
# Текущий путь
cur_path = pathlib.Path().resolve()
# Путь к PDF файлу
name = 'Доп_соглашение_о_мин_объеме_ТМС_от_01_10_2022'
img_path = f'{cur_path}/{name}.pdf'
# Конвертация PDF в изображения
pages = convert_from_path(img_path)
# Обработка первой страницы
if pages:
page_image = np.array(pages[0]) # Преобразование PIL Image в NumPy array
corrected_image = correct_skew(page_image) # Коррекция наклона
# Сохранение откорректированной первой страницы
corrected_image_pil = PILImage.fromarray(corrected_image)
corrected_image_pil.save(f'{name}_1st_page_corrected.jpg', 'JPEG')
# ... Продолжение обработки изображения для извлечения таблиц и дальнейшего анализа ...
Editor is loading...
Leave a Comment