마이크로소프트 애저(Azure)를 활용하면 API로 정말 많은 서비스들을 액세스 할 수 있습니다.

200개 이상의 다양한 제품들을 제공하는 마이크로소프트의 애저(Azure)는 클라우드 호스팅과 컴퓨팅 플랫폼입니다. 여기에는 머신 러닝 서비스를 구현할 수 있는 제품들도 있습니다. 클라이언트 액세스 라이브러리나 REST 클라이언트로 서비스를 구현할 수 있는 API들도 있죠. 델파이에서는 TAzureConnectionInfo를 사용하면 이 모든 서비스들을 구현할 수 있습니다. 정말 최소한의 코드만으로 말이죠. 델파이가 제공하는 REST 클라이언트로 서비스에 액세스 할 수 있습니다.

Azure Read Client 는 무료인가요?

아니요, Azure Read Client는 유상 제품입니다. 하지만 좋은 점은 구입 후 제품 등록 시 12개월 간 앱 개발, 테스트, 출시까지 필요한 모든 서비스들을 무료로 사용할 수 있다는 점입니다. 일부 애저 서비스는 ‘항상 무료’로 제공됩니다. 문서인식(OCR) 프로그램에서 사용하는 서비스인 “인지 검색”은 무료 서비스 중 하나입니다. 10,000여개의 문서들이 함께 제공되는데, 테스트 목적으로 사용하기에는 충분합니다.

“컴퓨터 비전” 서비스 리소스들을 활용할 수 있는 API는 어떻게 받을 수 있나요?

문자인식(OCR) 프로그램을 만들어볼까요. “인지 서비스 -> 컴퓨터 비전” 리소스를 사용해보겠습니다. 그럼 먼저 “애저 구독(Azure subscription)”이 필요합니다. 아래 링크로 접속해서 “애저 구독”을 하나 생성하세요. 무료로 시작할 수 있습니다!

https://azure.microsoft.com/en-us/free/cognitive-services/

가입을 하고 나면 필요한 서비스 링크를 생성할 수 있습니다. “컴퓨터 비전” 리소스를 생성하려면 아래 링크를 클릭하세요.

https://portal.azure.com/#create/Microsoft.CognitiveServicesComputerVision

다시 돌아가서 변경할 수 없으므로, 올바른 영역을 선택하세요! 생성한 리소스로 이동한 후 왼쪽 메뉴에서 “Keys and Endpoint”를 선택합니다. 여러 키들(keys) 중 하나와 위치(location)를 복사하세요. 프로그램 구현에 필요한 정보들입니다.

인지 서비스(Cognitive Services)와 REST API를 어떻게 연동할 수 있나요?

TRESTClient, TRESTRequest, TRESTResponse 컴포넌트를 사용하면 REST API와 인지 서비스를 연결할 수 있습니다. TRESTClient를 드래그앤드랍(drag and drop)하여 포럼에 끌어다 놓고 기본 속성을 몇 가지 변경합니다. “Accept” 속성에 “application/json” 타입이 있는지 확인하세요. 항목 타입을 “application/json“으로 설정해야 합니다.

그런 다음 TRESTRequest 컴포넌트를 포럼에 올려놓고 앞서 만들었던 클라이언트에서 클라이언트 속성을 설정합니다. 메소드를 “rmPOST“로 설정하면 됩니다.

TRESTResponse 컴포넌트를 끌어다놓고, 응답 오브젝트에 요청 컴포넌트를 응답 속성으로 설정합니다.

에디트 상자들(edit box), 버튼들(buttons), 메모 상자(memo box)를 폼 위에 올려놓으면 인터페이스는 완성입니다.

이미지 처리를 해서 활용하고 싶은데, API를 어떤 방법으로 사용해야 하나요?

이미지는 한 번 호출만으로 결과값을 얻거나 인지 서비스에 게시할 수는 없습니다. 이미지 처리에는 시간이 필요한데, 보통은 5초가 안 걸리기는 합니다. 때문에 먼저 인지 서비스에 이미지를 보내고, “Operation-Location” 값을 확인한 후 “성공”할 때까지 상태를 계속 확인해야 합니다. 서버가 이미지 처리중일 때는 “실행중(running)”으로 표시됩니다.

인지 서비스 API를 호출할 때마다, HTTP Header를 통해 구독 키(subscription key)를 제공해야 합니다. 앞서 생성했던 리소스에서 복사한 바로 그 키 값입니다. 방법은 TRESTRequest 컴포넌트에 새 매개변수를 추가합니다. “pkHTTPHEADER“를 ‘kind’로 설정하고, 이름을 “Ocp-Apim-Subscription-Key“로 지정한 후 여러분이 가지고 있는 그 키 값을 넣으면 됩니다.

처리할 이미지 URL은 JSON 형식으로 제공해야 합니다. 방법은 새로운 매개변수를 추가하고 이름을 “data”로 지정합니다. 타입은 “ctAPPLICATION_JSON“으로 설정하고, 종류는 “pkGETorPOST“로 합니다. 그리고 아래와 같이 값을 설정하면 됩니다:

REST 클라이언트의 기본 URL 설정이 필요합니다. 기본 URL을 설정하려면 이전에 복사한 리소스의 위치를 알아야 합니다. “LOCATION” 값을 리소스 위치로 지정합니다.

이제 게시할 준비가 되었습니다. 요청 메소드가 “rmpost”인지 확인한 후 실행합니다. 오류없이 성공적으로 진행되었다면, 응답을 확인할 수 있을 것입니다. 헤더를 통해서 오는데요. 다음 요청에 필요한 헤더는 “Operation-Location”입니다. 이 값은 요청이 완료되면, 그 결과를 확인할 수 있습니다. 앞서 언급했 듯 요청을 처리하는데 다소 시간은 걸릴 수 있습니다 (보통 1~3초). 예측하기는 어렵습니다. 작업이 종료됐는지 여부를 늘 확인해야 합니다.

Operation-Location에서 OCR 결과를 어떻게 확인할 수 있나요?

OCR 판독 결과는 “Operation-Location” URL로 GET 요청을 보내야 합니다.이전처럼 헤더에 있는 “Subscription key”를 전달해야 합니다. 매개 변수를 만들고 앞서 했던 방식처럼 Subscription key를 추가하세요. GET 요청을 전송하면, JSON에 대한 응답을 받을 수 있습니다. “상태” 값은 계속 실행중인 “running”으로 표시될 것입니다. 이 작업이 잘 된다면 JSON 형식의 OCR 판독값을 얻을 수 있습니다. 이제 JSON 구문 분석만 하면 됩니다!

아래 깃허브 링크를 통해서 전체 데모 애플리케이션의 소스 코드를 다운로드 받을 수 있습니다.

https://github.com/checkdigits/OCRReadClient_example

게시 버튼(post button)에 대한 소스코드는 다음과 같습니다:

이제, 여러분의 프로젝트에 컴퓨터 비전을 적용할 준비가 되셨나요?

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15487
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13974
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16506
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22062
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23282
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18934
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39269
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174732
694 XE에서 MySQL 연결오류 및 한글문제 해결 [3] c2design 2013.08.28 10732
693 [환경설정] 아마존 EC2 이용해 리눅스 서버 환경 구축하기 file 험프리 2017.04.20 10643
692 OAuth 2.0 연동 - 카카오 API(카카오톡 프로필) [9] 험프리 2018.12.26 10045
691 [따라하기] 도서대여 프로그램 만들기(VCL, DB프로그래밍) [2] file 험프리 2017.01.19 10021
690 이 달의 기술자료 - 2014년 8월 file 험프리 2014.07.04 9945
689 이 달의 기술자료 - 2014년 3월 험프리 2014.03.05 9570
688 RAD Studio 빌드번호 확인하는 방법법 [1] file 험프리 2016.01.08 9490
687 RadPHP XE2 에서 한글 문제 [2] file 박병일 2012.03.08 9118
686 BOGO 프로모션 툴 다운로드 받는 방법 안내(2015.6.1~2015.6.30 구매고객) 관리자 2014.06.16 8776
685 RadPHP 한글문제 관리자 2012.04.13 8196
684 [REST API][실습] REST API 클라이언트 개발하기(REST Client 이용) [2] 험프리 2017.05.23 7108
683 [마이그레이션] 유니코드 적용시 검토할 사항들 file 험프리 2014.08.21 7032
682 HTML5 Builder로 시작하는 Hello World 모바일 클라이언트 앱 생성하기 (한글 번역) 관리자 2012.09.20 6971
681 XE5 안드로이드 단말기 연결시 확인사항 file c2design 2013.09.23 6879
680 [환경설정] 아마존 EC2 이용해 윈도우 서버 환경 구축하기 [1] file 험프리 2017.04.13 6216
679 [10.2 도쿄] 델파이/C++빌더 리눅스 개발환경 설정하기 [1] file 험프리 2017.02.21 6135
678 David I의 31 XE3 퀵 비디오 - HTML5 빌더로 클라이언트 모바일 앱 개발하기 관리자 2012.10.15 5901
677 RAD스튜디오 개발환경(IDE) 사용법: 파이어몽키 코스북 3장 file 관리자 2014.07.09 5834
676 [따라하기] 건강데이터 수집 및 기록 시스템 #1 - BLE 기반 스마트 체중계에서 실시간 데이터 받기 [1] Humphery 2015.10.02 5805
675 이 달의 기술자료 - 2015년 04월 험프리 2015.03.26 5677