Как стать автором
Обновить

Комментарии 8

Спасибо, за статью, думаю вам будет интересно ещё поработать с Game State Server, у меня тоже есть идея распознавать сообщение о смерти Рошана и интегрировать с overlay, можем попробовать вместе - почитайте мою статью

Да, мне доводилось работать с GSI — хорошая штука. Кстати, для Overlay можно использовать Overwolf, там из коробки поддерживается эта фича

попробуйте сначала сделать upscale с помощью waifu2x ( waifu2x-ncnn-vulkan.exe -n 0 -s 2 -x -i input.png -o output.png) , обрезать и уже потом EasyOCR... можно попробовать отфильтровать по HSL перед OCR... Ещё можно подсчитать количество "белых" пикселей в столбцах обрезанного изображения и отфильтровать всё что меньше threshold'а...

З.Ы. Я так EVE автоматизировал.

З.Ы.Ы. Перед отправкой в OCR, поиграйтесь с последовательностью "предобработки" изображения.. я использую Aforge.net IPLab

Спасибо за наводку, завелось

Для тессеракта лучше инвертировать картинку, так как черный текст он лучше распознает. Плюс добавить паддинги. Результат должен улучшиться. Хотя такие размытые картинки не приходилось распознавать ?

Я пробовал решить похожую задачу, перебирал доступные инструменты вроде Tesseract и не нашёл ничего точнее и удобнее для себя, как поиск максимумов свёртки изображения с шаблонами цифр и чисел (довольно старый приём). Конечно, для этого понадобилось собрать библиотеку шаблонов.

Из минусов: решение чувствительно к разрешению скриншота, неустойчиво к повороту, для каждого шрифта понадобится новая коллекция шаблонов и так далее, и тому подобное.

Шаг 1. Вырезаем боксы с помощью Craft_text_detector:

часы в частности:

  1. скармливаем tesseract:

    import cv2
    import pytesseract
    import numpy as np
    from PIL import ImageGrab
    import time
    from pytesseract import Output
    from time import sleep

    config = r'--oem 3 --psm 6'
    #pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files\Tesseract-OCR\tesseract.exe'
    img = cv2.imread('crop_2.png')
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    hImg, wImg,_ = img.shape
    conf = r'--oem 3 --psm 6 outputbase digits'
    boxes = pytesseract.image_to_boxes(img,config=conf)
    for b in boxes.splitlines():
    #print(b)
    b = b.split(' ')
    print(b[0])
    x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4])
    cv2.rectangle(img, (x,hImg- y), (w,hImg- h), (50, 50, 255), 2)
    cv2.putText(img,b[0],(x,hImg- y+25),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2)
    cv2.imshow("Result",img)
    cv2.waitKey(1)

    *извиняюсь за отступы.

  2. Итоги:

    Ваш ход - попробуйте номер от автобуса с бегущей строкой распознать:

в принципе, вопрос снят. трансформер прочитал:

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории