Google Vision API(OCR) 설치 및 사용하기
Eclipse 및 Ubuntu 환경에서 Java 기반으로 Google Vision API를 설치하여 사용하는 방법에 대해 알아보겠습니다.
Google Vision API는 이미지 컨텐츠 분석 기능을 제공하며 좀 더 자세한 내용은 아래 링크에서 확인하실 수 있습니다.
먼저 다음 링크를 참고하여 Google Cloud Platform 에서 Vision API 사용을 위한 설정을 해줍니다.
Google API를 사용하기 위해서는 Google Cloud Platform으로 이동하여 다음과 같이 project setting을 해주어야 합니다.
※ 이 때 결제의 경우 구글 계정과 Google Cloud Platform과의 연동을 위해서 해외 결제가 가능한 신용카드의 등록이 필요하며, 등록 후에는 300달러의 무료 평가판 크레딧이 제공됩니다.
project setting 이후엔 사용자 인증 정보 탭에서 서비스 계정 키를 설정해주어야 합니다.
사용자 인증 정보 페이지로 이동 후 서비스 계정 키 생성을 위해 서비스 계정 관리 페이지로 이동합니다.
여기서 필요한 것은 Compute Engine default service account에 대한 서비스 계정 키 입니다.
우측의 메뉴 아이콘을 클릭하여 키를 생성해줍니다.
JSON 파일로 키 파일을 생성하여 저장해줍니다.
※ 이 파일은 API 사용을 위해 반드시 필요한 파일이므로 저장 후 경로를 잘 알아둬야 합니다.
여기까지의 과정을 통해 API 사용을 위한 준비는 모두 마무리 되었습니다.
다음으로 Java 기반으로 Eclipse와 Ubuntu 환경에서의 Google Vision API 연동 방법을 알아보겠습니다.
1. Eclipse에서 Google Vision API 연동하여 사용하기
Eclipse를 실행하고 다음과 같이 Java Project를 생성해줍니다. (JDK 1.7 및 Eclipse LUNA 버전을 사용했습니다)
packge와 java 파일을 생성해주시고 이전에 생성한 키 파일을 프로젝트 안으로 복사해줍니다.
다음으로 아래 링크에서 Google Cloud Vision API의 jar 파일을 다운로드하여 프로젝트에 추가해줍니다.
Eclipse 좌측 Package Explorer에서 프로젝트를 우클릭하여 Properties를 클릭해준 후, 라이브러리에 아래와 같이 다운로드받은 jar 파일을 모두 추가해줍니다.
다음으로 아래 링크를 참고하여 생성한 java 파일에 코드를 작성해줍니다.
(첨부한 파일을 다운로드하여 사용하셔도 됩니다)
코드 작성후엔 프로젝트에 복사한 키 파일에 대해 환경변수 설정을 해주어야 합니다.
실행할 java 파일 우클릭 > Run As > Run Configurations 순서대로 클릭해줍니다.
Environment 탭으로 이동하여 키 파일에 대한 새로운 환경변수를 추가해줍니다.
※ Name은 'GOOGLE_APPLICATION_CREDENTIALS'로 작성해주시고 Value는 키 파일의 파일 위치 경로로 설정해주시면 됩니다.
Apply를 눌러 적용해주시고 설정 창을 닫습니다.
마지막으로 java 파일에서 이미지 파일 경로를 설정해주고 실행해줍니다.
코드 상에서 다음 라인에 이미지 파일 경로를 설정해주시면 됩니다.
ByteString imgBytes = ByteString.readFrom(new FileInputStream([이미지파일경로]));
좌측처럼 text가 이미지 처리된 파일을 대상으로 OCR을 진행하였을 때 우측과 같은 결과가 출력되는 것을 확인할 수 있습니다.
※ Spring 기반의 환경에서 실행하는 경우엔 아래 링크를 참고하여 pom.xml을 설정 해주시면 됩니다.
2. Ubuntu 환경에서 Google Vision API 연동하여 사용하기
Ubuntn 환경에서의 Google Vision API도 앞서 Eclipse 환경에서 실습해본 것과 마찬가지로 같은 java 파일을 사용해주시면 됩니다.
아래 링크에서 Google Cloud Vision API의 jar 파일을 다운로드해줍니다.
다음과 같이 jar 파일과 java 파일 및 테스트로 사용할 이미지 파일을 같은 경로로 위치시켜주고, GOOGLE_APPLICATION_CREDENTIALS 디렉터리를 생성하여 키 파일을 안으로 옮겨줍니다.
다음으로 /etc/environment 파일에 키 파일에 대한 환경변수를 설정해줍니다.
sudo vi /etc/environment
아래 내용을 작성해줍니다.
export set GOOGLE_APPLICATION_CREDENTIALS='[KEY_FILE_PATH]'
PATH=${PATH}:$GOOGLE_APPLICATION_CREDENTIALS
저장 후 원래 경로로 돌아와서 java 파일을 컴파일해줍니다.
javac -classpath .:api-common-1.2.0.jar:auto-value-1.2.jar:commons-codec-1.3.jar:commons-logging-1.1.1.jar:error_prone_annotations-2.0.19.jar:gax-1.15.0.jar:gax-grpc-1.15.0.jar:google-auth-library-credentials-0.9.0.jar:google-auth-library-oauth2-http-0.9.0.jar:google-cloud-core-1.12.0.jar:google-cloud-core-grpc-1.12.0.jar:google-cloud-vision-1.12.0.jar:google-http-client-1.23.0.jar:google-http-client-jackson2-1.19.0.jar:grpc-auth-1.7.0.jar:grpc-context-1.7.0.jar:grpc-core-1.7.0.jar:grpc-netty-1.7.0.jar:grpc-protobuf-1.7.0.jar:grpc-protobuf-lite-1.7.0.jar:grpc-stub-1.7.0.jar:gson-2.7.jar:guava-20.0.jar:httpclient-4.0.1.jar:httpcore-4.0.1.jar:instrumentation-api-0.4.3.jar:jackson-core-2.1.3.jar:jai-imageio-core-1.3.1.jar:joda-time-2.9.2.jar:json-20160810.jar:jsr305-3.0.0.jar:levigo-jbig2-imageio-2.0.jar:netty-buffer-4.1.16.Final.jar:netty-codec-4.1.16.Final.jar:netty-codec-http2-4.1.16.Final.jar:netty-codec-http-4.1.16.Final.jar:netty-codec-socks-4.1.16.Final.jar:netty-common-4.1.16.Final.jar:netty-handler-4.1.16.Final.jar:netty-handler-proxy-4.1.16.Final.jar:netty-resolver-4.1.16.Final.jar:netty-tcnative-boringssl-static-2.0.6.Final.jar:netty-transport-4.1.16.Final.jar:opencensus-api-0.6.0.jar:protobuf-java-3.4.0.jar:protobuf-java-util-3.4.0.jar:proto-google-cloud-vision-v1-1.0.1.jar:proto-google-common-protos-1.0.1.jar:proto-google-iam-v1-0.1.25.jar:threetenbp-1.3.3.jar -d . GoogleVisionApiTester.java
마지막으로 컴파일된 파일을 실행하여 OCR 결과를 확인합니다.
java -classpath .:api-common-1.2.0.jar:auto-value-1.2.jar:commons-codec-1.3.jar:commons-logging-1.1.1.jar:error_prone_annotations-2.0.19.jar:gax-1.15.0.jar:gax-grpc-1.15.0.jar:google-auth-library-credentials-0.9.0.jar:google-auth-library-oauth2-http-0.9.0.jar:google-cloud-core-1.12.0.jar:google-cloud-core-grpc-1.12.0.jar:google-cloud-vision-1.12.0.jar:google-http-client-1.23.0.jar:google-http-client-jackson2-1.19.0.jar:grpc-auth-1.7.0.jar:grpc-context-1.7.0.jar:grpc-core-1.7.0.jar:grpc-netty-1.7.0.jar:grpc-protobuf-1.7.0.jar:grpc-protobuf-lite-1.7.0.jar:grpc-stub-1.7.0.jar:gson-2.7.jar:guava-20.0.jar:httpclient-4.0.1.jar:httpcore-4.0.1.jar:instrumentation-api-0.4.3.jar:jackson-core-2.1.3.jar:jai-imageio-core-1.3.1.jar:joda-time-2.9.2.jar:json-20160810.jar:jsr305-3.0.0.jar:levigo-jbig2-imageio-2.0.jar:netty-buffer-4.1.16.Final.jar:netty-codec-4.1.16.Final.jar:netty-codec-http2-4.1.16.Final.jar:netty-codec-http-4.1.16.Final.jar:netty-codec-socks-4.1.16.Final.jar:netty-common-4.1.16.Final.jar:netty-handler-4.1.16.Final.jar:netty-handler-proxy-4.1.16.Final.jar:netty-resolver-4.1.16.Final.jar:netty-tcnative-boringssl-static-2.0.6.Final.jar:netty-transport-4.1.16.Final.jar:opencensus-api-0.6.0.jar:protobuf-java-3.4.0.jar:protobuf-java-util-3.4.0.jar:proto-google-cloud-vision-v1-1.0.1.jar:proto-google-common-protos-1.0.1.jar:proto-google-iam-v1-0.1.25.jar:threetenbp-1.3.3.jar process.GoogleVisionApiTester
다음과 같이 OCR 결과를 확인할 수 있습니다.
※ OCR 실행시 font와 이미지 확장자에 문제가 생긴다면 apache에서 제공하는 pdfbox와 fontbox의 jar 파일을 다운로드하여 함께 실행해주시면 됩니다.
이상으로 Elipse와 Ubuntu 환경에서 Google Vision API를 연동하고 실행하는 방법에 대해 알아보았습니다.
※ 참고 문헌
tistory, google vision api, http://chunsuk4u.tistory.com/entry/Google-Vision-API
- tistory, 구글 클라우드 생성, http://bcho.tistory.com/1107
- wordpress.org, 구글 클라우드 비젼 API, http://www.hardcopyworld.com/ngine/aduino/index.php/archives/2736