Flutter 에서 Google ML Kit으로 OCR 해보기

지난번에 EasyOCR을 이용해서 이미지에서 텍스트를 인식하는 시도를 해보았습니다.

EASYOCR을 이용해서 글자인식을 해보자

오늘은 이러한 동작을 스마트폰에서도 수행할 수 있도록 간단한 앱을 만들어 보았습니다. Flutter에서도 Google ML Kit을 이용해서 이것이 가능한데요. 아래 링크를 참고하세요.

Google ML Kit for Flutter

저는 이중에서 Text Recognition V2를 이용했습니다. 이걸 써야 한글도 인식할 수 있어요.

사용한 주요 함수의 소스코드를 공유합니다. 이미지 선택하는 라이브러리는 아래 링크의 것을 이용했습니다.

Flutter Image Picker

주요 소스코드

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
위 광고를 클릭해주시면 코드가 나타납니다.
  // 이렇게 하면 기본세팅인 영어 입니다.     
  final TextRecognizer _textRecognizer = TextRecognizer();
  // 아래 주석내용 처럼 해야 한국어 입니다.
  // final TextRecognizer _textRecognizer = TextRecognizer(script: TextRecognitionScript.korean);
        
  // UI에서 버튼 클릭했을 때 이벤트 함수  
  Future<void> textDetect() async {
    var image = await ImagePicker.platform.pickImage(source: ImageSource.gallery);
    String path = image!.path;
    await processImage(InputImage.fromFilePath(path));
  }

  // 실제 텍스트를 인식하는 함수
  Future<void> processImage(InputImage inputImage) async {
    if (!_canProcess) return;
    if (_isBusy) return;
    _isBusy = true;
    setState(() {
      _text = '';
    });
    final recognizedText = await _textRecognizer.processImage(inputImage);
    if (inputImage.inputImageData?.size != null &&
        inputImage.inputImageData?.imageRotation != null) {
    } else {
      _text = 'Recognized text:\n\n${recognizedText.text}';
    }
    _isBusy = false;
    if (mounted) {
      setState(() {});
    }
  }

recognizedText.blocks 를 이용해서 인식된 텍스트 영역을 알아낼 수 있습니다.

EasyOCR에서 사용했던 시료를 똑같이 써서 테스트 해봤습니다. 어떤 시료 였는지는 최상단 링크의 글을 확인해주세요.

테스트 결과

  • 시료1
    • 이미지1
    • EasyOCR 보다는 인식률이 좋습니다. 속도도 빠르구요. 특수문자도 인식하는군요.
  • 시료2
    • 이미지2
    • 이건 차이가 없습니다. 오히려 특수문자로 오인식되는 부분이 있네요.
  • 시료2
    • 이미지3
    • 이건 오히려 영어로 인식해 버리네요. EasyOCR은 로 오인식했는데, 이건 L4로 인식해 버립니다.
Share: Twitter Facebook
김민석's Picture

About 김민석

항상 공부가 부족한 개발자, 항상 시간이 부족한 딸바보, 항상 체력이 부족한 부족한남편, 그리고 고양이 집사

JungNangGu, Seoul, Korea Rep https://reddol18.pe.kr

Comments