몇일동안 구글링도해보고 커뮤니티 사이트를 다 뒤져 보아도 답이 안나와서 도움을 요청합니다.. ㅜㅜ
우선 기존에 올린 질문 링크 하겠습니다.
https://tailstar.net/autohotkey/13208714
기존질문을 간단하게 요약을 하자면
일정한 범위안 랜덤한 위치에 특정 색상의 10개의 숫자가 나타나게 되고
그 숫자를 차례대로 입력을 해야합니다.
숫자의 색깔은 매번 바뀝니다.
(숫자가 나타날때 서로 다른색상의 숫자10개가 나타나진 않습니다.)
처음에는 색상이 30~40개 정도만 보이길래 일일이 캡쳐를 할려고 했는데
이미지 서치가 안되길래 그림판으로 작업을 하면서 자세히 보니까 색깔이 미묘하게 조금씩 달랐습니다.
해당문제의 원인을 찾아보니
숫자의 이미지도 불투명한줄알았는데 투명한 이미지였고 숫자 뒤의 배경도 하얀 줄(?)같은게 왔다갔다 거려서
이미지 서치를 방해하는겉 같았습니다.
이미지 서치쪽으로 하려다가 제 힘으로는 도저히 해결이 안되서
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. 제생각으론 OCR이 답일것 같고요.
2. 마우스겟포스 없애고 좌표영역을 직접 입력해주면 될것 같습니다.
magicalText := GetOCR(topLeftX, topLeftY, widthToScan, heightToScan, options)
요기 좌푱영역과 옵션 바로지정하면 되는것 같은데요
3. 어차피 이미지정보를 토대로 매칭여부, OCR 등을 처리하므로 둘 가지 방법밖에 없을것 같습니다.
참고로
이미지서치, OCR전 해당이미지 전처리 해주는게 좋습니다.
그레이스케일, 레벨링 등을 사용하여 흰색/백색으로 이미지를 변경해주면
이미지서치나 OCR시 인식률이 상당히 높아집니다.
이미지서치시에도 0~9까지 이미지DB 만 필요하고요