[swift] Swift에서 카메라로 영수증 인식하기

iOS 앱을 개발할 때, 종종 카메라로 사물을 인식하는 기능이 필요합니다. 특히, 영수증을 스캔하여 데이터를 추출하는 기능은 많은 유용성을 제공합니다. 이번 블로그에서는 Swift에서 카메라로 영수증을 인식하는 방법에 대해 알아보겠습니다.

카메라 접근 권한 획득

카메라로 사물을 인식하기 위해서는 먼저 카메라에 대한 접근 권한을 획득해야 합니다. Info.plist 파일에 다음과 같은 코드를 추가하여 카메라 접근 권한을 요청할 수 있습니다.

<key>NSCameraUsageDescription</key>
<string>카메라에 접근하여 영수증을 스캔합니다.</string>

AVFoundation을 사용하여 카메라로 영수증 스캔하기

AVFoundation 프레임워크를 사용하여 카메라로 영수증을 스캔할 수 있습니다. 다음은 카메라 뷰를 초기화하고 영수증을 스캔하는 코드 예제입니다.

import AVFoundation
import UIKit

class ReceiptScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
    var captureSession: AVCaptureSession!
    var previewLayer: AVCaptureVideoPreviewLayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        let captureDevice = AVCaptureDevice.default(for: .video)
        do {
            let input = try AVCaptureDeviceInput(device: captureDevice!)
            captureSession = AVCaptureSession()
            captureSession.addInput(input)

            let metadataOutput = AVCaptureMetadataOutput()
            captureSession.addOutput(metadataOutput)

            metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
            metadataOutput.metadataObjectTypes = [.qr]

            previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
            previewLayer.frame = view.layer.bounds
            previewLayer.videoGravity = .resizeAspectFill
            view.layer.addSublayer(previewLayer)

            captureSession.startRunning()
        } catch {
            print(error)
            return
        }
    }

    func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
        if let metadataObject = metadataObjects.first {
            // 영수증 데이터 추출 및 처리
            if let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject {
                let barCodeObject = previewLayer.transformedMetadataObject(for: readableObject)
                // 추출한 데이터 활용
            }
        }
    }
}

이 코드 예제는 AVCaptureSession을 사용하여 카메라로 영수증을 스캔하는 기본적인 방법을 보여줍니다.

위 코드를 참고하여 영수증 인식 앱을 만들어 보세요. iOS 앱이 카메라로 영수증을 스캔하고 데이터를 처리하는 것은 사용자에게 편의성을 제공할 뿐만 아니라, 관리와 추적을 위한 유용한 기능이 될 수 있습니다.