Распознавание рукописных чисел и текстаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Распознавание рукописных чисел и текста

Сообщение Anonymous »

Я работаю над проектом, в котором мне удалось успешно обнаружить ячейки табличного изображения, и в каждой ячейке я также пытаюсь обнаружить написанные числа и текст, но мне неоднократно удавалось это сделать, перепробовав так много вариантов. >
Здесь я прикрепил свою последнюю попытку использования pytesseract, хотя я знаю, что pytesseract не подходит для обнаружения рукописного текста. Но тем не менее он определяет 5 из 51, 79 из 71.
!apt-get install -y tesseract-ocr

from google.colab.patches import cv2_imshow
import cv2
import pytesseract

def recognize_digit(image):
# Preprocess the image for OCR
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
clahe = cv2.createCLAHE(clipLimit=0.9, tileGridSize=(8, 8))
equalized = clahe.apply(gray)
threshold = cv2.threshold(equalized, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
denoised = cv2.fastNlMeansDenoising(threshold, h=0)

# Remove horizontal lines
horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (24,1))
detect_horizontal = cv2.morphologyEx(threshold, cv2.MORPH_OPEN, horizontal_kernel, iterations=2)
cnts = cv2.findContours(detect_horizontal, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
cv2.drawContours(image, [c], -1, (255,255,255), 5)
cv2.drawContours(denoised, [c], -1, (0, 0, 0), 5)
cv2.drawContours(threshold, [c], -1, (0, 0, 0), 5)

# Remove vertical lines
vertical_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1,25))
detect_vertical = cv2.morphologyEx(threshold, cv2.MORPH_OPEN, vertical_kernel, iterations=2)
cnts = cv2.findContours(detect_vertical, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
cv2.drawContours(image, [c], -1, (255,255,255), 5)
cv2.drawContours(denoised, [c], -1, (0, 0, 0), 5)
cv2.drawContours(threshold, [c], -1, (0, 0, 0), 5)

# Display the preprocessed image
cv2_imshow(denoised)

# Apply OCR using Tesseract
config = "--psm 7 --oem 3 -c tessedit_char_whitelist=0123456789"
text = pytesseract.image_to_string(denoised, config=config)

return text.strip()

# Read the image
image_path = '51.png'
image = cv2.imread(image_path)

# Define the region of interest (coordinates of the desired region)
x, y, w, h = 4, 4, 800, 100

# Crop the image to the defined region
roi = image[y:y+h, x:x+w]

# Recognize the handwritten digit within the cropped region
recognized_digit = recognize_digit(roi)

# Print the recognized digit
print("Recognized digit:", recognized_digit)



Подробнее здесь: https://stackoverflow.com/questions/791 ... ecognition
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Распознавание рукописных чисел и текста
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Распознавание рукописных чисел и текста
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Google ML Kit Распознавание текста версии 2. В отдельной библиотеке возникла проблема с распознаванием чисел как символо
    Гость » » в форуме Android
    0 Ответы
    39 Просмотры
    Последнее сообщение Гость
  • Vision OCR — чтение рукописных заметок с камеры телефона. Вопрос
    Anonymous » » в форуме C#
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Как обнаружить линии и нарисовать ограничивающую рамку этой линии на рукописных буквах, используя CV2
    Anonymous » » в форуме Python
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»