FirebaseML에서 텍스트 인식을 수행! [SwiftUI]

소개



안녕하세요, iOS 앱을 최근에 개발하고 있습니다 @ 료스케 카미 무라
이번에는 SwiftUI에서 텍스트 인식을 실시합니다!

바쁜 분을 향해 결론부터 먼저 말합니다! !

결론



결론은 세 가지 점이 있습니다.
1. FirebaseML은 일본어로 인식하는 성능이 양호
2. 필기 문자 인식은 조금 어렵다.
3. 1000 요청까지 무료!

이하, 튜토리얼적으로 실시합니다!

Firebase 프로젝트 설정



①Firebase와 제휴

Firebase 설정 에서 참조하십시오.
Firebase에 등록의 공통 부분이기 때문에 여기에서는 생략하겠습니다.

② Firebase 콘솔에서 클라우드 기반 API를 활성화합니다.

Cloud API 사용 보기 옆의 버튼을 On으로 설정합니다.



③Firebase 공식 문서를 보면서 텍스트 인식을 실시
MLKit을 사용하여 이미지의 텍스트를 인식하는 iOS

SwiftUI로 쓰고 싶었기 때문에 코디네이터를 잘 맞추고 UILable을 래핑하도록 썼습니다!
(더 이렇게 쓰는 편이 좋다는 지적 코멘트로 기다리고 있습니다!)

이번 기사에서는, 실제로 텍스트 인식을 실시하는 함수에 주목해 보고 싶습니다.
(Firebase의 공식 문서에서는 적기 때문에)
  • 함수 만들기

  • RecognizedText.swift
    func recognizedTextFunc() -> String {
      // この関数の中を記述していく
    }
    

    2.Vision 인스턴스 초기화

    RecogniedText.swift
    func recognizedTextFunc() -> String {
    
      //Visionインスタンスの初期化
      let vision = Vision.vision()
      let options = VisionCloudTextRecognizer(options: options)
    
      // 言語の優先順位を追加
      options.languageHints = ["en", "ja"]
      let textRecognizer = vision.cloud
      vision.cloudTextRecognizer(options: options)
    
      //"logo"画像を入れる
      let visionImage = VisionImage(image: UIImage(named: "logo")!)
    }
    

    3.result를 얻는 클로저 만들기

    RecognizedText.swift
    
    textRecognizer.process(visionImage) { result, error in
        guard error == nil, let result = result else {
            return
        }
        //let resultText = result.text
        for block in result.blocks {
            //let blockText = block.text
            //let blockConfidence = block.confidence
            //let blockLanguages = block.recognizedLanguages
            //let blockCornerPoints = block.cornerPoints
            //let blockFrame = block.frame
            for line in block.lines {
                //let lineText = line.text
                //let lineConfidence = line.confidence
                //let lineLanguages = line.recognizedLanguages
                //let lineCornerPoints = line.cornerPoints
                //let lineFrame = line.frame
                for element in line.elements {
                    let elementText = element.text
                    //let elementConfidence = element.confidence
                    //let elementLanguages = element.recognizedLanguages
                    //let elementCornerPoints = element.cornerPoints
                    //let elementFrame = element.frame   
                    //self.recognizedText.wrappedValue = elementText
                    //self.text = elementText
                    //出来たテキストをリストに格納する
                    getTexts.append(elementText)
                }
            }
        }
        //出力できたテキストを1つの文字列にする
        self.recognizedText = getTexts.joined(separator: "")
    }       
    

    이제 함수가 생겨서 문자를 꺼낼 수 있었습니다!
    UI를 만들어 실행해 보자!



    이렇게 잘 인식할 수 있었습니다!

    개요와 결과의 상세를 Severless LT #3에서 발표하셨으므로, 자세히 보고 싶다! 라는 분은 부디!
    슬라이드 : h tps : // s ぃ로 ぃゔぇ. jp/sぃ로/17468048 아 2f1b6에 d57c? 에이 t_i d = 17394b601591bcf3f06

    Github에 자신의 코드도 실려 있기 때문에 기주 b / 료스케 카미 무라 잘 부탁드립니다!

    끝까지 읽어 주셔서 감사합니다!

    참고
    Firebase 공식 자습서
    Swift 실천 입문

    좋은 웹페이지 즐겨찾기