오토핫키 커뮤니티

조회 수 2985 추천 0 댓글 6

몇일동안 구글링도해보고 커뮤니티 사이트를 다 뒤져 보아도 답이 안나와서 도움을 요청합니다.. ㅜㅜ


우선 기존에 올린 질문 링크 하겠습니다.

https://tailstar.net/autohotkey/13208714


기존질문을 간단하게 요약을 하자면 


일정한 범위안 랜덤한 위치에 특정 색상의 10개의 숫자가 나타나게 되고

그 숫자를 차례대로 입력을 해야합니다.

숫자의 색깔은 매번 바뀝니다. 

(숫자가 나타날때 서로 다른색상의 숫자10개가 나타나진 않습니다.)


처음에는 색상이 30~40개 정도만 보이길래 일일이 캡쳐를 할려고 했는데

이미지 서치가 안되길래 그림판으로 작업을 하면서 자세히 보니까 색깔이 미묘하게 조금씩 달랐습니다.

해당문제의 원인을 찾아보니

숫자의 이미지도 불투명한줄알았는데 투명한 이미지였고 숫자 뒤의 배경도 하얀 줄(?)같은게 왔다갔다 거려서 

이미지 서치를 방해하는겉 같았습니다.


이미지 서치쪽으로 하려다가 제 힘으로는 도저히 해결이 안되서

답글 달아주신 내용을 보고 OCR쪽으로 방향을 잡고 다시 할려고 우선 아래링크에서 정보를 얻고 


http://ahkplant.tistory.com/

https://autohotkey.com/board/topic/69127-ocrahk-library-for-recognizing-text-in-images/


위 링크에서 받은 파일중

OCR-preview.ahk 파일의 스크립트를 첨부 하겠습니다.




/**

 * OCR library preview script by camerb, excellent additions provided by tidbit

 *

 * This tiny script serves as a quick way to see what text will be picked up by the OCR library.

*/


#SingleInstance force

#Include OCR.ahk


;sometimes this helps to ensure more consistent results when switching from one window to another

CoordMode, Mouse, Screen


widthToScan=200

heightToScan=50


gui, -border +AlwaysOnTop

gui, color, 0xFF44AA

gui, show, w%widthToScan% h%heightToScan%,OcrPreviewWindow

sleep, 200

WinSet, Transparent, 50, OcrPreviewWindow


Loop

{

   MouseGetPos, mouseX, mouseY

   topLeftX := mouseX

   topLeftY := mouseY - heightToScan


   WinMove, OcrPreviewWindow, , % topLeftX+2, % topLeftY-2


   options:=""

   if keyIsPressed("d")

      options.=" debug"

   if keyIsPressed("n")

      options.=" numeric"


   ;NOTE: this is where the magical OCR function is called

   magicalText := GetOCR(topLeftX, topLeftY, widthToScan, heightToScan, options)


   liveMessage=Here is the text that GetOCR() found near your mouse:`n%magicalText%`n`nPress ESC at any time to exit`nHold the 'N' key to see output using the "numeric" option.`nHold the 'D' key to see output using the "debug" option.

   ToolTip, %liveMessage%

   Sleep, 100

}

;end of script (obviously this never really exits)


Esc:: ExitApp


keyIsPressed(key)

{

   If (getkeystate(key,"p") == "U")

      return false

   Else If (getkeystate(key,"p") == "D")

      return true

   return getkeystate(key,"p")

}


서론이 너무 길었네요. 정리해서 질문을 드리면..

1. 지금 제 상황에서 이미지서치쪽으로 해결할수있는 방법이 있을까요?
  노가다가 심하더라도 상관없습니다.

2. 위에 첨부한 OCR 스크립트를 마우스위치가 아닌 이미지서치처럼 제가 특정위치를 지정하여 그 위치의 이미지를
   문자 인식 할수 하는법이 없을까요?   CoordMode 쪽이랑 다른쪽을 손봐야 될꺼같은데 감이 잡히질 않네요..
    (OCR로 인식한 문자를 메세지박스로 나오게 했더니 이상한 문자가 수십줄이 나오고
     제가 지정한 범위가 아닌 엉뚱한곳이 잡힙니다..)

3.이미지서치나 OCR 말고 다른쪽으로 해결할수있는 방법이 있나요?


  • 프리헌터스 2016.03.04 10:22

    1. 제생각으론 OCR이 답일것 같고요.

    2. 마우스겟포스 없애고 좌표영역을 직접 입력해주면 될것 같습니다.

       magicalText := GetOCR(topLeftX, topLeftY, widthToScan, heightToScan, options)

       요기 좌푱영역과 옵션 바로지정하면 되는것 같은데요

    3. 어차피 이미지정보를 토대로 매칭여부, OCR 등을 처리하므로 둘 가지 방법밖에 없을것 같습니다.


    참고로 

    이미지서치, OCR전 해당이미지 전처리 해주는게 좋습니다.

    그레이스케일, 레벨링 등을 사용하여 흰색/백색으로 이미지를 변경해주면

    이미지서치나 OCR시 인식률이 상당히 높아집니다.

    이미지서치시에도 0~9까지 이미지DB 만 필요하고요



  • 뎅뎅 2016.03.04 22:53
    답변 감사합니다.
    2번의 경우 말씀하신대로 해봤는데 지정된곳이 서치가 재대로 안되더라구요..
    아예 엉뚱한곳이 서치가 되는건지 모르겠는데 범위도 훨씬 늘어났는지 이상한 문자만 빼곳해고 잡히네요..

    그레이 스케일쪽은 검색해보니 자체적인 명령어는 제가 찾아봤는데 찾을수가 없어서..
    대신 명령어를 만들어 쓰씨는분이 있긴한데
    이미지 파일을 흑백 처리를 하시던데

    게임 화면을 바로 흑백 처리해서 ocr로 인식시키는 방법이 있나요??
    아니면 위에 말씀하신 방법대로면 흑백처리를 한 이미지파일을 ocr에 어떻게 접목시킬수있는지
    궁금합니다.

    저의 짧은 생각으로는 색상을 가진 10개의 숫자가 나타나면
    해당 10개의 숫자화면은 캡쳐한후 흑백처리를 하고 그 파일을 ocr로 인식시는거 같은데
    이 방법을 말씀하신게 맞는지 모르겠네요..
  • 프리헌터스 2016.03.05 00:47

    1. OCR 기능은 스샷한 이미지의 모양을 문/숫자로 변형시켜주는 기능입니다.

       이미지의 색상에 상관없이 글자색과 배경색이 명확할수록 인식률이 좋습니다.

       투명등으로 백그라운드의 색상이 지저분하므로 레벨기능으로 배경색을 단순화시켜주는게 좋습니다.

       그레이스케일로 변환후 레벨링하면 검정/흰색 2색상으로 변환하여 OCR하면 됩니다.

       다만, 위 소스상 이미지파일이 아닌 화면을 직접 스샷후 OCR하는 것 같습니다.

       아마 이미지파일을 사용하는 함수도 있을겁니다. 한번 찾아보세요


    2. 이미지매칭 방식으로 사용시.

       원본의 이미지와 화면스샷 이미지를 비교하는 기능인데요

       같은 숫자는 항상 동일색상인경우 굳이 그레이스케일 변환이 필요없습니다만

       임의의 색상으로 표현된다면 0~9 원본이미지가 색상별로 준비되어야 합니다.

       그레이스케일-> 레벨링 과정을 거치면 0~9의 1세트의 원본이미지만 있으면 되겠죠.

       원본이미지의 이미지 조정과 화면스샷이미지의 이미지 조정은 동일하게 조정해주어야 합니다.

       OCR보다 색상차 영향이  크므로 투명이미지인경우 반드시 레벨기능이 필요해 보입니다.

    ----------------------------------------------------------------------

      OCR 영역지정은 오핫을 모른관계로 정확한 답변은 못해드리고. 

      다만 윈도우 전체에서 X,Y 좌표인지, 해당 폼에서X,Y 좌표인지 확인해보세요

  • 뎅뎅 2016.03.05 01:08
    친절한 답변 감사드립니다.

    내용응 찾아보니 제가 감당할수 없는 위치까지 온거같지만..
    천천히 다시처음부터 하나씩 해봐야겠네요..

    다시한번 댓글 주셔서 감사합니다.
  • 우후훅 2016.03.05 11:42

    OCR로 읽었을때 문자 인식 재대로 안되는 부분들이 이상한글자로 나오는거에요.

    이게 숫자와 배경간의 경계선이 모호할경우 특히 인식률 현저히 떨어져요.

    그레이스케일이고 뭐고 바꾸고 별 쇼를 다해봐도 안되는건 안되더군요.

    배경이미지가 있는경우 쉽지 않아요. OCR의 아주 세부적인 부분이나 거기에 맞는OCR이 있겠지만,

    이쪽 전문가 아니면 좀 힘들거같던데요. 전문 OCR프로그램들 여러가지해봤는데도 안됨...

    보니까 저 숫자가 오토방지 숫자같은데, 이런건 OCR로 하기 힘들게 제작되어있어요. 스크레치도 있다는거보니..

  • 뎅뎅 2016.03.06 05:10
    제가 글에 올린 스크립트로 우선 재대로 OCR이 작동되는지 확인을 해본뒤에 똑같은 이미지를 특정위치로 놓고
    그 이미지가 있는 위치만 OCR인식을 해봤는데 완전히 엉뚱한곳이 잡히는것 같드라구요.

    우후훅님 말씀대로 뒤에 배경에 이상한 줄이나 무늬가 있으니 문자인식률이 현저하게 떨어지드라구요..
    처음에는 OCR이 지정범위에 재대로 인식이 되는지 해볼려고 했는데
    위 스크립트로 인식을 시켜보니 재대로 안되서 OCR쪽은 솔직히 지금 손을 거의 놓은상태네요..
    이미지 서치쪽을 다시 처음부터 차근차근히 다른방법이 있나 해볼려구요.

    제가 이런 프로그랭쪽은 살면서 처음 하는거라서 작은 문제만 나와도 중간중간에 막히는게 너무 많드라구요
    구글링이나 블로그글도 하나하나 꼼꼼히 읽어 보더라도 이해안되는게 너무 많아서 기초부터 다시 천천히 해볼생각입니다.

    쉽지않은 문제일텐데 많은 관심 가져주셔서 감사드리고 답변 주셔서 다시 한번 더 감사드립니다.

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 블택2 비활성클릭 성공하신분 잇으신가요 .. 4 미천성 2016.03.30 0/0
질문 숫자이미지를 ocr로 안되는데 혹 다른 방법 있을까용?? 2 오켕 2016.03.13 0/0
질문 이미지 비교 질문 2 풍운대사 2016.03.11 0/0
질문 이미지를 계속 누르고 있게할 방법이 있나요? 2 난느려 2016.03.29 0/0
질문 함수안에서 다른 함수를 호출할 수 있나요? 3 거룩한검 2016.03.13 0/0
질문 USB 고유코드가져오는코드인데 문법좀 바꿔주세요. 3 cjh71 2016.03.11 0/0
질문 postmessage에서 인자로 쓰이는 윈 타이틀 2 우리유미씨 2016.03.26 0/0
자유 [ 메이플 ] 매크로 사용 가능여부 1 알씨다이 2016.03.16 0/0
질문 SendMessage 또는 PostMessage 로 Gui를 Disable이 가... 1 타치코마 2016.03.10 0/0
질문 오토핫키는 생성자 같은거 없나요? 3 reavil 2016.03.12 0/0
질문 루프에서 변수값 호출에 관한 질문입니다 ㅠ 2 화프 2016.04.04 0/0
질문 외치기님이 올려주신 푸쉬블엣을 오핫이용해서 사용중... 3 지니블렉션 2016.03.29 0/0
질문 gui 드롭다운리스트 질문드려요 6 쵸쵸 2016.03.05 0/0
질문 원클릭 블루스택 해상도 설정 방법 4 파랑상 2016.03.12 0/0
질문 메이플매크로/인식이안되도 스크립이 진행되는문제 2 세나블텍 2016.03.04 0/0
질문 gdip 범위지정서치 질문합니다. 8 N4N2 2017.09.07 0/0
질문 블루스택에서 ESC키 입력하는 법 질문드립니다. 2 amoure 2016.03.04 0/0
질문 특정위치 클릭 방법 질문 드리겠습니다. 5 까스배달소년 2016.03.29 0/0
질문 OCR 과 이미지서치 문제가 안풀립니다.. 6 뎅뎅 2016.03.06 0/0
질문 Gui combobox 관련 질문 드립니다. 2 덩구리얌 2016.03.04 0/0
Board Pagination Prev 1 ... 125126127128129130131132133 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글