,

구글 비전 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. 코드 넣기

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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(111);
    //이미지를 읽어 들입니다.
    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");
        }
    }
}
cs

 

 

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

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

 

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

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

3. 테스트해보기

이제 테스트를 해봅시다.

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

 

 

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

 

마무리

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

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

 

테스트 프로그램 :  GoogleVisionAPI_Test.zip(다운로드),

깃허브 : https://github.com/dang-gun/GoogleVisionAPITest0001

 

  1. 그냥그렇듯이 2018.12.12 12:01 신고  Address  Edit/Delete  Reply

    안녕하세요, 당근로리야스님

    위 포스팅 잘보았습니다. 다름이 아니라 저도 google vision api를 사용해보려고 하는데 JSON 파일 다운로드 후에 시스템 환경변수로 GOOGLE_APPLICATION_CREDENTIALS 값을 설정하는 것 이외에 C# 코드 내에서 자격 증명을 받을 수 있는 방법을 알고계신지 궁금해서 댓글 남깁니다.

    시스템 환경변수로 만들시에 C#으로 만들어진 DLL에서는 해당 자격 증명을 읽어오지 못하는 현상이 있어서 어떻게 해결할지 고민중입니다...

    감사합니다~!

댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바