마이크로소프트 애저(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 22583
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 21024
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 23072
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28871
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 30050
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 25393
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46347
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 182309
1397 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 152367
1396 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 112778
1395 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 84735
1394 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 71988
1393 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 54176
1392 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 50404
1391 Find the O/S Language Type c2design 2014.07.30 48421
1390 RAD Studio Resource Center 박병일 2012.01.26 46644
1389 CD-ROM 열고 닫기 박병일 2011.12.22 44787
1388 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 38644
1387 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 32514
1386 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 29499
1385 델파이XE2 파이어몽키 기반 아이폰앱 개발에서 제스춰를 인식시키는 방법 박병일 2012.01.25 23342
1384 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 23197