[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을 참고하여 작성되었습니다.