2017. 4. 14. 15:30

구글 비전 API는 머신비전(Machine Vision) api입니다.

머신 비전이라는 것은 컴퓨터의 눈처럼 시각정보(사진, 동영상 같은 것들)를 인식하고 처리하기위한 기술입니다.

 

구글의 비전 API는 웹에서도 체험할 수 있습니다.

참고 : 구글 클라우드 플랫폼 - CLOUD VISION API

 

이미지 넣고 결과를 기다리면 이미지를 분석한 정보를 보여 줍니다.

 

이 API를 등록하고 사용 방법을 알아보겠습니다.

 

연관글 영역

 

 

1. 구글 비전 사용

구글 클라우드 플랫폼의 콘솔로 들어가서 'Google Cloud Vision API'를 찾습니다.

해당 API를 찾지 못했으면 아래 링크로 들어가 주세요.

참고 : Google Cloud Platform - Google Cloud Vision API

 

'사용 설정' 버튼을 눌러주면 API가 활성화됩니다.

 

API가 활성화되면 아래와 같은 대시보드 화면을 볼 수 있습니다.

 

 

2. API 사용하기

전 C#, winform을 사용하여 만들겠습니다.

 

윈폼 프로젝트를 만듭니다.

 

2-1. 사용자 인증 정보 다운로드

여기서 사용할 사용자 인증 정보는 '서비스 계정 키'입니다.

(참고 : 구글 클라우드 플랫폼 - 2. 구글 API 사용자 인증 정보 생성하기 )

 

'서비스 계정 키'를 생성한 후 다운로드된 'json'파일을 사용합니다.

다운로드한 키는 프로젝트 폴더나 출력 폴더에 사해서 넣고 이름을 'My Project.json'으로 바꿔 줍니다.

 

2-2. 참조 추가하기

누겟에서 'Google Cloud Vision'으로 검색하여 'Google.Apis.Vision.v1'과 'Google.Apis.Auth.OAuth2'를 찾아 설치합니다.

 

Cloud Vision 참조하기

'Google.Cloud.Vision.V1'는 아직 베타입니다.

'Google.Cloud.Vision.V1'를 설치하고 싶으시면 '시험판 포함'을 활성화해주셔야 합니다.

 

2-3. UI만들기

버튼 하나와 텍스트 박스를 하나 추가합니다.

 

버튼을 누르면 바로 지정된 이미지를 읽어서 비전API로 보낸 다음 OCR결과를 받을 예전입니다.

 

2-4. 코드 넣기

버튼 클릭 이벤트에 다음 코드를 넣습니다.

private void btnImg_Click(object sender, EventArgs e)
{
    //구글 api 자격증명
    GoogleCredential credential = null;

    //다운받은 '사용자 서비스 키'를 지정하여 자격증명을 만듭니다.
    using (var stream = new FileStream(Application.StartupPath + "\\My Project.json", FileMode.Open, FileAccess.Read))
    {
        string[] scopes = { VisionService.Scope.CloudPlatform };
        credential = GoogleCredential.FromStream(stream);
        credential = credential.CreateScoped(scopes);
    }

    //자격증명을 가지고 구글 비전 서비스를 생성합니다.
    var service = new VisionService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "google vision",
        GZipEnabled = true,
    });


    service.HttpClient.Timeout = new TimeSpan(1, 1, 1);
    //이미지를 읽어 들입니다.
    byte[] file = File.ReadAllBytes(@"aaa.png");

    //분석 요청 생성
    BatchAnnotateImagesRequest batchRequest = new BatchAnnotateImagesRequest();
    batchRequest.Requests = new List<AnnotateImageRequest>();
    batchRequest.Requests.Add(new AnnotateImageRequest()
    {
        //"TEXT_DETECTION"로 설정하면 이미지에 텍스트만 추출 합니다.
        Features = new List<Feature>() { new Feature() { Type = "TEXT_DETECTION", MaxResults = 1 }, },
        ImageContext = new ImageContext() { LanguageHints = new List<string>() { "en" } },
        Image = new Google.Apis.Vision.v1.Data.Image() { Content = Convert.ToBase64String(file) }
    });


    var annotate = service.Images.Annotate(batchRequest);
    //요청 결과 받기
    BatchAnnotateImagesResponse batchAnnotateImagesResponse = annotate.Execute();
    if (batchAnnotateImagesResponse.Responses.Any())
    {
        AnnotateImageResponse annotateImageResponse = batchAnnotateImagesResponse.Responses[0];
        if (annotateImageResponse.Error != null)
        {//에러
            if (annotateImageResponse.Error.Message != null)
                textBox1.Text = annotateImageResponse.Error.Message;
        }
        else
        {//정상 처리
            textBox1.Text = annotateImageResponse.TextAnnotations[0].Description.Replace("\n", "\r\n");
        }
    }
}

 

아래 코드가 감지할 언어를 설정하는 코드입니다.

{ LanguageHints = new List<string>() { "en" } }

 

감지할 수 있는 언어 목록은 아래 링크에서 확인할 수 있습니다.

참고 : Google Cloud Platform - Google Cloud Vision API > Documentation - Language Support

 

 

3. 테스트해보기

이제 테스트를 해봅시다.

버튼을 누른 후 잠시 기다리면 결과가 나옵니다.

 

'사용자 서비스 키'와 읽어 들일 이미지 파일만 정확하다면 별문제 없이 동작합니다.

 

 

마무리

샘플 프로젝트 : github -  dang-gun/GoogleSamples/GoogleVisionAPITest0001

테스트 프로그램 : 

GoogleVisionAPI_Test.zip
다운로드

 

 

이렇게 간단하게 구글 비전 API를 사용해 보았습니다.

API활성화 시키고 키만 등록하면 바로 사용할 수 있습니다.