Использование Google Cloud Vision API с заполненной вручную формой - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь проанализировать экзаменационные листы с помощью Google Cloud Vision API. Ниже тестовый лист, который я использую.

Cloud Vision очень хорошо распознает имя и вопросы № 11 и № 12, включая почерк. Однако полностью игнорирует вопросы с № 1 по № 9 . Нет цифр, нет букв, просто ничего.

Выходной текст "Name\nJohn\nDoe\n11\nI don\'t\nknow\nthe right\nanswer.\nfor me.\n12\nThis\nis\ntoo\ndifficult\n".

Есть идеи, как заставить Cloud Vision видеть вопросы с № 1 по № 9?

Код очень прост:

def detect_document(path):
    """Detects document features in an image."""
    from google.cloud import vision
    import io
    client = vision.ImageAnnotatorClient()

    with io.open(path, 'rb') as image_file:
        content = image_file.read()

    image = vision.types.Image(content=content)

    response = client.document_text_detection(image=image)

    print (response.full_text_annotation)

detect_document('resources/scan_letters.jpg')

Exam sheet example

1 Ответ

1 голос
/ 16 января 2020

Cloud Vision будет легче распознавать текст на изображении, если фото будет пороговым.

Я использую код, который я написал ниже, и это в значительной степени решает мою проблему.

import cv2
from PIL import Image, ImageFilter

def threshold():
    img = cv2.imread("menu.jpg") #path of unmodified image.

    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    ret, thresh1 = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    #ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) #You can change values for best result.

    cv2.imshow('Otsu', thresh1)

    cv2.imwrite("test.png",thresh1) #saving path of the modified version of the photograph.


    if cv2.waitKey(0) & 0xff == 27:
        cv2.destroyAllWindows()

threshold()

enter image description here

...