sgcBiometrics 5분 시작 가이드

Windows Biometric Framework를 통해 Delphi에서 Windows Hello와 지문 인증을 사용해요. 이 페이지에서는 센서를 시작하고, 센서 앞에 있는 사용자를 확인하고, 그 사람이 누구인지 식별해요. 센서를 초기화한 뒤에는 메서드 호출 두 번이면 돼요.

Windows Hello 얼굴 및 지문
winbio.dll을 통한 Windows 전용
빌드 하나, 기능 등급 없음

첫 번째 확인에 필요한 것

컴포넌트 하나, 센서를 시작하는 호출 하나, 질문을 던지는 호출 하나예요. 먼저 설정할 것은 없어요.

얼굴

SGC Biometrics 팔레트 페이지의 TsgcWinBioFacial이며 sgcBiometrics.pas에 선언되어 있어요. Windows Hello 얼굴 인식 컴포넌트예요.

지문

TsgcWinBioFingerPrint는 같은 유닛, 같은 팔레트 페이지에 있어요. API 형태는 같고, 그 위에 등록과 템플릿 관리가 더해져요.

컴포넌트 두 개 더

TsgcWinBioStorageFile과 TsgcWinBioUsersINI는 시스템 풀을 쓰는 대신 직접 템플릿 데이터베이스를 관리할 때 쓰는 프라이빗 풀 저장소용이에요.

플랫폼

Windows 전용이에요. 라이브러리가 런타임에 winbio.dll을 로드하고 모든 유닛이 {$IFDEF SGC_WINBIO}로 감싸져 있어서, 다른 대상에서는 유닛이 빈 코드로 컴파일돼요.

요구 사항과 에디션

sgcBiometrics에는 기능 등급이 없어서 이 표는 에디션이 아니라 컴파일러와 운영 체제에 관한 거예요.

항목 값
IDE Delphi 7, 그리고 Delphi 2007부터 RAD Studio 13까지, 그에 대응하는 C++Builder 버전도 포함해요. SGC_WINBIO는 버전 표식만 정의하는 Delphi 2006을 제외한 모든 컴파일러 버전 블록에서 정의되므로, Delphi 2006에서는 제품이 빈 코드로 컴파일돼요.
Uses 절 데모는 sgcBiometrics_WinBio_Types, sgcBiometrics, sgcBiometrics_WinBio_Storage, sgcBiometrics_WinBio_Storage_File, sgcBiometrics_Classes, sgcBiometrics_Client, sgcBiometrics_WinBio_Client, sgcBiometrics_WinBio_Client_Facial을 작성해요. 단순 확인에는 훨씬 적게 필요해요.
에디션 없어요. 제품 자체의 sgcVer.inc는 컴파일러 버전 맵일 뿐이고 SGC_EDT_* define이 어디에도 없어요. 모든 컴포넌트가 모든 빌드에 들어 있어요.
어떤 Windows API인가요 winbio.dll에서 동적으로 로드하는 고전적인 Win32 Windows Biometric Framework예요. WinRT가 아니므로 WinRT 바인딩이 요구하는 최신 RAD Studio 하한이 없어요.
플랫폼 Windows 전용이에요. 모든 WinBio 유닛은 인터페이스와 구현을 {$IFDEF SGC_WINBIO}로 감싸고 있으며, 모두 uses 절에 Windows가 있어요. define이 없으면 유닛에 타입이 전혀 없어요.
하드웨어 Windows가 이미 인식하는 생체 인식 센서가 필요해요. 설정 앱에서 Windows Hello가 동작한다면 컴포넌트도 같은 센서를 찾아요.

얼굴 컴포넌트가 사용하는 재실 감지 이벤트는 API의 Windows 10 세대 기능이에요. 컴퓨터에서 Windows Hello 얼굴 로그인을 사용할 수 있다면, 컴포넌트에 필요한 것은 갖춰진 거예요.

설치하고 팔레트 페이지 찾기

디자인 타임 패키지는 런타임 패키지를 참조하므로, 런타임 패키지를 먼저 컴파일한 뒤 설치하세요.

1. 압축 풀기

다운로드한 파일을 폴더에 압축 해제하세요. 아래에서는 이 폴더를 {$DIR}이라고 불러요.

2. 라이브러리 경로

Tools, Options, Environment Options, Directories로 이동해요. 모든 RAD Studio 버전에 적용되는 {$DIR}\source를 추가하세요.

3. lib 폴더 추가

버전별 폴더도 추가하세요. 예를 들어 RAD Studio 13에서는 {$DIR}\libD13\$(Platform)이고, 가장 오래된 컴파일러에서는 플랫폼 접미사가 없는 {$DIR}\libD7까지 있어요.

4. C++Builder에만 해당

lib 폴더를 System Include 경로에도 추가하고, .bpi 파일이 들어 있는 dcp\$(Platform) 폴더를 라이브러리 경로에 추가하세요.

5. 패키지 빌드

IDE 버전에 맞는 Packages\sgcBiometricsD13.groupproj를 여세요. sgcBiometricsD13.dpk를 먼저 컴파일하고 그다음 dclsgcBiometricsD13.dpk를 설치해요. 컴포넌트 네 개가 들어 있는 SGC Biometrics 페이지가 나타나요.

사용자 확인하기, 약 열 줄로

센서를 시작한 다음 두 질문 중 하나를 던져요. 예상한 사람이 맞나요, 아니면 이 사람은 누구인가요? 둘 다 답을 바로 반환해요.

FFacial.pas
uses
  SysUtils, Classes,
  // sgc
  sgcBiometrics, sgcBiometrics_WinBio_Client,
  sgcBiometrics_WinBio_Client_Facial;

procedure TFRMFacial.btnFacialRecognizeClick(Sender: TObject);
begin
  if not Facial.SessionIsOpen then
  begin
    if Facial.InitializeSensors(10000) then
    begin
      if Facial.FacialRecognize then
        DoLog('#Recognized');
    end;
  end
  else
  begin
    if Facial.FacialRecognize then
      DoLog('#Recognized');
  end;
end;

InitializeSensors는 Boolean을 반환하고 밀리초 단위 타임아웃을 받아요. SessionIsOpen은 이미 세션이 있는 센서에 두 번째 세션을 여는 것을 막아 줘요. FacialRecognize는 카메라 앞의 사람이 일치하면 True를 반환해요.

FFacial.pas
procedure TFRMFacial.btnFacialIdentifyClick(Sender: TObject);
begin
  if not Facial.SessionIsOpen then
  begin
    if Facial.InitializeSensors(10000) then
      DoLog('#Identified: ' + Facial.FacialIdentify)
  end
  else
    DoLog('#Identified: ' + Facial.FacialIdentify);
end;

두 호출의 차이는 질문이에요. FacialRecognize는 "예상한 사람이 맞나요"를 묻고 Boolean을 반환해요. FacialIdentify는 "이 사람은 누구인가요"를 묻고 계정 식별자를 string으로 반환하며, 아무도 인식하지 못하면 빈 문자열이에요. 둘 다 선택적 타임아웃을 받으며 기본값은 10초예요.

FFacial.pas
// Three parameters, and the third has a default.
// There is no OnCapture: the capture event is OnCaptureSample.
procedure TFRMFacial.FacialError(Sender: TObject; const aError: string;
  const aCode: Integer);
begin
  DoLog('Error: ' + aError + ' [' + IntToStr(aCode) + ']');
end;

다른 이벤트들은 Windows Biometric Framework 구조체를 전달하므로 매개변수 목록이 일반적인 Delphi 이벤트보다 길어요. OnVerify는 매개변수가 여섯 개이고 OnIdentify는 네 개예요. 직접 입력하지 말고 Object Inspector에서 생성하세요.

세 탭 모두 포함된 데모 Demos\Facial\FFacial.pas에서 가져온 것이며, 무슨 일이 일어났는지 보여 주는 로그 호출은 그대로 두었어요. 두 번째 데모인 Demos\FingerPrint는 등록, 템플릿 관리, 프라이빗 센서 풀을 다뤄요.

호출이 주는 답 읽기

두 질문 모두 값을 바로 반환하므로, 코드의 첫 버전에는 이벤트 핸들러가 전혀 필요 없어요.

InitializeSensors

센서에 세션이 열리면 True를 반환해요. 여기서 False라면 통신할 대상이 없다는 뜻이고, 이후의 어떤 호출도 동작하지 않아요.

FacialRecognize

사람이 일치하면 True를 반환해요. 인증 프롬프트에는 이 불리언 하나가 답의 전부예요.

FacialIdentify

인식된 사람의 계정 식별자를 반환하고, 아무도 인식되지 않으면 빈 문자열을 반환해요. 일치 여부가 아니라 누구인지 알아야 할 때 쓰세요.

OnError

procedure(Sender: TObject; const aError: string; const aCode: Integer = 0). 코드는 Windows Biometric Framework 오류이며, 메시지만으로는 부족할 때 필요한 값이에요.

처음 실행할 때 흔히 생기는 문제

첫 시도의 문제는 거의 다 여섯 가지 중 하나가 원인이에요.

아무 일도 일어나지 않고 오류도 없어요

센서 세션을 한 번도 열지 않은 거예요. InitializeSensors는 Boolean을 반환하며, 데모는 다른 작업을 하기 전에 그것을 확인해요. SessionIsOpen은 세션이 이미 열려 있는지 알려 주므로 두 번째 세션을 열지 않게 돼요.

호출이 사용자 인터페이스를 막아요

확인은 센서 앞의 사람을 기다리며, 타임아웃 기본값은 10초예요. 더 짧은 값을 넘기거나, Asynchronous를 설정하고 결과를 이벤트로 처리하세요.

OnCapture 이벤트를 찾고 있어요

그런 이름의 이벤트는 없어요. 캡처 이벤트는 OnCaptureSample이고, 센서가 거부한 샘플을 위한 OnCaptureSampleReject도 함께 있어요.

이벤트 시그니처가 맞지 않아요

이 이벤트들은 Windows Biometric Framework 구조체를 전달하므로 예상보다 매개변수가 많아요. OnVerify는 신원, 하위 요소, 거부 상세 정보를 포함해 여섯 개를 받아요. 직접 입력하지 말고 IDE가 핸들러를 생성하게 하세요.

다른 플랫폼에서는 컴파일되지 않아요

컴파일할 수 없어요. 모든 WinBio 유닛은 Windows 컴파일러 블록에서만 정의되는 {$IFDEF SGC_WINBIO}로 감싸져 있어서, Windows가 아닌 곳에서는 유닛에 타입이 없어요. 이 라이브러리는 Windows 전용이에요.

프라이빗 풀에는 관리자 권한이 필요해요

시스템 풀 대신 직접 만든 템플릿 데이터베이스로 작업하는 것은 권한이 필요한 작업이에요. 그래서 지문 데모에 이를 위한 별도 탭이 있어요.

첫 번째 확인 그 이후

네 가지 방향이 있고, 모두 같은 라이브러리 안에 있어요.

사용자 직접 등록하기

지문 컴포넌트는 등록의 전체 주기를 제공해요. 시작하고, 반복해서 캡처하고, 확정해요. 이벤트가 스와이프 횟수와 템플릿이 새것인지 알려 줘요.

sgcBiometrics 기능

자체 템플릿 데이터베이스 유지하기

저장소와 사용자 컴포넌트가 프라이빗 풀을 구현해서, 템플릿이 Windows 시스템 풀이 아니라 여러분의 파일에 저장돼요. 같은 신원이 관리하는 여러 컴퓨터에서 동작해야 할 때 알맞아요.

sgcBiometrics 기능

프롬프트만이 아니라 재실 감지하기

얼굴 컴포넌트는 카메라 앞에 누가 있는지 계속 모니터링하면서, 사람이 도착하거나 인식되거나 떠날 때 이벤트를 발생시킬 수 있어요. 작업자가 자리를 뜨는 순간 화면을 잠그는 방법이에요.

sgcBiometrics 기능

컴퓨터가 가진 것 나열하기

누군가에게 프롬프트를 띄우기 전에 생체 인식 장치, 데이터베이스, 기존 등록을 나열할 수 있어요. 불친절한 실패가 하드웨어 누락에 대한 분명한 메시지로 바뀌어요.

에디션과 패키지 구성

레퍼런스, 데모, 문서

다운로드 안에 데모 프로젝트가 두 개 들어 있어요. 얼굴용과 지문용이에요.

sgcBiometrics 기능 지문 컴포넌트와 얼굴 컴포넌트가 각각 제공하는 것.
에디션과 패키지 구성 제품의 라이선스 방식과 각 패키지에 포함되는 것.
제품 개요 sgcBiometrics가 무엇을 위한 것이고 어디에 쓰이는지.
체험판 다운로드 정식 버전과 같은 설치 프로그램이며 기간 제한이 있어요.
지원 문의 코드를 직접 작성한 개발자가 이메일로 직접 지원해요.
모든 제품 eSeGeCe의 모든 라이브러리 가격을 한 표에서 확인하세요.

sgcBiometrics는 Delphi와 C++Builder 전용이며 .NET 버전은 없어요. 모든 제품에는 각자의 빠른 시작이 있으며, 시작하기 페이지에서 모아 볼 수 있어요.

sgcBiometrics 빠른 시작 FAQ

Windows Hello 얼굴 인식에는 TsgcWinBioFacial을, 지문에는 TsgcWinBioFingerPrint를 쓰세요. 둘 다 sgcBiometrics.pas에 선언되어 있고 SGC Biometrics 팔레트 페이지에 있으며, 프라이빗 풀 저장소에만 필요한 TsgcWinBioStorageFile과 TsgcWinBioUsersINI도 함께 있어요. 그래서 하나가 아니라 모두 네 개의 컴포넌트예요.
얼굴 컴포넌트에서 FacialRecognize는 Boolean을 반환하며, 카메라 앞의 사람이 일치하면 true예요. FacialIdentify는 string을 반환하며, 인식된 사람의 계정 식별자이고 아무도 인식되지 않으면 빈 문자열이에요. 둘 다 선택적 타임아웃을 받으며 기본값은 10초이고, 둘 다 센서 세션이 필요해요. 세션은 InitializeSensors로 열어요.
아니요. 모든 WinBio 유닛은 인터페이스와 구현 전체를 {$IFDEF SGC_WINBIO}로 감싸고 있고, 이 define은 제품 자체 sgcVer.inc의 Windows 컴파일러 블록에서만 나타나며, 모든 유닛의 uses 절에는 Windows가 있어요. define이 없으면 유닛에는 타입이 전혀 없어요. sgcBiometrics는 Windows 라이브러리예요.
아니요, 고전적인 Win32 Windows Biometric Framework예요. 라이브러리가 winbio.dll을 동적으로 로드해서 직접 호출해요. 이것이 중요한 이유는 두 가지예요. WinRT 바인딩이 요구하는 최신 RAD Studio 하한이 없고, API 범위가 WinRT가 아니라 Microsoft가 Windows Biometric Framework로 문서화한 것이라는 점이에요.
Delphi 7, 그리고 Delphi 2007부터 RAD Studio 13까지, 그에 대응하는 C++Builder 버전도 포함해요. SGC_WINBIO는 Delphi 7 이후의 모든 컴파일러 버전 블록에서 정의되지만 한 곳은 예외예요. Delphi 2006 블록은 버전 표식만 정의하고 SGC_WINBIO는 정의하지 않으므로, 그 컴파일러에서만 제품이 빈 코드로 빌드돼요.
코드에는 에디션이 없어요. 제품의 sgcVer.inc는 컴파일러 버전 맵이며 SGC_EDT_* define이 전혀 없고, 등급으로 제어되는 것도 없어서 모든 빌드에 모든 컴포넌트가 들어 있어요. 가격 페이지에 나오는 등급은 서로 다른 라이브러리가 아니라 상용 패키지 구성이에요.
세 개보다 많아요. 얼굴 컴포넌트는 열두 개, 지문 컴포넌트는 열여덟 개를 제공해요. Windows Biometric Framework 구조체를 전달하므로 매개변수 목록이 일반적인 Delphi 이벤트보다 길어요. OnVerify는 매개변수가 여섯 개, OnIdentify는 네 개, OnError는 세 개예요. 핸들러는 IDE가 생성하게 하세요. OnCapture는 없고 캡처 이벤트는 OnCaptureSample이라는 점도 기억하세요.
Windows가 이미 인식하는 생체 인식 센서가 필요하며, 실제로는 설정 앱에서 Windows Hello가 동작한다는 뜻이에요. 시스템 풀을 대상으로 한 확인에는 권한 상승이 필요 없어요. TsgcWinBioStorageFile로 자체 템플릿 데이터베이스를 관리하는 프라이빗 풀 작업에는 관리자 권한이 필요하며, 그래서 포함된 지문 데모는 그 부분을 별도 탭으로 분리해요.
최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

앱에 Windows Hello를 추가할 준비가 되셨나요?

체험판을 다운로드하고, Hello가 이미 설정된 컴퓨터에서 얼굴 인식 데모를 실행해 보세요.