구글 비전 API는 머신비전(Machine Vision) api입니다.
머신 비전이라는 것은 컴퓨터의 눈처럼 시각정보(사진, 동영상 같은 것들)를 인식하고 처리하기위한 기술입니다.
구글의 비전 API는 웹에서도 체험할 수 있습니다.
참고 : 구글 클라우드 플랫폼 - CLOUD VISION API
이미지 넣고 결과를 기다리면 이미지를 분석한 정보를 보여 줍니다.
이 API를 등록하고 사용 방법을 알아보겠습니다.
구글 클라우드 플랫폼의 콘솔로 들어가서 'Google Cloud Vision API'를 찾습니다.
해당 API를 찾지 못했으면 아래 링크로 들어가 주세요.
참고 : Google Cloud Platform - Google Cloud Vision API
'사용 설정' 버튼을 눌러주면 API가 활성화됩니다.
API가 활성화되면 아래와 같은 대시보드 화면을 볼 수 있습니다.
전 C#, winform을 사용하여 만들겠습니다.
윈폼 프로젝트를 만듭니다.
여기서 사용할 사용자 인증 정보는 '서비스 계정 키'입니다.
(참고 : 구글 클라우드 플랫폼 - 2. 구글 API 사용자 인증 정보 생성하기 )
'서비스 계정 키'를 생성한 후 다운로드된 'json'파일을 사용합니다.
다운로드한 키는 프로젝트 폴더나 출력 폴더에 사해서 넣고 이름을 'My Project.json'으로 바꿔 줍니다.
누겟에서 'Google Cloud Vision'으로 검색하여 'Google.Apis.Vision.v1'과 'Google.Apis.Auth.OAuth2'를 찾아 설치합니다.
'Google.Cloud.Vision.V1'는 아직 베타입니다.
'Google.Cloud.Vision.V1'를 설치하고 싶으시면 '시험판 포함'을 활성화해주셔야 합니다.
버튼 하나와 텍스트 박스를 하나 추가합니다.
버튼을 누르면 바로 지정된 이미지를 읽어서 비전API로 보낸 다음 OCR결과를 받을 예전입니다.
버튼 클릭 이벤트에 다음 코드를 넣습니다.
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
이제 테스트를 해봅시다.
버튼을 누른 후 잠시 기다리면 결과가 나옵니다.
'사용자 서비스 키'와 읽어 들일 이미지 파일만 정확하다면 별문제 없이 동작합니다.
샘플 프로젝트 : github - dang-gun/GoogleSamples/GoogleVisionAPITest0001
테스트 프로그램 :
이렇게 간단하게 구글 비전 API를 사용해 보았습니다.
API활성화 시키고 키만 등록하면 바로 사용할 수 있습니다.