[TIL] VisionKit, OCR 이 무엇인가요? 2차

한철희·2024년 5월 31일
0

TIL

목록 보기
50/57

저번에 조사한 내용들을 팀원들에게 소개를 했다
그 과정에서 팀원분들에게 질문을 받으면서 조사에 대해서 부족한 을 찾아서
그에 대한 답변 겸 추가 조사를 글로 작성하려고 한다.


영어 설정도 필요한지??

let revision3 = VNRecognizeTextRequestRevision3
    request.revision = revision3
    request.recognitionLevel = .accurate
    request.recognitionLanguages = ["ko-KR"]
    request.usesLanguageCorrection = true

위의 코드에선 recognitionLanguages의 값을 ko-KR로 설정하여
한국어를 인식하고 있다.

질문을 주신 의도는 영어를 인식하려면 어떻게 설정을 해야한다는 것이었다
실제로 어플을 실행해봤을 때는 추가 설정을 하지 않아도 영어도 인식하긴 했다.

let revision3 = VNRecognizeTextRequestRevision3
    request.revision = revision3
    request.recognitionLevel = .accurate
    // request.recognitionLanguages = ["ko-KR"]
    request.usesLanguageCorrection = true

기본적으로 관련 구문을 없는 상태에서도 언어들을 자동으로 인식하지만
특정 언어를 지정해주는게 아무래도 정확도가 높은듯 하다
한 언어에 특화된 언어 인식이 필요할 때는 더더욱

request.recognitionLanguages = ["ko-KR", "en-US"]

명시적으로 지정해주려면 위처럼 배열에 원하는 언어를 추가해주면 된다.


cgImage가 뭐에요??

설명을 위한 예제 코드에서 아래와 같은 부분에 대해서 질문이 있었다

// UIImage를 cgImage로 변경
guard let cgImage = UIImage(named: "snapshot")?.cgImage else { return }

// handler 인스턴스 생성
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])

cgImage가 뭔지를 질문 하셨습니다.
그래서 검색 + gpt 한테 물어보니 아래와 같은 답을 받았습니다

CGImage의 정의

cgImage는 Core Graphics 이미지(CGI)를 나타내는 CGImage 객체입니다. CGImage는 픽셀 데이터에 직접 접근할 수 있는 이미지 객체로, 다양한 이미지 처리 작업에 사용됩니다. UIImage 객체는 일반적으로 UIKit에서 사용되는 이미지 객체이고, 이를 통해 CGImage를 얻을 수 있습니다.

CGImage의 역할

  • 저수준 이미지 작업: CGImage는 픽셀 단위로 작업을 수행할 수 있어, 저수준 이미지 처리에 유용합니다.
  • 호환성: CGImage는 Core Graphics와 함께 사용되며, Quartz 2D 그래픽스 라이브러리와도 호환됩니다.
  • 성능: CGImage는 메모리와 성능 최적화가 되어 있어, 대용량 이미지 처리 시 유용합니다.

요약

  • CGImage는 저수준의 Core Graphics 이미지 객체로, UIImage의 cgImage 속성을 통해 얻을 수 있습니다.
  • CGImage는 픽셀 데이터에 직접 접근할 수 있어, 이미지 처리 작업에 유용합니다.
  • UIImage와 CGImage는 각각 고수준, 저수준 이미지 작업에 사용되며, 서로 변환이 가능합니다.

사용가능 언어 출력하는 do catch 구문 필요?

 	do {
        let possibleLanguages = try request.supportedRecognitionLanguages()
        print(possibleLanguages)
    } catch {
        print("Error getting the supported languages.")
    }

위 구문에서 supportedRecognitionLanguages()를 통해 사용가능한
언어를 출력해주는 부분인데
그 기능이 사실 코드 상 필수적인 부분은 아니여서 없어도 되는 부분인지 질문하셨다

그래서 주석처리하고 실행을 해보니 정상 작동했다!
생각해보니 에러처리를 하거나 로직이 있는 부분이 아니고
단순히 사용가능한 언어만 알려주는 부분이니 없어도 될거같다.


Live text 기능?

관련 영상 공부 중
관련영상
근데 주로 SwiftUi 영상이 많다.

공식 튜토리얼 영상
UIKit을 사용하는 공식 영상
이것은 현재 살펴보는중입니다

관련 애플 문서 읽어 보는 중입니다

profile
초보 개발자 살아남기

0개의 댓글