[swift] Swift에서 카메라로 문서 인식하기

1. 카메라 엑세스 권한 요청

우선 카메라를 사용하기 전에 권한을 요청해야 합니다. Info.plist 파일에 Privacy - Camera Usage Description key를 추가하고 사용자에게 보여줄 권한 요청 메시지를 값으로 설정합니다.

<key>NSCameraUsageDescription</key>
<string>카메라를 사용하여 문서를 스캔하기 위해 권한을 요청합니다.</string>

2. 카메라 열기

AVFoundation을 사용하여 카메라를 열고 미리보기를 표시합니다. AVCaptureSession, AVCaptureDevice, AVCaptureVideoPreviewLayer 등을 활용하여 카메라를 제어합니다.

// AVCaptureSession 설정
let captureSession = AVCaptureSession()

// 카메라 장치 설정
guard let captureDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back) else { return }
do {
    let input = try AVCaptureDeviceInput(device: captureDevice)
    captureSession.addInput(input)
} catch {
    print(error)
}

// 카메라 미리보기 레이어 설정
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = .resizeAspectFill
previewLayer.frame = view.layer.bounds
view.layer.insertSublayer(previewLayer, at: 0)

// 미리보기 시작
captureSession.startRunning()

3. 문서 인식

카메라 미리보기에서 문서를 인식하기 위해 Vision framework를 사용합니다. Vision framework은 이미지 처리 및 컴퓨터 비전 작업을 수행하는 강력한 도구입니다.

// 비전 요청 생성
let textRecognitionRequest = VNRecognizeTextRequest { request, error in
    guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
    
    for observation in observations {
        guard let bestCandidate = observation.topCandidates(1).first else { continue }
        print(bestCandidate.string)
    }
}

// 이미지 처리 및 분석
let imageRequestHandler = VNImageRequestHandler(cgImage: cgImage, orientation: orientation, options: [:])
try? imageRequestHandler.perform([textRecognitionRequest])

이제 카메라로 문서를 스캔하고 인식하는 기본적인 방법을 알아보았습니다. 필요에 따라 더 다양한 기능을 추가하여 보다 효과적인 문서 스캔 및 인식 애플리케이션을 개발할 수 있을 것입니다.

본 내용은 Apple Developer Documentation을 참고하여 작성되었습니다.