본문 바로가기

카테고리 없음

이미지 매크로 제작 커뮤니티 - 가변 길이 문자열에서 OCR 문자 추출하는 방법

반응형

무료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product1&wr_id=32 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #매크로프로그램 #메크로 #g매크로 #마우스매크로 #키보드매크로 #엑셀매크로 #키매크로 #수강신청매크로 #로지텍마우스매크로 #매크로키보드 #파이썬매크로 #매크로뜻 #매크로마우스 #로지텍매크로 #ld플레이어매크로 #오토마우스매크로 #키보드마우스매크로 #오토핫키매크로 #이미지매크로 #이미지인식매크로 #하드웨어매크로 #화면인식매크로 #선착순구매매크로 #이미지서치매크로 #한글매크로

 

안녕하세요. 엔지엠소프트웨어입니다. 가변 길이 문자열이란 폰트에 따라서 문자의 폭이 줄어들거나 늘어나는걸 말합니다. 보통 폰트는 맑은 고딕, 굴림, 굴림체와 같은 이름을 가집니다. 여기서 굴림과 굴림체처럼 동일한 폰트 이름뒤에 "체"자가 붙는것들이 있습니다. 이 둘의 차이점은 아래와 같습니다.

  • ABCDEFGHIJKLMN 굴림
  • ABCDEFGHIJKLMN 굴림체

 

폰트 굴림과 굴림체의 차이는 알파벳에 따라 크기가 균일한지 가변적인지가 다릅니다. 물론, 모양도 약간씩 다르긴 하지만요^^; 알파벳 "I"나 "M"과 "N" 크기를 비교해보시면 알 수 있습니다. 아래와 같은 문자열이 있다고 생각 해보세요. 길이가 다르죠? OCR로 인식해야 할 부분이 슬래시(/) 뒤쪽 문자라고 하면 인식 영역이 매번 달라질겁니다.

  • TEST (공용) / ROCKET 1542-900
  • IIII (공용) / MISSILE 0905-482

 

위의 예처럼 인식 범위가 어느정도 여유가 있으면 넓게 OCR 영역을 설정해도 됩니다. 하지만, 인식 범위가 타이트(Tight)한 경우에는 문자 판독하기가 쉽지 않습니다. 테스트를 해볼까요? 엔지엠 에디터를 실행하고, 새로운 스크립트를 하나 추가 해줍니다.

 

 

이미지에서 문자를 판독하기 위해 아래 그림과 같이 [ OCR 체크 ] 액션을 스크립트에 추가하세요.

  1. 도구 상자 탭 클릭
  2. 조건의 OCR 체크 액션 선택
  3. 더블 클릭 또는 드래그로 스크립트에 추가

 

 

아래 동영상을 참고해서 인식할 이미지 영역을 잡아줍니다. 영역을 선택하고, F1을 누르면 문자를 판독할 영역이 선택됩니다.

 

 

스크립트를 실행(Ctrl+Alt+F8)하면 아래 동영상과 같이 정상적으로 문자가 판독된 것을 알 수 있습니다.

 

 

문자를 변경하고, 다시 실행 해볼까요? 아래 동영상과 같이 아쉽게도 인식하려는 글자의 앞부분 "R"이 짤렸습니다. 반대의 상황이라면 슬래시 문자가 들어가거나 슬래시 문자의 앞부분 문자가 하나 더 들어갈수도 있습니다. 이런 현상이 발생되는 이유는 인식 범위는 고정인데 문자열의 길이는 가변적으로 변화하기 때문입니다.

 

 

만약, 앞쪽의 문자를 인식하는거라면 좀 더 쉬울겁니다. 시작 위치가 고정적이니까요. 그렇지만, 인식할 문자도 가변적이라면 끝 부분의 문자가 짤리거나 다른 문자가 포함되어 원하는 문자만 추출하는데 문제가 발생하게 됩니다. 매크로를 사용하는 목적을 생각해보면~ 이런 문제에 대해서도 유연하게 대응이 되어야하지 않을까 생각합니다^^; 자 그럼, 이 문제를 어떻게 해결해야 할까요? 인식할 문자가 포함된 전체 영역을 잡고, 슬래시 부분을 기준으로 문자열을 분리한 후 뒤쪽 문자열만 사용하면 될거 같습니다. 일단 전체 영역을 선택해보죠.

 

 

스크립트를 실행(Ctrl+Alt+F8)하면 "IIII(38)/ROCKET 1542-900"와 같이 인식됩니다. 엔지엠의 문자 판독 기능은 한글과 영어를 동시에 인식할 수 없습니다. 한글과 영어가 혼합되어 있다면 아래 글을 참고하시면 도움이 될거 같습니다. 구글 Vision AI를 이용해서 다중 언어를 인식하는 방법입니다.

[ 한글과 영어 다중 언어 인식 매크로 ]

 

 

문자를 슬래시 기준으로 분리하려면 변수와 함수가 필요합니다. 일단, 판독한 문자를 변수에 저장 해줍시다. [ 변수 추가 ] 액션을 스크립트에 추가하세요.

  1. 함수 상자 탭 클릭
  2. 변수 카테고리 확장
  3. 변수 추가 액션 선택
  4. 더블 클릭 또는 드래그로 스크립트에 추가 (상단으로 이동: 콘트롤키+방향키)
  5. 아이디에 "판독문자" 입력
  6. 덮어 쓰기 속성을 True로 변경

 

 

OCR 체크 액션에서 판독한 문자를 "판독문자" 변수에 저장해줄겁니다. 아래 그림을 참고해서 변수를 추가하세요.

  1. 변수 카테고리의 추가하기 클릭
  2. 추가 버튼 클릭
  3. "판독문자" 변수를 선택하고, "판독 문자" 속성 선택
  4. 확인 클릭

 

 

슬래시로 문자열을 분리하려면 [ 문자열 분리 ] 액션을 사용하면 됩니다.

  1. 함수 상자의 표현식 카테고리 확장
  2. 문자열 분리 선택
  3. 더블 클릭 또는 드래그로 스크립트에 추가
  4. 속성창의 변수 카테고리에 가져오기 클릭
  5. 추가 버튼 클릭
  6. 변수 이름과 다이터에 각각 "판독문자"와 "원본 문자열" 선택
  7. 확인 클릭
  8. 분리자에 슬래시(/) 입력
  9. 인덱스 1 설정

 

 

"IIII(38)/ROCKET 1542-900" 문자열을 슬래시로 분리하면 두개의 배열이 만들어집니다. "IIII(38)", "ROCKET 1542-900"입니다. 우리는 "ROCKET 1542-900" 이 문자를 선택해야 하기 때문에 인덱스 속성의 값을 1로 설정해준겁니다. 만약, 이 값을 0으로 하면 "IIII(38)" 값이 선택됩니다. 인덱스를 2로 입력하면 에러가 나겠죠^^; 자~ 이제 이 값을 변수에 한번 더 저장 해줍니다.

  1. 변수 카테고리의 추가하기 클릭
  2. 추가 버튼 클릭
  3. 변수 이름과 데이터를 각각 "판독문자", "결과 값"으로 선택
  4. 확인 클릭

 

 

정상적으로 동작했는지 확인하기 위해 [ 메세지 박스 ] 액션을 하나 추가 했습니다. 그리고, 아래 그림을 참고해서 판독한 문자를 내용에 넣어주세요.

  1. 메시지 박스 액션을 스크립트에 추가
  2. 변수 카테고리의 가져오기 클릭
  3. 추가 버튼 클릭
  4. 변수이름과 데이터에 "판독문자", "내용" 선택
  5. 확인 클릭

 

 

스크립트를 실행하면 메세지 박스에 "ROCKET 1542-900" 문자가 판독된 것을 확인할 수 있습니다.

 

 

텍스트를 "TEST(공용)/ROCKET 1542-900"과 같이 변경하고, 다시 실행 해볼까요?

 

 

OCR의 문자 판독 영역은 고정되어 있더라도, 모든 문자를 가져와서 특정 구분자 또는 키워드로 분리해서 처리 해봤습니다. 이외에도 정규식이나 기타 여러가지 방법을 응용하면 좀 더 쉽게 원하는 결과를 얻을 수 있을겁니다. 위 예제는 간단해서 금방 처리할 수 있었지만, 이보다 복잡한 구조를 가진다면 다른 방법을 사용해야 할겁니다. 궁금한점이 있거나 잘 이해가 되지 않는 부분들은 [ 질문과 답변 게시판 ]  또는 [ 고객 서비스 ]방에 문의하시면 친절하게 답변 드리도록 하겠습니다.

 

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로

반응형