Flutter Google ML (Text Recognition)

원장·2025년 2월 9일

플러터 기초

목록 보기
15/36

Block, Line, Element로 Text를 분류해서 확인해서 볼 수 있다.

사용 예시

먼저 google_mlkit_text-recognition 라이브러리를 다운받아야한다.

의존성에 얘네 설치한다.

android > app> build.gradle > deafultConfig의 minSdkVersion을 21로 변경한다.

그리고 텍스트인식에 사용하려는 언어도 android > app > build.gradle > dependencies 안에 implementation 해줘야한다.

텍스트 인식할 때 빨간 겉줄 canvas에 좀 그려줘야하는 작업이 있는데 나중에 강의보고 해야할듯. 만약 필요하다면

메소드채널?

Flutter와 네이티브(Android, IOS) 코드 간의 통신을 가능하게 해주는 기능.

채널 이름을 통해 Flutter와 네이티브 코드가 서로 연결.

Android는 android/app/src/main/kotlin/com/example/프로젝트명/MainActivity.kt

IOS는 ios/Runner/AppDelegate.swift

위 위치에서 네이티브 코드를 짜줌.

import UIKit
import Flutter
import AVFoundation

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  private let CHANNEL = "com.example.camera/native"
  var flutterResult: FlutterResult?

  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    let controller = window?.rootViewController as! FlutterViewController
    let methodChannel = FlutterMethodChannel(name: CHANNEL, binaryMessenger: controller.binaryMessenger)

    methodChannel.setMethodCallHandler { (call: FlutterMethodCall, result: @escaping FlutterResult) in
      if call.method == "openCamera" {
        self.flutterResult = result
        self.openCamera(controller: controller)
      } else {
        result(FlutterMethodNotImplemented)
      }
    }

    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }

  func openCamera(controller: FlutterViewController) {
    if UIImagePickerController.isSourceTypeAvailable(.camera) {
      let picker = UIImagePickerController()
      picker.sourceType = .camera
      picker.delegate = self
      controller.present(picker, animated: true, completion: nil)
    } else {
      flutterResult?("카메라를 사용할 수 없습니다.")
    }
  }

  func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    flutterResult?("사진이 성공적으로 촬영되었습니다!")
    picker.dismiss(animated: true, completion: nil)
  }

  func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    flutterResult?("카메라 촬영이 취소되었습니다.")
    picker.dismiss(animated: true, completion: nil)
  }
}

IOS의 경우 이렇게 짜는거라함. < 기선님께 확인받기.

profile
나 원장이 아니다

0개의 댓글