티스토리 뷰

Tech/iOS

OCR 사용해보기

Ellie Kim 2020. 4. 7. 13:48

오늘은 OCR을 사용해볼 거예요.

OCR은 글자를 인지해 텍스터 데이터로 바꾸는 기술입니다.

 

오늘 사용할 라이브러리는 테서랙트의 OCR 엔진 서비스입니다.

테서랙트는 구글에서 개발을 후원했고 2006년 당시엔 가장 정확한 OCR 엔진으로 소개되기도 했습니다.

초기에는 영어 텍스트만 인식할 수 있었지만 갈수록 언어들이 추가되어 한국어까지 지원도 합니다.

https://github.com/gali8/Tesseract-OCR-iOS

 

그럼 한번 사용해보겠습니다.

가장 먼저 해야 할 것은 사전 세팅이죠.

 

프로젝트를 생성해주고 pod을 세팅해줍니다.

아래 부분만 입력해야 하면 됩니다.

pod 'TesseractOCRiOS'
post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == 'TesseractOCRiOS'
            target.build_configurations.each do |config|
                config.build_settings['ENABLE_BITCODE'] = 'NO'
            end
            header_phase = target.build_phases().select do |phase|
                phase.is_a? Xcodeproj::Project::PBXHeadersBuildPhase
            end.first

            duplicated_header_files = header_phase.files.select do |file|
                file.display_name == 'config_auto.h'
            end

            duplicated_header_files.each do |file|
                header_phase.remove_build_file file
            end
        end
    end
end

이렇게 팟 설정을 해주고 pod install을 해줍니다.

그리고 .xcworkspace파일을 열어주세요.

프로젝트와 타겟에 차례로 Enable Bitcode를 YES를 NO로 변경해주세요.

찾기 어려우니 bitcode만 쳐도 나옵니다.

여기까지 설정을 해줍니다.

 

그리고 인식할 언어의 파일을 다운로드 받아주세요.

https://github.com/tesseract-ocr/tessdata/tree/3.04.00

 

저는 한글과 영어를 사용하기 위해서 kor.traineddata와 eng.traineddata를 받았어요.

그리고 폴더를 추가해서 넣어줘요

그럼 영어와 한글이 인식 가능합니다.

그리고 인식시킬 사진 파일을 추가해줘요.

 

라는 이미지 파일을 asset에 넣어줬습니다.

이미지 파일명은 demo로 설정했습니다.

import UIKit
import TesseractOCR

class ViewController: UIViewController, G8TesseractDelegate {

    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()
            
        if let tesseract = G8Tesseract(language: language.stringValue()) {
            tesseract.delegate = self
            tesseract.image = UIImage(named: "demo")?.g8_blackAndWhite()
            tesseract.recognize()
            textView.text = tesseract.recognizedText
        }
        
    }

    func progressImageRecognition(for tesseract: G8Tesseract!) {
        print("Recongnition Progress \(tesseract.progress) %")
    }
}

 

그리고 ViewController에 코드를 작성해줍니다.

demo라는 이미지를 찾아서 글자 데이터를 추출할거에요.

엥 이게 뭔...

 

😅 글자를 작게 하면 정확도가 떨어지더라고요.

배경을 정말 하얗게 그리고 글자 크기를 증가시키면 정확도가 조금 더 올라감을 확인할 수 있었습니다.

여기까지 tessract-OCR을 사용해봤습니다.

 

https://www.youtube.com/watch?v=DTQ1z_8KXZo

https://www.raywenderlich.com/2010498-tesseract-ocr-tutorial-for-ios

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함