NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Python 인공지능을 이용한 파이썬 이미지 문자 인식 매크로 제작하는 방법. (with Python, ChatGPT)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠소프트웨어의 매크로 제작 강좌들을 관심있게 보신분들은 이미 업무자동화 RPA 매크로를 제작해서 사용하고 계실수도 있습니다. 아니면, 엔지엠소프트웨어에 매크로 제작 의뢰를 하시거나 그랬을거예요. 매크로 제작 강좌는 파이썬, C#, C++등등... 다양한 언어로 설명하고 있습니다. 

    [ 누구나 쉽게 제작할 수 있는 C# 매크로 제작 강좌 ]

    [ 누구나 쉽게 제작할 수 있는 파이썬 매크로 제작 강좌 ]

     

    대부분 마우스 클릭, 키보드 텍스트 입력, 이미지 서치등등에 대해서만 설명했었는데요. 이 글은 이미지에서 문자를 추출해서 텍스트로 변환해주는 방법에 대해 설명합니다. 게임의 경우에는 거래소나 아이템 가격등등에 사용할거 같습니다. 주식이나 코인 또는 뭔가 자리를 예약하는 매크로인 경우 시세나 자리 번호 또는 날짜를 인식해서 선택할 수 있을겁니다. 이외에도 응용할 수 있는 부분들이 많으니 알아두면 좋은 기술이긴 합니다. 생각보다 이미지로 되어 있는 텍스트를 읽어서 범위를 비교해야 할 일들이 많거든요. 단순히 주식이나 코인만 하더라도 시세에서 얼마 이상 또는 이하면 매도, 매수를 해야 하니까요^^

    [ 주식, 코인, 해외선물 자동 매매 매크로 제작 ]

    ihO0cpV.gif

     

     

    ChatGPT를 실행하고, 아래와 같이 질문 해보세요.

    5QcCza3.png

     

     

    뭔가 더 정확한 요구 사항을 물어보네요. 정말 신기하죠? OCR(광학 문자 인식: Optical Character Recognition)은 다양한 방법들이 존재합니다. 위에서도 알 수 있듯이 테서랙트(Tesseract)와 Google Cloud Vision, AWS등이 있습니다. 테서랙트는 오픈소스로 무료입니다. 그래서, 대부분의 매크로 프로그램들이 이걸 사용하고 있습니다. 하지만, 좀 더 정확하게 동작하면서 자동 입력 방지인 캡챠(CAPTCHA)까지 자동으로 처리하려면 Google Cloud Vision(Vision AI라고 부르기도 함)을 사용해야 합니다.

    [ 엔지엠소프트웨어의 인공지능 문자 인식 매크로 제작 ]

    FeBZyh0.png

     

     

    ChatGPT가 요구한 내용들을 정리해서 다시 질문 해봅시다.

    giGo35P.png

     

     

    네, 이해했습니다! 파이썬에서 Tesseract OCR을 사용하여 이미지에서 문자를 인식하고, 인식된 문자를 텍스트 파일로 저장하는 매크로를 만드는 방법을 알려드리겠습니다.

    1. 필요한 라이브러리 설치하기
      먼저, Tesseract OCR을 사용하기 위해 pytesseract 라이브러리를 설치해야 합니다. 아래 명령어를 터미널에서 실행하여 설치할 수 있습니다.
    pip install pytesseract
    

     

    그리고 이미지 파일을 다루기 위해 Pillow 라이브러리도 설치해주세요.

    pip install Pillow
    

     

    1. OCR 매크로 작성하기
      아래 코드는 Tesseract OCR을 사용하여 이미지에서 문자를 인식하고, 인식된 문자를 텍스트 파일로 저장하는 매크로입니다. 이미지 파일 경로를 image_path 변수에 지정하고, 인식된 문자를 저장할 텍스트 파일 경로를 output_path 변수에 지정하면 됩니다.
    import pytesseract
    from PIL import Image
    
    # 이미지 파일 경로
    image_path = '이미지 파일 경로'
    
    # 인식된 문자 저장할 텍스트 파일 경로
    output_path = '저장할 파일 경로'
    
    # OCR 엔진 설정
    pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    
    # 이미지 불러오기
    image = Image.open(image_path)
    
    # OCR 인식 실행
    text = pytesseract.image_to_string(image, lang='kor')
    
    # 인식된 문자 텍스트 파일로 저장
    with open(output_path, mode='w', encoding='utf-8') as f:
        f.write(text)
    

     

    위 코드를 실행하면 이미지에서 인식된 문자가 텍스트 파일로 저장됩니다. 단, Tesseract OCR은 이미지 품질에 따라 인식 정확도가 크게 달라질 수 있으므로, 인식 결과를 검토하시고 필요에 따라 이미지 품질을 개선해 주시기 바랍니다.

    위 코드에서 lang 매개변수는 OCR 인식에 사용할 언어를 지정하는 매개변수입니다. 만약 다른 언어로 인식하고 싶다면, 해당 언어의 Tesseract OCR 데이터 파일을 다운로드하고 lang 매개변수에 해당 언어 코드를 입력하면 됩니다. 예를 들어, 영어 OCR을 수행하려면 lang='eng'으로 설정하면 됩니다.

    참고로, Tesseract OCR을 사용하여 한글 문자를 인식하려면 tesseract-ocr-kor 데이터 파일을 설치해야 합니다. 해당 데이터 파일은 아래 링크에서 다운로드하실 수 있습니다.

     

    데이터 파일을 다운로드한 후, Tesseract OCR 실행 파일이 설치된 경로에 tessdata폴더안에 복사해야 합니다.

    파이썬 코드를 실행하면 이미지에서 문자를 인식해서 텍스트 파일로 저장해줍니다.

     

    Visual Studio Code를 실행하고, 코드를 붙여넣기 하세요.

    VlucCw3.png

     

     

    인식할 이미지는 아래 이미지를 다운로드 받아서 바탕화면에 놓고, 경로를 설정하면 됩니다.

    1sHF0HJ.png

     

     

    파이썬 매크로를 실행 해볼까요? 그러면, 바탕화면에 ocr.txt 파일이 만들어집니다. 파일을 열어보면 이미지에서 문자를 추출 해준것을 확인할 수 있습니다.

    HImKqBV.png

     

     

    정말 대단한거 같아요. 개발자가 아니라면 할 수 없는것들을 일반인이 처리할 수 있다는게 정말 놀랍습니다. 여러분들도 아마 감탄하고 있을텐데요. 이번에는 엔지엠 매크로에서 이미지를 텍스트로 인식시키는 방법을 한번 테스트 해보세요. 몇가지 옵션들을 조정하면 좀 더 정확하게 인식시킬 수 있습니다.

    9rMOOyI.png

     

     

    ChatGPT가 인식한 텍스트는 아래와 같습니다.

    안 녕 하 세 요 ! 0 매 크 로 를 만 들 어 드 리기 전 에 , 몇 가 지 추 가 적 인 정 보 를 알 려 주 시면 제 가
    더 욱 정 확 하 게 답 변 을 드 릴 수 있 습 니 다 .

     

    텍스트가 문자 하나하나 분리되어 스페이스가 추가되어 있습니다. 그리고, 아쉬운점은 다중 언어를 인식하지 못한다는 것입니다. OCR이라는 영어가 숫자 0으로 표시되었네요. 코드를 좀 더 다듬으면 다중 언어처리도 가능한데요. 아무튼~ 이번에는 엔지엠 매크로에서 결과를 확인 해볼께요.

    waWHKxo.png

    안녕하세요! OCR 매크로를 만들어드리기 전에, 몇 가지 추가적인 정보를 알려주시면 제가
    더욱 정확하게 답변을 드릴 수 있습니다.
    

     

    ChatGPT보다 엔지엠 매크로가 좀 더 자연스러운걸 알 수 있습니다. 하지만, 텍스트 위치를 파악해서 클릭하거나 정확하게 인식해야 하는 경우에는 구글 클라우드 비전을 이용하시는게 좋습니다. 사용량에 따라서 과금이 되는 구조라서 많은 분석이 필요한 경우에는 비용이 부담될 수 있습니다. 한달 사용량을 분석해보고, 적절하게 섞어서 사용하시는걸 추천드립니다. 마지막으로 ChatGPT에게 한글과 영어가 섞여 있을 때 같이 처리할 수 있는 방법에 대해 물어봤습니다.

    f2ZAhpy.png

     

     

    한글과 영어를 같이 처리하려면, Tesseract OCR에서 한글과 영어를 함께 인식할 수 있는 데이터 파일을 사용해야 합니다. 다음은 Tesseract OCR에서 한글과 영어를 함께 인식할 수 있는 데이터 파일을 사용하는 방법입니다.

    1. 한글과 영어 인식 데이터 파일 설치하기
      Tesseract OCR에서는 다양한 언어를 인식할 수 있도록 학습된 데이터 파일이 필요합니다. 한글과 영어를 함께 인식할 수 있는 데이터 파일은 다음 사이트에서 다운로드 받을 수 있습니다.

    위 페이지에서 kor+eng 데이터 파일을 다운로드 받습니다. 이 데이터 파일을 Tesseract OCR 실행 파일이 있는 폴더 내의 tessdata 폴더에 복사합니다.

    1. OCR 매크로 작성하기
      아래는 한글과 영어를 함께 처리할 수 있는 OCR 매크로 예제입니다. 이미지에서 인식할 언어를 lang 매개변수에 kor+eng으로 지정하면, 한글과 영어를 함께 처리할 수 있습니다.
    import pytesseract
    from PIL import Image
    
    # 이미지 파일 경로
    image_path = '이미지 파일 경로'
    
    # 인식된 문자 저장할 텍스트 파일 경로
    output_path = '저장할 파일 경로'
    
    # OCR 엔진 설정
    pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    
    # 이미지 불러오기
    image = Image.open(image_path)
    
    # OCR 인식 실행
    text = pytesseract.image_to_string(image, lang='kor+eng')
    
    # 인식된 문자 텍스트 파일로 저장
    with open(output_path, mode='w', encoding='utf-8') as f:
        f.write(text)
    

     

    위 매크로를 실행하면, 이미지에서 한글과 영어가 함께 인식되어 텍스트 파일로 저장됩니다.

    참고로, Tesseract OCR은 이미지의 품질에 따라 인식 정확도가 크게 달라집니다. 따라서 이미지 품질을 개선하거나, 인식 결과를 검토하여 필요에 따라 수정하는 작업이 필요합니다.

     

    코드는 동일하지만, OCR 인식 실행에서 lnag(Language, 언어) 설정만 다릅니다. kor+eng로 변경하고 다시 실행 해볼께요. 이제는 한글과 영어가 제대로 표시됩니다.

    c7X8Pvi.png

     

     

    인공지능이 개발자를 대신해서 양질의 코드를 만들어줍니다. 이제 개발자가 설자리는 사라지는게 아닌가하는... 걱정이 생기기 시작했습니다. 이제는 테크닉이나 창의적인 기술이 아니면 대부분의 일들은 기계가 대체할거 같긴합니다. 스마트 팩토리나 스마트 팜과 같은 곳은 이미 많은 부분들이 자동화되어 있긴합니다. 아직 자동화의 불모지가 스마트 오피스와 스마트 워크인데요. 조만간, 이쪽 분야도 인공지능이 침투하지 않을까 생각되네요. 일반인 분들은 잘 모르시겠지만, 개발자들이 사용하는 통합 개발 환경(IDE)도 인공지능이 점점 좋아지고 있습니다.

     

    개발할 때 자주 사용하는 단순 반복적인 일들은 이미 개발 도구가 자동으로 감지해서 가이드를 해주고 코드도 입력 해줍니다. 오래전부터 개발을 해온 분들은 이 기능이 얼마나 편한지 잘 알겁니다. 단순 반복적인 코드를 줄이기 위해(중복도) 여러가지 활동들을 합니다. 이런 활동들조차 이제는 무의미해져가고, 왜 이런 활동들을 해야 하는지 희미해지고 있습니다. 개발 도구와 ChatGPT가 통합되어지고, 개발자들이 활용하기 시작하면 함수들도 자동으로 대부분 작성될겁니다. 개발자가 고객 요구 사항을 이해하고, 구조를 잘 정리하는 일만하면 코딩은 인공지능이 해줄테니... 단순 코딩만 하는 개발 수요는 많이 줄어들겠죠?

     

    이제는 정말~ 귀농해서 농사나 지으면서 살아야 하는 시대가 오지 않을까 생각되네요^^; 지금도 귀농하고 싶긴하지만요~

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.