NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 OCR 특정 이미지의 숫자를 판독해주는 프로그램.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 오늘은 OCR(Optical Character Reconition: 光學文字認識, 광학문자인식)을 이용해서 이미지의 숫자를 문자로 추출하는 방법에 대해 알아보겠습니다. OCR 숫자 또는 문자 판독은 이미지의 글자가 정자체고, 다른 색상과 겹치지 않아야 정확하게 인식할 수 있습니다. 물론~ 좀 더 고난이도의 기술(?)을 사용하면 캡챠와 같은 이미지에서 숫자를 추출할수도 있긴합니다. 간단한 테스트를 위해 엔지엠 에디터를 실행하고 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    단순히 이미지에서 숫자와 문자를 추출하는건 간단합니다. 이 방법을 이해하려면 아래 글을 참고하셔서 예제를 학습 해보세요.

    문자 위치를 판독하고 읽어주는 TTS 매크로 만들기. (OCR 스마트 체크) ]

     

    가장 간단한 방법은 [ OCR 체크 ] 액션을 사용하는겁니다. 숫자를 추출해서 연산에 사용하고 싶을 수 있는데요. 이런 경우에 아래와 같이 숫자 사용을 하면 0부터 9까지 숫자만 인식할 수 있어서 사칙 연산 기호를 인식시킬 수 없게 됩니다. -100, +100과 같은 문자들이죠^^;

    FnFe6py.png

     

     

    이런 경우에는 숫자와 인식하고 싶은 기호를 직접 처리할 수 있습니다. OCR 체크 액션의 속성에 아래와 같이 입력 해줍니다.

    • 파라메터 값: 0123456789+-
    • 파라메터 이름: tessedit_char_whitelist

    MPGnO3I.png

     

     

    기호는 글자보다 인식할 수 있는 픽셀 범위가 작아서 인식율이 떨어지는 경우가 많습니다. 아래 동영상을 보면 -100을 정상적으로 인식하지 못하고 있습니다.

    8cfrILj.gif

     

     

    이미지의 해상도(이미지 크기)를 높이면 인식할 수 있는 픽셀 범위가 커져서 정상적으로 숫자와 기호를 인식하게 됩니다. 참고로, 파라메터를 추가 했으면 숫자 사용 속성을 False로 변경해야 합니다. 이제 실행해보면 -100으로 잘 인식되는걸 확인할 수 있습니다.

    u5cVDst.gif

     

     

    OCR 체크 액션은 파라메터를 통해 사용자가 임의로 제어할 수 있는 기능들이 존재합니다. 이 예제에서는 "tessedit_char_whitelist" 화이트 리스트를 통해 인식하고 싶은 문자만 등록하는 방법에 대해 알아봤습니다. 만약, 숫자와 영어 그리고 특수문자를 인식시키고 싶으면 "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:;,.!-()#&÷"와 같이 사용할수도 있습니다.

     

    이외에도 자동차 번호판 인식과 같이 이미지가 정자로 안되어 있는 경우들도 있습니다. 아래 그림과 같이 도구 상자의 조건 카테고리에 [ OCR 스마트 체크 ] 액션을 추가 해줍니다.

    fwBe51m.png

     

     

    인식할 이미지는 영수증인데요. 이미지 전체 영역을 선택하고, 실행해보세요. 영수증이라는 문자가 인식된걸 알 수 있습니다.

    hq2X0CJ.gif

     

     

    작은 글자는 인식할 수 없어서 가장 큰 영수증 글자만 인식하도록 옵션을 설정 했습니다. 글자를 직접 검출하기 위해 이미지를 흑백(Gray scale)으로 처리하고, 트레시홀드(Threshold)를 적용시킵니다. 그러면 아래와 같은 이미지가 만들어집니다.

    VZwRM00.png

     

     

    내부적으로 글자 영역을 찾기 위해 컨투어(Contour)를 적용시킵니다. 컨투어를 적용시키는 이유는 컨투어 영역을 사각형으로 그리기 위함입니다.

    iDemHhM.png

     

     

    이렇게 글자라고 판단되는 컨투어 영역을 사각형으로 그렸습니다. 그런데 여기서 상단 영수증이라는 글자 외에도 뭔가 더 검출이 되었습니다.

    JP6hOFs.png

     

     

    OCR 스마트 체크 액션의 조건 옵션을 통해 불필요하다고 판단되는 컨투어 영역을 제거 해줍니다.

    TIY86zt.png

     

     

    상단 영수증 글자의 기울기를 구해줍니다. 그러면, 이미지를 아래와 같이 정 위치로 조정할 수 있습니다. 기울기는 첫번째 컨투어 영역과 마지막 컨투어 영역의 중심점으로 세타를 구해서 라디안 값을 만듭니다. 글리고, 라디안 값을 디그리로 변환하여 적용시키면 기울기를 구할 수 있습니다.

    hIoSEOS.png

     

     

    문자라고 인식된 영역을 잘라내 메모리에 별도로 저장 해둡니다.

    f1RypN3.png

     

     

    문자가 작은 경우 인식률이 떨어지므로 리사이즈로 크기를 늘릴 수 있습니다.

    UdHDACO.png

     

     

    이미지를 늘리면 늘어난만큼 이미지가 흐려집니다. 그래서, 다시한번 트레시홀드 처리를 해서 선명하게 만들어줍니다.

    aLjM7d0.png

     

     

    아래는 자동차 번호판을 찾아서 문자로 변환 해주는 동영상입니다. 조건을 19오7777로 입력하면 찾은 글자의 위치를 클릭할수도 있습니다.

    HZuvj50.gif

     

     

    여러개의 문자도 추출할 수 있습니다. 대신, 문자의 크기와 모양이 비슷해야 합니다.

    ZWTzUmA.gif

     

     

    아래 동영상과 같이 일치하는 문자가 발견되면 클릭할 수 있습니다.

    lEDcFhK.gif

     

     

    이외에도 인공지능으로 학습된 AI 문자 판독 기능도 포함되어 있습니다. 이 기능을 여기에서 모두 설명하기에는 내용이 복잡해지므로 기본적인 내용을 먼저 학습하신 후 인공지능 숫자 판독 기능도 테스트 해보시면 좋을거 같습니다. 참고로, 이와 관련된 내용들은 매뉴얼 > 팁 앤 테크 게시판에 작성되어 있으니 한번 천천히 읽어보시기 바랍니다^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.