파이썬으로 말 딸의 상태를 이미지 인식하는 녀석을 만들어 보았다.

12280 단어 파이썬VSCode
말딸은 무과금세로 손쉽게 URA 우승이라고 할 수는 없기 때문에 스테이터스와 레이스의 결과의 기록을 취해 시행착오하면서 하고 있습니다만,
난이도를 돌고 있으면 일일이 숫자와 레이스 이름을 입력하는 것이 귀찮아졌습니다.


그래서 파이썬에서 캡처 이미지에서 문자를 인식하고 입력을 지원하는 스크립트를 만들었습니다.

내가 Visual Studio Code를 사용하고 있지만 평범한 파이썬으로 작동한다고 생각하므로 원하는 환경에서 해주세요.

Visual Studio Code를 사용하여 Python 초보자를 위한 개발 환경 설정 - Learn | Microsoft Docs
htps : // / cs. 미 c 로소 ft. 코 m / 자 jp / ぇ 아 rn / 모즈 ぇ s / py 텐 - 엥 s 타 루 vs 코데 /

이미지 인식하에 준비



이미지 인식의 정확도를 높이기 위해 캡처 이미지를 아래에 준비합니다.

구체적으로는 레이스 전의 캡처를 가공하여 불필요한 곳을 쏟아냅니다.




먼저 이미지 처리 라이브러리의 pillow를 설치합니다.

[Python] 이미지 처리 라이브러리 Pillow (PIL) 설치 | CodeLab
htps : // 코데아 b. 음 b / py 쵸 삐 ぉ
pip install pillow
# キャプチャを取得
img_org = Image.open("./umaPc.jpg")

# レース名とステータス部分を切り出す
img_race = img_org.crop(
    (img_org.width * 0.2, img_org.height * 0.03, img_org.width * 0.85, img_org.height * 0.09))

img_stats = img_org.crop((img_org.width * 0.765, img_org.height *
                         0.18, img_org.width * 0.93, img_org.height * 0.35))

# 二つを合体させてJPGで保存する
img_dest = Image.new(
    'RGB', (img_race.width, img_race.height + img_stats.height))
img_dest.paste(img_stats, (0, 0))
img_dest.paste(img_race, (0, img_stats.height))
img_dest.save('.\\dest.jpg')

crop하는 영역은 PC판이라면 윈도우의 크기에 따라 종횡비가 바뀌기 때문에 (타이틀 바의 높이가 변하지 않기 때문에) 다소 크기에 여유를 갖게하고 있습니다
너비를 맞추면 잘 이해됩니다.




Google Cloud Vision API로 이미지 인식



아래 준비된 이미지를 Google Cloud Vision API에 던져 이미지 인식
처음에는 검색하자마자 나오는 Tesseract를 사용했는데 두꺼운 글꼴 때문에 잘 안 갔습니다.

방법은 거의 여기에서 copipe입니다.
Google Cloud Vision API에서 광학 문자 인식 - Qiita
htps : // 이 m / a lt는 / ms / 6f22f1441733이다 08fdc1

Cloud Vision API 사용 요약(샘플 코드 포함)
htps: //synse r. jp / c ぉ d ゔ ぃ 시온 아피

참고 Google Cloud Vision API는 한 달에 1000회 이상 사용하면 요금이 부과됩니다.
import requests
import base64
import json
import pyperclip

GOOGLE_CLOUD_VISION_API_URL = 'https://vision.googleapis.com/v1/images:annotate?key='
API_KEY = ''  # 取得したAPIキーを入力してください。

# APIを呼び、認識結果をjson型で返す


def request_cloud_vison_api(image_base64):
    api_url = GOOGLE_CLOUD_VISION_API_URL + API_KEY
    req_body = json.dumps({
        'requests': [{
            'image': {
                # jsonに変換するためにstring型に変換する
                'content': image_base64.decode('utf-8')
            },
            'features': [{
                'type': 'TEXT_DETECTION',  # ここを変更することで分析内容を変更できる
                'maxResults': 10,
            }]
        }]
    })
    res = requests.post(api_url, data=req_body)
    return res.json()


def img_to_base64(filepath):
    with open(filepath, 'rb') as img:
        img_byte = img.read()
    return base64.b64encode(img_byte)

# 加工したキャプチャをbase64エンコードする
img_base64 = img_to_base64('./dest.jpg')
result = request_cloud_vison_api(img_base64)

# 結果のJSONを取得
text_r = result["responses"][0]["fullTextAnnotation"]["text"]

# 結果をタブで区切って表示
text_dest = ''
i = 0

for c in text_r:
    if c == '\n':
        text_dest += '\t'
        i += 1
        if i == 5:
            text_dest += '\t'
    else:
        text_dest += c

print(text_dest)

# 結果をクリップボードに入れる
pyperclip.copy(text_dest)

캡처를 저장한 후 Python 스크립트를 실행하면 결과가 클립보드에 들어가므로 스프레드시트에 Ctrl+V 하는 것만으로 기록을 취할 수 있게 되었습니다 (˚∀゚)

좋은 웹페이지 즐겨찾기