Tesseract-OCR-iOS を使う
【Swift】文字認識ライブラリ、TesseractOCR for iOSを試してみた - Qiita に使い方があるが、少し古かったので Xcode9.4, Swift4 で動かすための手順。
Podfile
pod 'TesseractOCRiOS', '4.0.0'
そして pod install、終わったら xcworkspace を開く。
Build すると warning が大量に出るが気にしてはならない...
traineddata の入手
https://github.com/tesseract-ocr/tessdata/tree/bf82613055ebc6e63d9e3b438a5c234bfd638c93 から必要なデータを入手。
注意点があって、https://github.com/tesseract-ocr/tessdata_best から DL したやつは動かない。
Using traineddata from tesseract-ocr · Issue #299 · gali8/Tesseract-OCR-iOS
今回は eng と jpn を DL した。
Project に traineddata を追加
https://github.com/gali8/Tesseract-OCR-iOS/wiki/Installation にあるように、このようなディレクトリ構成にする。
注意点は、 tessdata をディレクトリにすること。 Group にしたら動いてくれなかった。
OCR する
Qiita には Bridging-header の話があるが、Swift 4 でははもう不要。
import UIKit import TesseractOCR class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let tesseract: G8Tesseract = G8Tesseract(language: "eng+jpn") tesseract.delegate = self tesseract.image = UIImage(named: "ep.jpg")! tesseract.recognize() print(tesseract.recognizedText) } } extension ViewController: G8TesseractDelegate { func shouldCancelImageRecognitionForTesseract(tesseract: G8Tesseract!) -> Bool { return false // return true if you need to interrupt tesseract before it finishes } }
結果
ポケモンGOのエーフィを読み込んだらこんな感じになった。
some("CPー889 丶\' 蓼蘭\n工一フイ \'\n92/92HP\n28.77kg @ Q9ーm\n一 重さ 工スバ一 高さ\n\n")