Предположим, изображение имеет 4 строки текста, мне нужно написать функцию, которая разбивает, обрезает строки и создает По 4 новых изображения для каждой строки соответственно.
Затем функция, которая получает строку/предложение, состоящее из нескольких слов, и вырезает изображения слов отдельно.
Затем функция, получающая изображение слова и разлагающая его на буквы, для каждой буквы будет создано свое изображение.
Функция ниже, разрезающая на буквы только одно слово р>
Код: Выделить всё
# Cutting one word to letters
def image_to_text(image_file_path):
img = cv2.imread(image_file_path, cv2.IMREAD_COLOR)
extracted_text = ""
if img is not None:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for idx, contour in enumerate(contours):
x, y, w, h = cv2.boundingRect(contour)
letter_img = thresh[y:y + h, x:x + w]
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
letter_img = cv2.filter2D(letter_img, -1, kernel)
letter_img = cv2.copyMakeBorder(letter_img, 4, 4, 4, 4, cv2.BORDER_CONSTANT, value=[0, 0, 0])
letter_img = cv2.resize(letter_img, (28, 28), interpolation=cv2.INTER_AREA)
# Display the image
plt.imshow(letter_img, cmap='gray')
plt.axis('off')
plt.show()
letter_img = letter_img.reshape(1, 28, 28, 1).astype('float32') / 255
prediction = loaded_model.predict(letter_img)
# Print the predicted class and its corresponding label
predicted_class = np.argmax(prediction)
predicted_label = class_labels[predicted_class]
print(f"Predicted class for the letter: {predicted_class} ({predicted_label})")
extracted_text += predicted_label
extracted_text = extracted_text[::-1]
print('Extracted text:', extracted_text)
return extracted_text
Код: Выделить всё
text = image_to_text(r"C:\Users\student\Desktop\FinalProject\Flask\image\test3IMG.jpg")

вывод :
Я ограничен в количестве изображений, которые могу загрузить на форум, поэтому загружу только два примера букв B и E
< img alt="Буква B из слова "Потому что"" src="https://i.sstatic.net/65PGtVPB.png" />

Остальные буквы были извлечены таким же образом..

Вопрос в том, как могу ли я обработать такой ввод:

Я пытаюсь уже несколько дней и все расстраиваюсь.. буду рад помощи
Подробнее здесь: https://stackoverflow.com/questions/784 ... characters