NGMsoftware

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

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

    팁 앤 테크

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

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

    커스텀 2부 - 구글 비전 AI로 OCR 다중 언어 인식 만드는 방법. (How to Create OCR Multilingual Re…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 다중 언어(한글과 영어 및 숫자) 문자 인식을 커스텀 모듈로 만드는 방법에 대해 글을 작성중입니다. 왜 이 글을 작성하는지는 [ 1부 ]를 참고하시면 됩니다. 1부 내용을 안보셨으면 이 내용을 학습할 수 없으니 꼭~ 읽어보고 오시기 바랍니다^^ 만약~ 코딩이 귀찮다면 이 글의 첨부 파일과 [ 커스텀 모듈 ]을 다운로드 후 구글 API만 받아서 폴더에 복사해도 됩니다. 커스텀 모듈을 구매하시면 기본적인 셋팅은 원격으로 도와드립니다!

     

    자~ 커스텀 모듈을 개발하기 위한 준비를 해야 하는데요. [ 커스텀 모듈 제작 도움말 ]이 있으니 참고하셔서 기본적인건 미리 준비해주세요. Visual Studio를 실행하고, 커스텀 모듈을 하나 추가 해줍니다. 저는 아래와 같이 CustomGoogleOcrModule로 이름을 지었습니다.

    0XiZlii.png

     

     

    클래스명을 OcrModel로 변경하세요.

    namespace CustomGoogleOcrModule
    {
        public class OcrModel
        {
        }
    }

     

     

    프로젝트 참조에 커스텀 모듈 개발 라이브러리들을 추가 해줍니다. 이 라이브러리들은 엔지엠 매크로와 사용자가 커스텀으로 만든 모듈이 호환될 수 있도록 해줍니다^^

    wDanGDJ.png

     

     

    "NGM.Models.Interface.BaseCustomToolModel"을 상속 받으면 아래와 같이 기본 구조가 만들어집니다.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CustomGoogleOcrModule
    {
        public class OcrModel : NGM.Models.Interface.BaseCustomToolModel
        {
            public override string DisplayCategory => throw new NotImplementedException();
    
            public override string DisplayName => throw new NotImplementedException();
    
            public override void Execute()
            {
                throw new NotImplementedException();
            }
        }
    }

     

     

    엔지엠 에디터에 표시될 카테고리와 액션 이름을 아래와 같이 설정 해주세요.

    public override string DisplayCategory => "Google APIs";
    public override string DisplayName => "Vision AI";

     

    구글 API를 사용하기 위해 구글 패키지를 설치해줍시다. 아래 그림과 같이 프로젝트에서 우클릭 후 NuGet 패키지 관리를 클릭하세요.

    t4und2s.png

     

     

    "Google.Cloud.Vision"을 검색하고, 설치 해주세요. 우측에 설치 버튼을 누르면 됩니다. 여기서 주의할점은 버전이 3.2.0.0을 설치해야 한다는점입니다.

    Xu3DsnO.png

     

     

    버전을 선택하려면 아래 그림처럼 우측의 버전에서 3.2.0을 선택하시면 됩니다. 저는 이미 설치되어 있기 때문에 설치됨으로 나오지만, 처음 하시는 분들은 버전을 선택하고, 설치를 누르면 해당 버전으로 설치가 진행됩니다.

    c8skZda.png

     

     

    변경 내용 미리 보기에서 어떤것들이 설치되는지 확인하고, "확인"을 누르세요.

    wbcrQX8.png

     

     

    1부에서 다운로드 받은 키파일을 쉘에 등록해줍니다. 인증은 환경 변수를 설정하여 애플리케이션 코드에 사용자 인증 정보를 제공합니다. 그렇기 때문에 아래 명령을 통해 시스템에 등록해야 합니다. 우선, 키 파일을 내문서의 NGM6 폴더에 복사 해줍니다. CMD를 관리자 권한으로 실행하고, 아래 명령을 실행하세요.

    set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH

     

    시스템 변수에 정상적으로 등록되었는지 확인하기 위해 내 컴퓨터의 속성을 클릭하세요. 아래 그림과 같이 "고급 시스템 설정"을 클릭해줍니다.

    qdGirKQ.png

     

     

    고급 탭에 환경 변수를 클릭하세요.

    AjDSn7M.png

     

     

    하단의 시스템 변수에 "GOOGLE_APPLICATION_CREDENTIALS"이 등록되어 있는지 확인하세요.

    EgsZR78.png

     

     

    만약, 환경 변수에 등록되어 있지 않다면 아래와 같이 직접 추가해야 합니다. 변수 값은 1부에서 다운로드 받은 키 파일을 추가해줘야 합니다. 이 작업이 완료되면 컴퓨터를 리부팅해야 정상적으로 시스템에 적용됩니다. 꼭 리부팅 후 다시 진행 해주세요.

    VbU95BF.png

     

     

    이제 개발 준비는 완료 되었습니다. 아래와 같이 속성을 하나 추가 해줍니다.

            [Category("Action")]
            [DisplayName("이미지 선택")]
            [Description("문자를 판독할 이미지를 선택 해주세요.")]
            [Browsable(true)]
            [DefaultValue(null)]
            [Editor(typeof(NGM.Models.TypeEditor.OpenFileSelectorEditor), typeof(UITypeEditor))]
            public string ImagePath { get; set; }

     

    이 속성은 문자를 판독할 이미지를 사용자가 선택할 수 있도록 해주는 Property(프로퍼티, 속성)입니다. 카테고리가 액션이므로 사용자가 어떤 동작을 수행해야 한다는 의미를 나타내고 있습니다. 이렇게 속성 위에 대괄호로 선언된 부분을 어트리뷰트(Attribute, 특성)라고 부릅니다. 여기서 중요한점은 6번째 라인의 Editor입니다. 이 특성을 부여하면 속성을 클릭할 때 사용자가 파일을 선택하기 쉽도록 상호 대화형 GUI를 제공합니다. 쉽게 말해서 파일 선택 상자를 표시해줍니다. 마지막으로 이미지에서 추출한 문자를 표시할 속성을 아래와 같이 추가 해주세요.

            [Category("Data")]
            [DisplayName("결과 값")]
            [Description("이미지에서 추출한 텍스트를 표시합니다.")]
            [Browsable(true)]
            [DefaultValue(null)]
            [Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))]
            public string Result { get; set; }

     

    여기서도 Editor에 정의된 특성(Attribue)이 중요합니다. 이 특성을 부여하면 멀티 라인으로 텍스트를 확인할 수 있는 창을 만들 수 있습니다. 이제 첨부되어 있는 파일을 참조에 추가한 후 컴파일 하세요. 참조 추가는 아래와 같이 진행하시면 됩니다.

    pyXb0Eg.png

     

     

    찾아 보기를 클릭하세요. 그리고 다운로드 한 파일의 압축을 해제하고, 선택하면 됩니다.

    GXCLS3K.png

     

     

    커스텀 모듈을 전체 빌드한 후 생성된 모든 파일을 복사하고, 내문서 > NGM6 > ToolExtension 폴더에 붙여넣기 하세요.

    ohRan0R.png

     

     

    엔지엠 에디터를 실행한 후 새로운 스크립트를 추가 해줍니다.

    aIdzK2H.png

     

     

    사용자 도구에 보면 Google APIs 카테고리가 생성되고, Vision AI 액션이 추가된 것을 확인할 수 있습니다. 스크립트에 드래그하여 추가 하세요.

    HS1ekzo.png

     

     

    아래와 같은 이미지를 생성한 후 선택 해줍니다. 아래 이미지를 다른 이름으로 저장한 후 선택하시면 됩니다.

    XjdQx3j.png

     

     

    실행하면 아래와 같이 문자가 판독된것을 확인할 수 있습니다.

    FeBZyh0.png

     

     

    무료 OCR에서 다중 언어를 처리하지 못하는 문제를 해결하려면 유료 OCR 도구를 사용해야 합니다. 그중에서 대표적인 도구가 구글 Vision AI인데요. 엔지엠에서 외부 OCR 도구를 사용하는 방법에 대해 간단하게 알아봤습니다. 사실, 엔지엠에서 제공하는 조건 인터페이스를 구현하면 더 많은 기능을 추가할 수 있습니다. 이외에도 구글에서 제공하는 수많은 API들을 잘 활용하면 많은 것들을 쉽게 처리할 수 있기도 합니다. 다음에는 더 좋은 내용으로 찾아뵙겠습니다^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.